<?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>57154</bug_id>
          
          <creation_ts>2011-03-26 09:51:03 -0700</creation_ts>
          <short_desc>[Qt] Make OpenGL symbol resolver transparent</short_desc>
          <delta_ts>2011-08-01 06:20:35 -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>WebGL</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57261</blocked>
    
    <blocked>65465</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Jarkko Sakkinen">jarkko.j.sakkinen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>rectalogic</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>373908</commentid>
    <comment_count>0</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-26 09:51:03 -0700</bug_when>
    <thetext>In order to move GraphicsContext3D Qt backend to use GraphicsContext3DOpenGL symbol resolver must mask the use of function pointers so that GraphicsContext3DOpenGL.cpp can be compiled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374064</commentid>
    <comment_count>1</comment_count>
      <attachid>87059</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-27 00:30:19 -0700</bug_when>
    <thetext>Created attachment 87059
New symbol resolver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374065</commentid>
    <comment_count>2</comment_count>
      <attachid>87060</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-27 00:32:37 -0700</bug_when>
    <thetext>Created attachment 87060
Last patch had one header missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374066</commentid>
    <comment_count>3</comment_count>
      <attachid>87061</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-27 00:35:10 -0700</bug_when>
    <thetext>Created attachment 87061
Fixed ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374067</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-27 00:36:34 -0700</bug_when>
    <thetext>Attachment 87061 did not pass style-queue:

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

Source/WebCore/platform/graphics/qt/GraphicsContext3DInternalQt.h:23:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 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>374070</commentid>
    <comment_count>5</comment_count>
      <attachid>87062</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-27 00:55:36 -0700</bug_when>
    <thetext>Created attachment 87062
Fixed typo in ChangeLog and style issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374165</commentid>
    <comment_count>6</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-27 10:22:37 -0700</bug_when>
    <thetext>I wrote experimental patch (which I&apos;m going to submit &quot;when it is ready enough&quot; to upstream. I&apos;ll do some fine-tunings to this patch based on lessons learned writing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374292</commentid>
    <comment_count>7</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-27 23:23:07 -0700</bug_when>
    <thetext>Widened scope of this patch after successful experiment with GraphicsContext3DOpenGL. 

I would like to do this in two phases:
- Patch A: symbol resolver 
- Patch B: GraphicsContext3DOpenGL

NOTE! Migration will done for *desktop* only in this bugs scope. ES 2.0 will still use old implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374463</commentid>
    <comment_count>8</comment_count>
      <attachid>87137</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-28 06:48:20 -0700</bug_when>
    <thetext>Created attachment 87137
Cleaned up symbol resolving code to have single point where used OpenGL calls can be defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374609</commentid>
    <comment_count>9</comment_count>
      <attachid>87137</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-28 10:53:54 -0700</bug_when>
    <thetext>Comment on attachment 87137
Cleaned up symbol resolving code to have single point where used OpenGL calls can be defined

Rebasing to upstream changes..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374694</commentid>
    <comment_count>10</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-28 12:49:17 -0700</bug_when>
    <thetext>Created separate bug for GraphicsContext3DOpenGL.cpp:
https://bugs.webkit.org/show_bug.cgi?id=57261

Symbol resolver changes are self-contained and improve quality no matter what direction is taken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>374695</commentid>
    <comment_count>11</comment_count>
      <attachid>87182</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-28 12:51:36 -0700</bug_when>
    <thetext>Created attachment 87182
Adapted to upstream changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375392</commentid>
    <comment_count>12</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-29 08:57:53 -0700</bug_when>
    <thetext>I&apos;ll explain the basic idea in the symbol resolver so that is easier to follow the patch.

This is simple and stupid symbol resolver. OpenGL symbols are defined in GraphicsContext3DOpenGLQt.h. This is a data file that is used in class definition and constructor to define and initialize OpenGL symbols that need to be resolved.

Definition is done as follows:
#define GL_PROC(ReturnValue, Proc, Params) \
    typedef ReturnValue (APIENTRY* Proc##Type) Params; \
    Proc##Type Proc;
#include &quot;GraphicsContext3DOpenGLQt.h&quot;

Initialization is done as follows:
#if defined (QT_OPENGL_ES_2)
#define GL_PROC(ReturnValue, Proc, Params) Proc = ::Proc;
#else
#define GL_PROC(ReturnValue, Proc, Params) Proc = reinterpret_cast&lt;GraphicsContext3D::Proc##Type&gt;(m_internal-&gt;getProcAddress(#Proc));
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375674</commentid>
    <comment_count>13</comment_count>
      <attachid>87396</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-29 12:41:35 -0700</bug_when>
    <thetext>Created attachment 87396
Clean up based on experiences with GraphicsContext3DOpenGL. Fixed ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376099</commentid>
    <comment_count>14</comment_count>
      <attachid>87475</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 00:22:29 -0700</bug_when>
    <thetext>Created attachment 87475
some more cleanup

I know the patch is large but if you look at it most of it is just removal of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376177</commentid>
    <comment_count>15</comment_count>
      <attachid>87496</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 03:46:25 -0700</bug_when>
    <thetext>Created attachment 87496
clean ups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392908</commentid>
    <comment_count>16</comment_count>
      <attachid>87496</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-04-26 15:59:52 -0700</bug_when>
    <thetext>Comment on attachment 87496
clean ups

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.h:890
&gt; +    int m_procsAreValid;

Shouldn&apos;t this be a bool instead of an int?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392932</commentid>
    <comment_count>17</comment_count>
      <attachid>87496</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-04-26 16:08:22 -0700</bug_when>
    <thetext>Comment on attachment 87496
clean ups

As a general direction I&apos;d rather like to see us re-use cairo/OpenGLShisms.cpp/h for example
and use opengl/GraphicsContext3DOpenGL.cpp and leave Qt specific bits in GraphicsContext3DQt.cpp,
like the Gtk folks do.

On that note, why do we need to resolve the GL symbols at run-time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400253</commentid>
    <comment_count>18</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-05-08 09:52:32 -0700</bug_when>
    <thetext>Simon, as a side-note I have also bug 57261 for that migration. We need to modify symbol resolver to be on intelligent before doing that.

On Desktop OpenGL we always will need a symbol resolver to get those symbols that are not readily available in standard OpenGL header files. Note that Qt does similar things itself in painting subsystem.

I looked at the OpenGLShims implementation and it is in fact a symbol resolver. Code is direct derivative * of code in GraphicsContext3DQt but it is more limited. Symbols resolved are taken from global variable. Symbols returned by getProcAddress are context dependent. Therefore stable implementation cannot be based on a global variable.

* Can be seen by reading the code and from having a Tieto copyright.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427146</commentid>
    <comment_count>19</comment_count>
      <attachid>98541</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-06-24 14:26:32 -0700</bug_when>
    <thetext>Created attachment 98541
updated Jarkkos patch

Updated Jarkkos patch to take into account changes in trunk, including new TextureMapper stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434283</commentid>
    <comment_count>20</comment_count>
      <attachid>100156</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-08 13:46:38 -0700</bug_when>
    <thetext>Created attachment 100156
updated Jarkkos patch

Update patch to make m_procsAreValid a bool in response to earlier comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435122</commentid>
    <comment_count>21</comment_count>
      <attachid>100349</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-11 12:31:30 -0700</bug_when>
    <thetext>Created attachment 100349
updated Jarkkos patch

Some additional cleanup realized while working on bug 57261

Move the destruction of members owned by GraphicsContext3D from ~GraphicsContext3DInternal to ~GraphicsContext3D.

Define proc members for QT_OPENGL_ES_2 too - so we can always access them via the context - this removes extra conditional code from other classes that need to access the procs via m_context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435655</commentid>
    <comment_count>22</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-12 08:06:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; I looked at the OpenGLShims implementation and it is in fact a symbol resolver.
&gt; Code is direct derivative * of code in GraphicsContext3DQt but it is more limited.
&gt; Symbols resolved are taken from global variable. Symbols returned by getProcAddress are
&gt; context dependent. Therefore stable implementation cannot be based on a global variable.


It looks to me like GL function pointers are context *independent* - so we should be able to use cairo/OpenGLShims.cpp/h

&quot;Final ARB-approved version. - Specify that GL function pointers are context independent.&quot;
http://www.opengl.org/registry/specs/ARB/get_proc_address.txt

This is good, because it looks like we will also need to use the resolver in opengl/TextureMapperGL.cpp and it doesn&apos;t have access to GraphicsContext3D where we are currently storing the proc addresses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435799</commentid>
    <comment_count>23</comment_count>
      <attachid>100527</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-12 11:21:40 -0700</bug_when>
    <thetext>Created attachment 100527
use OpenGLShims resolver implementation

Use the OpenGLShims resolver implementation. Also make TextureMapperGL use the resolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435811</commentid>
    <comment_count>24</comment_count>
      <attachid>100527</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-12 11:32:43 -0700</bug_when>
    <thetext>Comment on attachment 100527
use OpenGLShims resolver implementation

Attachment 100527 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9022217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435954</commentid>
    <comment_count>25</comment_count>
      <attachid>100562</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-12 14:31:43 -0700</bug_when>
    <thetext>Created attachment 100562
use OpenGLShims resolver implementation

Fix patch so it builds when webgl is not enabled - since TextureMapperGL needs the shims too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436011</commentid>
    <comment_count>26</comment_count>
      <attachid>100562</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-12 15:12:37 -0700</bug_when>
    <thetext>Comment on attachment 100562
use OpenGLShims resolver implementation

#defining non-EXT versions of the *EXT procs is not going to work, will rework this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436389</commentid>
    <comment_count>27</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-07-13 06:00:14 -0700</bug_when>
    <thetext>Latest patch looks good to me at least. Nice to see that this code is being updated as I don&apos;t have free time these days to contribute to WebKit. Thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436467</commentid>
    <comment_count>28</comment_count>
      <attachid>100678</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-13 09:02:15 -0700</bug_when>
    <thetext>Created attachment 100678
use OpenGLShims resolver implementation

Update OpenGLShims.h macros so the *EXT macros expand correctly.

Sorry for all the false starts, but I think this patch is really ready for review now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438236</commentid>
    <comment_count>29</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-16 20:06:45 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Created an attachment (id=100678) [details]
&gt; use OpenGLShims resolver implementation
&gt; 
&gt; Update OpenGLShims.h macros so the *EXT macros expand correctly.
&gt; 
&gt; Sorry for all the false starts, but I think this patch is really ready for review now :)

It&apos;s a pretty big patch; Hard to review...
Could you break it down a bit, e.g. let us review the changes to OpenGLShims first, then the changes to GraphicsContext3D, and then TextureMapper?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438747</commentid>
    <comment_count>30</comment_count>
      <attachid>101209</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-18 14:53:37 -0700</bug_when>
    <thetext>Created attachment 101209
use OpenGLShims resolver implementation

(In reply to comment #29)
&gt; It&apos;s a pretty big patch; Hard to review...
&gt; Could you break it down a bit

The patch had some additional changes not directly related to adopting the shims resolver - it was also removing things from GraphicsContext3DInternal and using the corresponding members in GraphicsContext3D instead - holdovers from jarkkos original patch.

I&apos;m going to move those changes to separate patches for bug 57261 where they belong, and this patch now only addresses changing the symbol resolver.

So this patch is still kind of big, but very straightforward. It just deletes a bunch of typedefs, proc member declarations and assignments that were the old resolver. Then it changes each call to the old symbol resolver to use the new one (e.g. m_internal-&gt;bindFramebuffer becomes glBindFramebuffer etc.) - so just a bunch of single line diffs where it&apos;s very clear what is changing.

I think this will be much easier to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438905</commentid>
    <comment_count>31</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-18 18:33:13 -0700</bug_when>
    <thetext>&gt; So this patch is still kind of big, but very straightforward. It just deletes a bunch of typedefs, proc member declarations and assignments that were the old resolver. Then it changes each call to the old symbol resolver to use the new one (e.g. m_internal-&gt;bindFramebuffer becomes glBindFramebuffer etc.) - so just a bunch of single line diffs where it&apos;s very clear what is changing.
&gt; 
&gt; I think this will be much easier to review.

I&apos;m having a hard time when the patch contains stuff in the Cairo directory, even though it looks rather trivial.
The Qt stuff looks OK, if you could get Martin Robinson or someone familiar with Cairo OpenGLShims to review changes to those files, perhaps in an additional bug, I&apos;d be happy to review the Qt specific stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439217</commentid>
    <comment_count>32</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-19 09:52:08 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; I&apos;m having a hard time when the patch contains stuff in the Cairo directory,
&gt; even though it looks rather trivial.
&gt; The Qt stuff looks OK, if you could get Martin Robinson or someone familiar with
&gt; Cairo OpenGLShims to review changes to those files, perhaps in an additional bug,
&gt; I&apos;d be happy to review the Qt specific stuff.


Martin, would you be able to review the OpenGLShims.h/cpp part of the patch? The changes are pretty straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439221</commentid>
    <comment_count>33</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-07-19 09:57:51 -0700</bug_when>
    <thetext>This seems reasonable to me. Do you plan to now use the shared version of GraphicsContext3D in the opengl directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439258</commentid>
    <comment_count>34</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-19 10:57:28 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; This seems reasonable to me.

Thanks for looking at this.

&gt; Do you plan to now use the shared version of GraphicsContext3D in the opengl directory?

Yes, that will be done in bug 57261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439260</commentid>
    <comment_count>35</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-07-19 10:59:43 -0700</bug_when>
    <thetext>(In reply to comment #34)

&gt; Yes, that will be done in bug 57261

That&apos;s great news!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439377</commentid>
    <comment_count>36</comment_count>
      <attachid>101209</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-19 12:54:21 -0700</bug_when>
    <thetext>Comment on attachment 101209
use OpenGLShims resolver implementation

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

&gt; Source/WebCore/WebCore.pro:3619
&gt; +    CONFIG += opengl-shims

Indentation seems a bit off.

&gt; Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:20
&gt; +#if ENABLE(WEBGL) || (PLATFORM(QT) &amp;&amp; USE(TEXTURE_MAPPER_GL))

This is a bit awkward. Maybe add a define QT_OPENGL_SHIMS inside the contains(CONFIG...) clause? Otherwise we repeat the build-time logic that decides whether to use it twice.

&gt; Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:34
&gt; +#define ASSIGN_FUNCTION_TABLE_ENTRY(FunctionName, success) \

Strange to use uppercase for FunctionName and lowercase for success.

&gt; Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:46
&gt; +    return QGLContext::currentContext()-&gt;getProcAddress(QLatin1String(procName));

This doesn&apos;t buy you anything. getProcAddress(procName) is essentially the same thing and is somewhat more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439378</commentid>
    <comment_count>37</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-19 12:55:14 -0700</bug_when>
    <thetext>Almost there, sorry for nitpicking but it&apos;s a lot of code :)
Thanks for working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439395</commentid>
    <comment_count>38</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-19 13:27:55 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; &gt; Source/WebCore/WebCore.pro:3619
&gt; &gt; +    CONFIG += opengl-shims
&gt; 
&gt; Indentation seems a bit off.

Actually, the existing indentation of the INCLUDEPATH directly above my CONFIG
was wrong, so I fixed that when I added the new CONFIG. Both these should line
up with the SOURCES further above (that you can&apos;t see in the diff),
not with the filenames themselves that are the indented value of SOURCES.

&gt; &gt; Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:20
&gt; &gt; +#if ENABLE(WEBGL) || (PLATFORM(QT) &amp;&amp; USE(TEXTURE_MAPPER_GL))
&gt; 
&gt; This is a bit awkward. Maybe add a define QT_OPENGL_SHIMS inside the contains(CONFIG...) clause?
&gt; Otherwise we repeat the build-time logic that decides whether to use it twice.

I&apos;ll add QT_OPENGL_SHIMS.

&gt; &gt; Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:34
&gt; &gt; +#define ASSIGN_FUNCTION_TABLE_ENTRY(FunctionName, success) \
&gt; 
&gt; Strange to use uppercase for FunctionName and lowercase for success.

I agree, but the existing definition of ASSIGN_FUNCTION_TABLE_ENTRY already used those names
(see a few lines below in the diff).
Should I fix the existing definition and my new definition, or leave my new definition
consistent with the existing one?

&gt; &gt; Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:46
&gt; &gt; +    return QGLContext::currentContext()-&gt;getProcAddress(QLatin1String(procName));
&gt; 
&gt; This doesn&apos;t buy you anything. getProcAddress(procName) is essentially the
&gt; same thing and is somewhat more readable.

I&apos;ll remove QLatin1String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439401</commentid>
    <comment_count>39</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-19 13:32:58 -0700</bug_when>
    <thetext>&gt; Actually, the existing indentation of the INCLUDEPATH directly above my CONFIG
&gt; was wrong, so I fixed that when I added the new CONFIG. Both these should line
&gt; up with the SOURCES further above (that you can&apos;t see in the diff),
&gt; not with the filenames themselves that are the indented value of SOURCES.
&gt;
OK. 

&gt; I agree, but the existing definition of ASSIGN_FUNCTION_TABLE_ENTRY already used those names
&gt; (see a few lines below in the diff).
&gt; Should I fix the existing definition and my new definition, or leave my new definition
&gt; consistent with the existing one?
Leave it consistent, that&apos;s ok.

&gt; I&apos;ll remove QLatin1String.
I think with this and the #define we&apos;re good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439410</commentid>
    <comment_count>40</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-19 13:41:41 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; &gt; I&apos;ll remove QLatin1String.
&gt; I think with this and the #define we&apos;re good.

Hmm, actually I get an error when I remove it:

../../../Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:42: error: &apos;QString::QString(const char*)&apos; is deprecated

procName is const char*, not WTF::String, so I think I need to keep QLatin1String?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439416</commentid>
    <comment_count>41</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-19 13:47:54 -0700</bug_when>
    <thetext>&gt; ../../../Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:42: error: &apos;QString::QString(const char*)&apos; is deprecated
&gt; 
&gt; procName is const char*, not WTF::String, so I think I need to keep QLatin1String?

you can use QString::fromAscii or QString::fromLatin1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439441</commentid>
    <comment_count>42</comment_count>
      <attachid>101383</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-19 14:16:23 -0700</bug_when>
    <thetext>Created attachment 101383
use OpenGLShims resolver implementation

Update patch based on review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439462</commentid>
    <comment_count>43</comment_count>
      <attachid>101389</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-19 14:35:54 -0700</bug_when>
    <thetext>Created attachment 101389
update ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439466</commentid>
    <comment_count>44</comment_count>
      <attachid>101389</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-07-19 14:41:22 -0700</bug_when>
    <thetext>Comment on attachment 101389
update ChangeLog

The responses to my comments were satisfactory and Martin Robinson reviewed the Cairo stuff. I think this looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439803</commentid>
    <comment_count>45</comment_count>
      <attachid>101389</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 07:52:37 -0700</bug_when>
    <thetext>Comment on attachment 101389
update ChangeLog

Clearing flags on attachment: 101389

Committed r91363: &lt;http://trac.webkit.org/changeset/91363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439804</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 07:52:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444638</commentid>
    <comment_count>47</comment_count>
      <attachid>101389</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-01 04:12:05 -0700</bug_when>
    <thetext>Comment on attachment 101389
update ChangeLog

Since this patch, it seems it is no longuer possible to compile trunk with OpenGL on ARM.

&gt; Source/WebCore/WebCore.pro:3676
&gt; +    HEADERS += platform/graphics/cairo/OpenGLShims.h
&gt; +    SOURCES += platform/graphics/cairo/OpenGLShims.cpp

And may I suggest to move those files out of cairo and in platform/opengl? :-D
This is uber confusing to have cairo files being compiled with Qt, I was convinced that was a mistake until I saw this commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444646</commentid>
    <comment_count>48</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-08-01 04:19:35 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; &gt; ../../../Source/WebCore/platform/graphics/cairo/OpenGLShims.cpp:42: error: &apos;QString::QString(const char*)&apos; is deprecated
&gt; &gt; 
&gt; &gt; procName is const char*, not WTF::String, so I think I need to keep QLatin1String?
&gt; 
&gt; you can use QString::fromAscii or QString::fromLatin1.

(It is almost never correct to use QString::fromAscii() from inside a library since it relies on the default encoding, not on a ASCII codec.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87059</attachid>
            <date>2011-03-27 00:30:19 -0700</date>
            <delta_ts>2011-03-27 00:32:37 -0700</delta_ts>
            <desc>New symbol resolver</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>62908</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjI2ZmQxLi40Y2FjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEw
IEBACisyMDExLTAzLTI3ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYXNrIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIEdMIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAorCisgICAgICAgIE1vZGlmaWVk
IE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgaW4gUXQgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdG8gbWFzayB0aGUgdXNlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRo
YXQgd2UgY2FuIGFkYXB0IHRvIGRpZmZlcmVudAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9y
IE9wZW5HTCBjYWxscy4gQ2xlYW5lZCB1cCBzeW1ib2wgcmVzb2x2ZXIgaW4gb3JkZXIKKyAgICAg
ICAgc2ltcGxpZnkgdGhlIGRlY2xyYXRpb24gb2YgbmV3IHN5bWJvbHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFj
dGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFj
aFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJp
YkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1l
YnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
dHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZv
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zm
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIpOgorCiAyMDExLTAz
LTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDBlZjhlZGEuLjk0NGIzM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC0zNDEwLDcgKzM0MTAsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
V0VCR0w9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggXAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9FeHRlbnNpb25zM0RRdC5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKIAogICAgICF2OCB7CiAgICAgICAgIFNPVVJDRVMgKz0g
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAxNjE1Mzk3Li5lYWI5ZDZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oIgog
I2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC00MiwyNDQgKzQzLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0jaWYgIWRlZmluZWQoR0xjaGFyKQotdHlwZWRlZiBjaGFyIEdMY2hhcjsK
LSNlbmRpZgotCi0jaWYgIWRlZmluZWQoR0xfREVQVEgyNF9TVEVOQ0lMOCkKLSNkZWZpbmUgR0xf
REVQVEgyNF9TVEVOQ0lMOCAweDg4RjAKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVBJRU5UUlkp
Ci0jZGVmaW5lIEFQSUVOVFJZCi0jZW5kaWYKLQotI2lmZGVmIFFUX09QRU5HTF9FU18yCi10eXBl
ZGVmIEdMc2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIEdMaW50cHRyIEdMaW50cHRy
VHlwZTsKLSNlbHNlCi10eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYg
cHRyZGlmZl90IEdMaW50cHRyVHlwZTsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEFjdGl2ZVRleHR1cmVUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsQXR0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBjb25zdCBj
aGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAoR0xlbnVt
LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZmZXJUeXBl
KSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kUmVuZGVy
YnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
QmxlbmRDb2xvclR5cGUpIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xlbnVtKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSkoR0xl
bnVtLCBHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNTZXBhcmF0
ZVR5cGUpKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xl
bnVtIGRzdEFscGhhKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0YVR5cGUp
IChHTGVudW0sIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xpbnRwdHJU
eXBlLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKik7Ci10eXBlZGVmIEdMZW51bSAoQVBJ
RU5UUlkqIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xDb21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdM
dWludCAoQVBJRU5UUlkqIGdsQ3JlYXRlUHJvZ3JhbVR5cGUpICgpOwotdHlwZWRlZiBHTHVpbnQg
KEFQSUVOVFJZKiBnbENyZWF0ZVNoYWRlclR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xEZWxldGVCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXpl
aSBuLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUHJv
Z3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVSZW5k
ZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbERlbGV0ZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xEZXRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAo
R0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXJUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdM
ZW51bSwgR0x1aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkJ1ZmZl
cnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdl
bmVyYXRlTWlwbWFwVHlwZSkgKEdMZW51bSB0YXJnZXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChHTHVpbnQs
IEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1aW50LCBH
THVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1aW50LCBH
THNpemVpLCBHTHNpemVpKiwgR0x1aW50Kik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xH
ZXRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0s
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJh
bXMpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUpIChH
THVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFByb2dyYW1pdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVt
LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlcklu
Zm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkgKEdMdWlu
dCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBn
bEdldFVuaWZvcm1Mb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZmxv
YXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkgKEdMdWlu
dCwgR0xpbnQsIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0
dHJpYmZ2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUp
IChHTHVpbnQsIEdMZW51bSwgR0x2b2lkKiopOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZ
KiBnbElzQnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkq
IGdsSXNGcmFtZWJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVO
VFJZKiBnbElzUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVO
VFJZKiBnbElzUmVuZGVyYnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAo
QVBJRU5UUlkqIGdsSXNTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsTGlua1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xz
aXplaSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlwZSkgKEdM
Y2xhbXBmLCBHTGJvb2xlYW4pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFkZXJTb3Vy
Y2VUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAoR0xlbnVt
LCBHTGVudW0sIEdMaW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVu
Y2lsTWFza1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwg
R0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkgKEdMaW50
LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5cGUpIChH
TGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtMWlUeXBlKSAoR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTFpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZs
b2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChHTGludCwg
R0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlm
b3JtMmlUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm0yaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xm
bG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZnZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVW5pZm9ybTNpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29u
c3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlwZSkgKEdM
aW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9h
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xpbnQsIEdM
aW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybTRpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xi
b29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZv
cm1NYXRyaXgzZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9h
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSkgKEdM
aW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVXNlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xWYWxpZGF0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVmVydGV4QXR0cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWludCwgY29u
c3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZlR5
cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZUeXBlKSAo
R0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25z
dCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZ2VHlw
ZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFu
LCBHTHNpemVpLCBjb25zdCBHTHZvaWQqKTsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgewotcHVibGljOgotICAgIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpOwotICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7Ci0K
LSAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0VmFsaWQ7IH0KLSAg
ICBRR0xXaWRnZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKLSAgICB2b2lkIHBhaW50KFFQYWlu
dGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwotICAgIFFS
ZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKLQotICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0
aXZlVGV4dHVyZTsKLSAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwotICAgIGds
QmluZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247Ci0gICAgZ2xCaW5kQnVm
ZmVyVHlwZSBiaW5kQnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyVHlwZSBiaW5kRnJhbWVi
dWZmZXI7Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVyOwotICAg
IGdsQmxlbmRDb2xvclR5cGUgYmxlbmRDb2xvcjsKLSAgICBnbEJsZW5kRXF1YXRpb25UeXBlIGJs
ZW5kRXF1YXRpb247Ci0gICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5kRXF1YXRp
b25TZXBhcmF0ZTsKLSAgICBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNTZXBhcmF0
ZTsKLSAgICBnbEJ1ZmZlckRhdGFUeXBlIGJ1ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJTdWJEYXRh
VHlwZSBidWZmZXJTdWJEYXRhOwotICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUgY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1czsKLSAgICBnbENvbXBpbGVTaGFkZXJUeXBlIGNvbXBpbGVTaGFk
ZXI7Ci0gICAgZ2xDcmVhdGVQcm9ncmFtVHlwZSBjcmVhdGVQcm9ncmFtOwotICAgIGdsQ3JlYXRl
U2hhZGVyVHlwZSBjcmVhdGVTaGFkZXI7Ci0gICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBkZWxldGVC
dWZmZXJzOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1ZmZlcnM7
Ci0gICAgZ2xEZWxldGVQcm9ncmFtVHlwZSBkZWxldGVQcm9ncmFtOwotICAgIGdsRGVsZXRlUmVu
ZGVyYnVmZmVyc1R5cGUgZGVsZXRlUmVuZGVyYnVmZmVyczsKLSAgICBnbERlbGV0ZVNoYWRlclR5
cGUgZGVsZXRlU2hhZGVyOwotICAgIGdsRGV0YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFkZXI7Ci0g
ICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcjsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZlclRleHR1
cmUyRDsKLSAgICBnbEdlbkJ1ZmZlcnNUeXBlIGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5lcmF0ZU1p
cG1hcFR5cGUgZ2VuZXJhdGVNaXBtYXA7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlIGdlbkZy
YW1lYnVmZmVyczsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1ZmZlcnM7
Ci0gICAgZ2xHZXRBY3RpdmVBdHRyaWJUeXBlIGdldEFjdGl2ZUF0dHJpYjsKLSAgICBnbEdldEFj
dGl2ZVVuaWZvcm1UeXBlIGdldEFjdGl2ZVVuaWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRl
cnNUeXBlIGdldEF0dGFjaGVkU2hhZGVyczsKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSBn
ZXRBdHRyaWJMb2NhdGlvbjsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRCdWZm
ZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
VHlwZSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFByb2dy
YW1JbmZvTG9nVHlwZSBnZXRQcm9ncmFtSW5mb0xvZzsKLSAgICBnbEdldFByb2dyYW1pdlR5cGUg
Z2V0UHJvZ3JhbWl2OwotICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUgZ2V0U2hh
ZGVySW5mb0xvZzsKLSAgICBnbEdldFNoYWRlcml2VHlwZSBnZXRTaGFkZXJpdjsKLSAgICBnbEdl
dFNoYWRlclNvdXJjZVR5cGUgZ2V0U2hhZGVyU291cmNlOwotICAgIGdsR2V0VW5pZm9ybWZ2VHlw
ZSBnZXRVbmlmb3JtZnY7Ci0gICAgZ2xHZXRVbmlmb3JtaXZUeXBlIGdldFVuaWZvcm1pdjsKLSAg
ICBnbEdldFVuaWZvcm1Mb2NhdGlvblR5cGUgZ2V0VW5pZm9ybUxvY2F0aW9uOwotICAgIGdsR2V0
VmVydGV4QXR0cmliZnZUeXBlIGdldFZlcnRleEF0dHJpYmZ2OwotICAgIGdsR2V0VmVydGV4QXR0
cmliaXZUeXBlIGdldFZlcnRleEF0dHJpYml2OwotICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl
cnZUeXBlIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBlIGlzQnVm
ZmVyOwotICAgIGdsSXNGcmFtZWJ1ZmZlclR5cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBnbElzUHJv
Z3JhbVR5cGUgaXNQcm9ncmFtOwotICAgIGdsSXNSZW5kZXJidWZmZXJUeXBlIGlzUmVuZGVyYnVm
ZmVyOwotICAgIGdsSXNTaGFkZXJUeXBlIGlzU2hhZGVyOwotICAgIGdsTGlua1Byb2dyYW1UeXBl
IGxpbmtQcm9ncmFtOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVyYnVmZmVy
U3RvcmFnZTsKLSAgICBnbFNhbXBsZUNvdmVyYWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsKLSAgICBn
bFNoYWRlclNvdXJjZVR5cGUgc2hhZGVyU291cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0
ZVR5cGUgc3RlbmNpbEZ1bmNTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBl
IHN0ZW5jaWxNYXNrU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUgc3RlbmNp
bE9wU2VwYXJhdGU7Ci0gICAgZ2xVbmlmb3JtMWZUeXBlIHVuaWZvcm0xZjsKLSAgICBnbFVuaWZv
cm0xZnZUeXBlIHVuaWZvcm0xZnY7Ci0gICAgZ2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0xaTsKLSAg
ICBnbFVuaWZvcm0xaXZUeXBlIHVuaWZvcm0xaXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBlIHVuaWZv
cm0yZjsKLSAgICBnbFVuaWZvcm0yZnZUeXBlIHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlmb3JtMmlU
eXBlIHVuaWZvcm0yaTsKLSAgICBnbFVuaWZvcm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0gICAgZ2xV
bmlmb3JtM2ZUeXBlIHVuaWZvcm0zZjsKLSAgICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZvcm0zZnY7
Ci0gICAgZ2xVbmlmb3JtM2lUeXBlIHVuaWZvcm0zaTsKLSAgICBnbFVuaWZvcm0zaXZUeXBlIHVu
aWZvcm0zaXY7Ci0gICAgZ2xVbmlmb3JtNGZUeXBlIHVuaWZvcm00ZjsKLSAgICBnbFVuaWZvcm00
ZnZUeXBlIHVuaWZvcm00ZnY7Ci0gICAgZ2xVbmlmb3JtNGlUeXBlIHVuaWZvcm00aTsKLSAgICBn
bFVuaWZvcm00aXZUeXBlIHVuaWZvcm00aXY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSB1
bmlmb3JtTWF0cml4MmZ2OwotICAgIGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9ybU1hdHJp
eDNmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7Ci0gICAg
Z2xVc2VQcm9ncmFtVHlwZSB1c2VQcm9ncmFtOwotICAgIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSB2
YWxpZGF0ZVByb2dyYW07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0cmliMWY7
Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlIHZlcnRleEF0dHJpYjFmdjsKLSAgICBnbFZlcnRl
eEF0dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRyaWIyZjsKLSAgICBnbFZlcnRleEF0dHJpYjJmdlR5cGUg
dmVydGV4QXR0cmliMmZ2OwotICAgIGdsVmVydGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0dHJpYjNm
OwotICAgIGdsVmVydGV4QXR0cmliM2Z2VHlwZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAgZ2xWZXJ0
ZXhBdHRyaWI0ZlR5cGUgdmVydGV4QXR0cmliNGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBl
IHZlcnRleEF0dHJpYjRmdjsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlIHZlcnRleEF0
dHJpYlBvaW50ZXI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJz
OwotICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKLSAgICBRR0xXaWRnZXQqIG1fZ2xXaWRn
ZXQ7Ci0gICAgUUdMV2lkZ2V0KiBtX3ZpZXdwb3J0R0xXaWRnZXQ7Ci0gICAgUVJlY3RGIG1fYm91
bmRpbmdSZWN0OwotICAgIEdMdWludCBtX3RleHR1cmU7Ci0gICAgR0x1aW50IG1fbWFpbkZibzsK
LSAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAg
IGJvb2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBt
X3N5bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNp
b25zOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5n
JiBwcm9jKTsKLSAgICBib29sIG1fY29udGV4dFZhbGlkOwotfTsKLQotI2lmIGRlZmluZWQgKFFU
X09QRU5HTF9FU18yKSAKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSBQcm9jCi0jZWxz
ZQotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIHJlaW50ZXJwcmV0X2Nhc3Q8UHJvYyMj
VHlwZT4oZ2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKLSNlbmRpZgotCiBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKICNpZiBkZWZpbmVkIChRVF9PUEVO
R0xfRVNfMikKQEAgLTMzMCw5NiArOTMsOTYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKIAog
ICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBhY3RpdmVUZXh0dXJlID0gR0VU
X1BST0NfQUREUkVTUyhnbEFjdGl2ZVRleHR1cmUpOwotICAgIGF0dGFjaFNoYWRlciA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xBdHRhY2hTaGFkZXIpOwotICAgIGJpbmRBdHRyaWJMb2NhdGlvbiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOwotICAgIGJpbmRCdWZmZXIgPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmluZEJ1ZmZlcik7Ci0gICAgYmluZEZyYW1lYnVmZmVyID0gR0VU
X1BST0NfQUREUkVTUyhnbEJpbmRGcmFtZWJ1ZmZlcik7Ci0gICAgYmluZFJlbmRlcmJ1ZmZlciA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsKLSAgICBibGVuZENvbG9yID0g
R0VUX1BST0NfQUREUkVTUyhnbEJsZW5kQ29sb3IpOwotICAgIGJsZW5kRXF1YXRpb24gPSBHRVRf
UFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvbik7Ci0gICAgYmxlbmRFcXVhdGlvblNlcGFyYXRl
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSk7Ci0gICAgYmxlbmRG
dW5jU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2VwYXJhdGUpOwotICAg
IGJ1ZmZlckRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7Ci0gICAgYnVmZmVy
U3ViRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJTdWJEYXRhKTsKLSAgICBjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzID0gR0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOwotICAgIGNvbXBpbGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ29tcGlsZVNoYWRl
cik7Ci0gICAgY3JlYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVQcm9ncmFt
KTsKLSAgICBjcmVhdGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlU2hhZGVyKTsK
LSAgICBkZWxldGVCdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUJ1ZmZlcnMpOwot
ICAgIGRlbGV0ZUZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVGcmFtZWJ1
ZmZlcnMpOwotICAgIGRlbGV0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlUHJv
Z3JhbSk7Ci0gICAgZGVsZXRlUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxl
dGVSZW5kZXJidWZmZXJzKTsKLSAgICBkZWxldGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGds
RGVsZXRlU2hhZGVyKTsKLSAgICBkZXRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGV0
YWNoU2hhZGVyKTsKLSAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJPQ19BRERS
RVNTKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBlbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAg
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIpOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEID0gR0VUX1BST0NfQUREUkVT
UyhnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKLSAgICBnZW5CdWZmZXJzID0gR0VUX1BST0NfQURE
UkVTUyhnbEdlbkJ1ZmZlcnMpOwotICAgIGdlbmVyYXRlTWlwbWFwID0gR0VUX1BST0NfQUREUkVT
UyhnbEdlbmVyYXRlTWlwbWFwKTsKLSAgICBnZW5GcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERS
RVNTKGdsR2VuRnJhbWVidWZmZXJzKTsKLSAgICBnZW5SZW5kZXJidWZmZXJzID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdlblJlbmRlcmJ1ZmZlcnMpOwotICAgIGdldEFjdGl2ZUF0dHJpYiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVBdHRyaWIpOwotICAgIGdldEFjdGl2ZVVuaWZvcm0gPSBH
RVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7Ci0gICAgZ2V0QXR0YWNoZWRTaGFk
ZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hhZGVycyk7Ci0gICAgZ2V0QXR0
cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9jYXRpb24pOwotICAg
IGdldEJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEJ1ZmZlclBhcmFt
ZXRlcml2KTsKLSAgICBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7Ci0gICAg
Z2V0UHJvZ3JhbUluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbUluZm9Mb2cp
OwotICAgIGdldFByb2dyYW1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtaXYpOwot
ICAgIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KTsKLSAgICBnZXRTaGFkZXJJbmZvTG9nID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFNoYWRlckluZm9Mb2cpOwotICAgIGdldFNoYWRlcml2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFNoYWRlcml2KTsKLSAgICBnZXRTaGFkZXJTb3VyY2UgPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2V0U2hhZGVyU291cmNlKTsKLSAgICBnZXRVbmlmb3JtZnYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2V0VW5pZm9ybWZ2KTsKLSAgICBnZXRVbmlmb3JtaXYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsR2V0VW5pZm9ybWl2KTsKLSAgICBnZXRVbmlmb3JtTG9jYXRpb24gPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJmdiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdik7Ci0gICAgZ2V0VmVydGV4QXR0cmli
aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOwotICAgIGdldFZlcnRl
eEF0dHJpYlBvaW50ZXJ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2KTsKLSAgICBpc0J1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7Ci0gICAg
aXNGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0ZyYW1lYnVmZmVyKTsKLSAgICBp
c1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsKLSAgICBpc1JlbmRlcmJ1
ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7Ci0gICAgaXNTaGFkZXIg
PSBHRVRfUFJPQ19BRERSRVNTKGdsSXNTaGFkZXIpOwotICAgIGxpbmtQcm9ncmFtID0gR0VUX1BS
T0NfQUREUkVTUyhnbExpbmtQcm9ncmFtKTsKLSAgICByZW5kZXJidWZmZXJTdG9yYWdlID0gR0VU
X1BST0NfQUREUkVTUyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwotICAgIHNhbXBsZUNvdmVyYWdl
ID0gR0VUX1BST0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKLSAgICBzaGFkZXJTb3VyY2Ug
PSBHRVRfUFJPQ19BRERSRVNTKGdsU2hhZGVyU291cmNlKTsKLSAgICBzdGVuY2lsRnVuY1NlcGFy
YXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpOwotICAgIHN0ZW5j
aWxNYXNrU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSk7
Ci0gICAgc3RlbmNpbE9wU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE9wU2Vw
YXJhdGUpOwotICAgIHVuaWZvcm0xZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWYpOwot
ICAgIHVuaWZvcm0xZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7Ci0gICAgdW5p
Zm9ybTFpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7Ci0gICAgdW5pZm9ybTFpdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWl2KTsKLSAgICB1bmlmb3JtMmYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsVW5pZm9ybTJmKTsKLSAgICB1bmlmb3JtMmZ2ID0gR0VUX1BST0NfQUREUkVT
UyhnbFVuaWZvcm0yZnYpOwotICAgIHVuaWZvcm0yaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtMmkpOwotICAgIHVuaWZvcm0yaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpdik7
Ci0gICAgdW5pZm9ybTNmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZik7Ci0gICAgdW5p
Zm9ybTNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsKLSAgICB1bmlmb3JtM2kg
PSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpKTsKLSAgICB1bmlmb3JtM2l2ID0gR0VUX1BS
T0NfQUREUkVTUyhnbFVuaWZvcm0zaXYpOwotICAgIHVuaWZvcm00ZiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xVbmlmb3JtNGYpOwotICAgIHVuaWZvcm00ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5p
Zm9ybTRmdik7Ci0gICAgdW5pZm9ybTRpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aSk7
Ci0gICAgdW5pZm9ybTRpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGl2KTsKLSAgICB1
bmlmb3JtTWF0cml4MmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgyZnYpOwot
ICAgIHVuaWZvcm1NYXRyaXgzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDNm
dik7Ci0gICAgdW5pZm9ybU1hdHJpeDRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0
cml4NGZ2KTsKLSAgICB1c2VQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFVzZVByb2dyYW0p
OwotICAgIHZhbGlkYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWYWxpZGF0ZVByb2dy
YW0pOwotICAgIHZlcnRleEF0dHJpYjFmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJp
YjFmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0
cmliMWZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWIyZik7Ci0gICAgdmVydGV4QXR0cmliMmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjJmdik7Ci0gICAgdmVydGV4QXR0cmliM2YgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliM2YpOwotICAgIHZlcnRleEF0dHJpYjNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWIzZnYpOwotICAgIHZlcnRleEF0dHJpYjRmID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjRmKTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVmVydGV4QXR0cmliNGZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyID0gR0VUX1BST0Nf
QUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xB
Y3RpdmVUZXh0dXJlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKKyAgICBTRVRfUFJPQ19B
RERSRVNTKGdsQmluZEJ1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJpbmRGcmFtZWJ1
ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJpbmRSZW5kZXJidWZmZXIpOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQmxl
bmRFcXVhdGlvbik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZl
clN1YkRhdGEpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQ29tcGlsZVNoYWRlcik7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbENyZWF0ZVByb2dyYW0pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVT
aGFkZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZmZXJzKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsRGVsZXRlUHJvZ3JhbSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVTaGFkZXIpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xEZXRhY2hTaGFkZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQpOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5CdWZmZXJzKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsR2VuZXJhdGVNaXBtYXApOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5GcmFtZWJ1ZmZl
cnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
R2V0QWN0aXZlVW5pZm9ybSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hh
ZGVycyk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKKyAgICBT
RVRfUFJPQ19BRERSRVNTKGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7CisgICAgU0VUX1BS
T0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
R2V0UHJvZ3JhbWl2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyaXYpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xHZXRTaGFkZXJTb3VyY2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtZnYp
OworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtaXYpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRVbmlmb3JtTG9jYXRpb24pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRW
ZXJ0ZXhBdHRyaWJmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYpOworICAg
IFNFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbElz
RnJhbWVidWZmZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xJc1Byb2dyYW0pOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bElzU2hhZGVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsTGlua1Byb2dyYW0pOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKKyAgICBTRVRfUFJPQ19BRERS
RVNTKGdsU2FtcGxlQ292ZXJhZ2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xTaGFkZXJTb3Vy
Y2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKKyAgICBT
RVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSk7CisgICAgU0VUX1BST0NfQURE
UkVTUyhnbFN0ZW5jaWxPcFNlcGFyYXRlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTFmKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0xaSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaXYp
OworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmYpOworICAgIFNFVF9QUk9DX0FERFJF
U1MoZ2xVbmlmb3JtMmZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm0zZik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZnYpOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2kpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtM2l2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRmKTsKKyAgICBTRVRfUFJP
Q19BRERSRVNTKGdsVW5pZm9ybTRmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00
aSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aXYpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bU1hdHJpeDNmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXg0ZnYpOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsVmFsaWRhdGVQcm9ncmFtKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmli
MWYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZnYpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIyZik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFZl
cnRleEF0dHJpYjJmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjNmKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliM2Z2KTsKKyAgICBTRVRfUFJPQ19B
RERSRVNTKGdsVmVydGV4QXR0cmliNGYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWI0ZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsK
IAogICAgIGlmICghbV9jb250ZXh0VmFsaWQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGlj
c0NvbnRleHQzRDogQWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2YWlsYWJs
ZSIpOwpAQCAtNDM2LDI2ICsxOTksMjYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICBn
bFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBLCAxLCAxLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCi0gICAgZ2VuRnJhbWVidWZmZXJzKC8qIGNvdW50
ICovIDEsICZtX21haW5GYm8pOworICAgIF9nbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAx
LCAmbV9tYWluRmJvKTsKICAgICBtX2N1cnJlbnRGYm8gPSBtX21haW5GYm87CiAKLSAgICBiaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX21haW5GYm8pOwor
ICAgIF9nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
bWFpbkZibyk7CiAKLSAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRo
QnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgIF9nbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQg
Ki8gMSwgJm1fZGVwdGhCdWZmZXIpOworICAgIF9nbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAjaWYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikKLSAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgLyogd2lk
dGggKi8gMSwgLyogaGVpZ2h0ICovIDEpOworICAgIF9nbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NP
TVBPTkVOVDE2LCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7CiAjZWxzZQotICAgIHJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgLyogd2lkdGggKi8gMSwgLyogaGVpZ2h0ICov
IDEpOworICAgIF9nbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgLyogd2lkdGggKi8g
MSwgLyogaGVpZ2h0ICovIDEpOwogI2VuZGlmCiAKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwotIAotICAgIGZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJl
LCAwKTsKLSAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyAgICBfZ2xCaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworCisgICAgX2dsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmUsIDApOworICAgIF9nbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFD
SE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwog
ICAgIGdsQ2xlYXJDb2xvcigvKiByZWQgKi8gMCwgLyogZ3JlZW4gKi8gMCwgLyogYmx1ZSAqLyAw
LCAvKiBhbHBoYSAqLyAwKTsKIAotICAgIGlmIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0NPTVBMRVRFKSB7CisgICAgaWYgKF9nbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVJfQ09NUExFVEUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogV2Fz
bid0IGFibGUgdG8gY3JlYXRlIHRoZSBtYWluIGZyYW1lYnVmZmVyIik7CiAgICAgICAgIG1fY29u
dGV4dFZhbGlkID0gZmFsc2U7CiAgICAgfQpAQCAtNTA0LDEwICsyNjcsMTAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0
eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKICAgICBtX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fbWFpbkZibyk7CisgICAgX2dsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsKICAgICBnbFJlYWRQaXhlbHMoLyogeCAq
LyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVs
cyk7CiAKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2N1cnJlbnRGYm8pOworICAgIF9nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMg
QUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdAog
ICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhl
IHRvcCBsZWZ0LgpAQCAtNjI5LDE5ICszOTIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKICAg
ICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKICAgIAot
ICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1faW50ZXJuYWwtPm1fbWFpbkZibyk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFsLT5tX2Rl
cHRoQnVmZmVyKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fbWFpbkZibyk7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZm
ZXIpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgcmVuZGVyYnVmZmVyU3RvcmFn
ZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogI2Vsc2UKICAgICByZW5kZXJidWZmZXJT
dG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwogI2VuZGlmCi0gICAgbV9pbnRlcm5h
bC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsK
KyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwg
MCk7CiAgICAgCi0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3RleHR1cmUs
IDApOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQs
IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZm
ZXIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3RleHR1cmUsIDApOworICAgIGdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CiAKLSAgICBHTGVudW0gc3RhdHVz
ID0gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIpOworICAgIEdMZW51bSBzdGF0dXMgPSBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKICAgICBpZiAoc3RhdHVzICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewogICAgICAgICBMT0dfRVJS
T1IoIkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJsZSB0byByZXNoYXBlIHRoZSBtYWluIGZy
YW1lYnVmZmVyIik7CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC02NTksNyArNDIyLDcg
QEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUodGV4
dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtNjY3LDcgKzQz
MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAg
QVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBn
bEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6
ZWkgbWF4Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMp
CkBAIC02ODUsMjYgKzQ0OCwyNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmli
TG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbgogewogICAgIEFT
U0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRl
eCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKHRhcmdldCwgYnVm
ZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8g
PSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX21haW5GYm87Ci0gICAgbV9pbnRlcm5h
bC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZm
ZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQs
IHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJl
KEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtNzE2LDE5ICs0
NzksMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJs
dWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKKyAgICBnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVt
IG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBhcmF0
ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVS
R0IsIG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhH
QzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQpAQCAtNzQwLDMxICs1MDMsMzEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0Rl
bnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZShH
QzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0Rl
bnVtIGRzdEFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNy
Y0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJH
Qiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVm
ZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1c2Fn
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsK
KyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdD
M0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRh
KHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0Rz
aXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zm
c2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNoZWNrRnJh
bWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0Mz
RGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAt
ODA1LDcgKzU2OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5jb21waWxl
U2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAtODUz
LDcgKzYxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7
CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsK
KyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTg2NSw3ICs2MjgsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlz
KEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAgLTg4OSw3
ICs2NTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQg
aW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmZpbmlzaCgpCkBAIC05MDcsMTMgKzY3MCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpm
bHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsK
KyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVy
YnVmZmVydGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFt
ZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdD
M0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50IGxldmVs
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJn
ZXQsIHRleHR1cmUsIGxldmVsKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwg
YXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQpAQCAtOTI1LDcgKzY4OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
Z2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CiB9
CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAtOTM4LDE0
ICs3MDEsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAgICBt
X2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElW
RV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwg
Jm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyht
YXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9
IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUs
IG5hbWUpOworICAgIGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgs
ICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3Ro
KSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtOTcwLDE0ICs3MzMsMTQgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0R1aW50IGluZGUKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9n
cmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFD
VElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2
KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVf
VU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFtZSA9IChH
TGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0g
MDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAgICBtX2lu
dGVybmFsLT5nZXRBY3RpdmVVbmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGlu
ZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAgIGds
R2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRleCwgbWF4
TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFt
ZUxlbmd0aCkgewogICAgICAgICBmYXN0RnJlZShuYW1lKTsKQEAgLTk5OCw3ICs3NjEsNyBAQCBp
bnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gLTE7CiAgICAgCiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5h
bC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBy
ZXR1cm4gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwog
fQogCiBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
Q29udGV4dEF0dHJpYnV0ZXMoKQpAQCAtMTAzNyw3ICs4MDAsNyBAQCBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAgICAgICAg
IHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcihidWZmZXIpOworICAg
IHJldHVybiBnbElzQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29u
dGV4dDNEOjppc0VuYWJsZWQoR0MzRGVudW0gY2FwKQpAQCAtMTA1Miw3ICs4MTUsNyBAQCBHQzNE
Ym9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0
IGZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+
aXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlcihm
cmFtZWJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTA2MSw3ICs4MjQsNyBAQCBHQzNEYm9v
bGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICByZXR1cm4gZ2xJc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIEdDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJl
bmRlcmJ1ZmZlcikKQEAgLTEwNzAsNyArODMzLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNSZW5kZXJidWZmZXIocmVu
ZGVyYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwog
fQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpCkBAIC0xMDc5LDcgKzg0Miw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29u
dGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzU2hhZGVyKHNoYWRlcik7CisgICAgcmV0dXJu
IGdsSXNTaGFkZXIoc2hhZGVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6
OmlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC0xMTAxLDcgKzg2NCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5saW5rUHJvZ3JhbShwcm9ncmFtKTsK
KyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCkBAIC0xMTUy
LDEzICs5MTUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFn
ZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm8KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogI2VuZGlmCi0gICAgbV9pbnRlcm5hbC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29s
ZWFuIGludmVydCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOworICAgIGds
U2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCkKQEAgLTExODQsNyArOTQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25zdCBTdHJpbmcmIHNvdXIK
ICAgICBDU3RyaW5nIHNvdXJjZUNTID0gcHJlZml4ZWRTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0
IGNoYXIqIGRhdGEgPSBzb3VyY2VDUy5kYXRhKCk7CiAgICAgaW50IGxlbmd0aCA9IHByZWZpeGVk
U291cmNlLmxlbmd0aCgpOwotICAgIG1faW50ZXJuYWwtPnNoYWRlclNvdXJjZSgoR0x1aW50KSBz
aGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKKyAgICBnbFNoYWRlclNvdXJj
ZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGlu
dCByZWYsIEdDM0R1aW50IG1hc2spCkBAIC0xMTk2LDcgKzk1OSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWlu
dCBtYXNrKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNE
ZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICBnbFN0
ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKQEAgLTEyMDgsNyArOTcx
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdD
M0RlbnVtIHpwYXNzKQpAQCAtMTIyMCw3ICs5ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNz
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5j
aWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RmbG9hdCB2YWx1ZSkKQEAgLTEyMzgsMTE1ICsxMDAxLDExNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xZihsb2NhdGlvbiwgdjAp
OworICAgIGdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdD
M0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVu
aWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkg
c2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVu
aWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0
IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIp
OworICAgIGdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFy
cmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9h
dCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3Jt
NGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFp
KGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50IHYwLCBHQzNEaW50IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwor
ICAgIGdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0Rp
bnQgdjEsIEdDM0RpbnQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIp
OworICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CisgICAgZ2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYw
LCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpKGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2
MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlm
b3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQq
IGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24s
IHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlv
biwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgz
ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVu
aWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQpAQCAtMTM1NCw3ICsxMTE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAg
IAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCkBAIC0xMzYyLDYxICsxMTI1LDYxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJU
KHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsVmFs
aWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliMWYoaW5kZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwor
ICAgIGdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdD
M0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOworICAgIGds
VmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMmZ2
KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0
IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAgIGdsVmVy
dGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjNm
dihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9h
dCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwg
djIsIHYzKTsKKyAgICBnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkp
OworICAgIGdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQg
c2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0
cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4
LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRf
Y2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNp
emVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTQzNCw3ICsxMTk3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9v
bGVhbiogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAg
IGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGZsb2F0KiB2YWx1ZSkKQEAgLTE0NDYsNyArMTIwOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dih0YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUs
IHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVu
dW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE0NTgsNyArMTIyMSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGlu
dCogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0UHJv
Z3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAg
LTE0NjYsNyArMTIyOSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUlu
Zm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJu
YWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVO
R1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRl
eHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7
CiAKQEAgLTE0NzQsNyArMTIzNyw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIGlmICghaW5mbykKICAg
ICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJv
Z3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9n
cmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAg
ICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNDg1LDE0ICsxMjQ4LDE0IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIEFTU0VS
VChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAg
ICBnbEdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKQEAgLTE1MDAsMTQgKzEyNjMsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRT
aGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1f
aW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9H
X0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0g
MDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAg
IGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hh
ZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVy
SW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3Vs
dChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE1MjAsMTQgKzEyODMsMTQgQEAgU3Ry
aW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXIpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAg
IEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBH
cmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOworICAgIGds
R2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5H
VEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIqIGluZm8g
PSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAgICAgICAg
cmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVu
Z3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgs
ICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUo
aW5mbyk7CkBAIC0xNTUwLDEzICsxMzEzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9y
bWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYocHJvZ3Jh
bSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsK
KyAgICBnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBHQzNE
aW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTY0LDE5ICsxMzI3LDE5IEBAIEdD
M0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJu
YWwtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWlu
dCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4
QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1O
YW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJh
bU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUs
IHZhbHVlKTsKIH0KIAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKQEAgLTE1ODQs
NyArMTM0Nyw3IEBAIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0
cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwCiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICAKICAgICBHTHZvaWQqIHBvaW50ZXIgPSAwOwot
ICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUs
ICZwb2ludGVyKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5h
bWUsICZwb2ludGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTE2MDUsNyArMTM2OCw3
IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQg
aGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZo
YW5kbGUpOworICAgIGdsR2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICBy
ZXR1cm4gaGFuZGxlOwogfQogCkBAIC0xNjEzLDI4ICsxMzc2LDI4IEBAIFBsYXRmb3JtM0RPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwot
ICAgIG1faW50ZXJuYWwtPmdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsK
KyAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1
cm4gaGFuZGxlOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVQcm9ncmFtKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIHJldHVybiBtX2ludGVybmFsLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0dXJuIGds
Q3JlYXRlUHJvZ3JhbSgpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2Vu
UmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlblJlbmRlcmJ1
ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAog
UGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVt
IHR5cGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlU2hhZGVyKHR5cGUpOworICAgIHJldHVybiBnbENy
ZWF0ZVNoYWRlcih0eXBlKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlVGV4dHVyZSgpCkBAIC0xNjQ4LDMxICsxNDExLDMxIEBAIFBsYXRmb3JtM0RPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRl
QnVmZmVycygxLCAmYnVmZmVyKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QgZnJhbWVidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVm
ZmVyKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQcm9ncmFt
KHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVSZW5kZXJidWZm
ZXJzKDEsICZyZW5kZXJidWZmZXIpOworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVu
ZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAg
Z2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87060</attachid>
            <date>2011-03-27 00:32:37 -0700</date>
            <delta_ts>2011-03-27 00:35:10 -0700</delta_ts>
            <desc>Last patch had one header missing.</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>84213</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjI2ZmQxLi40Y2FjNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEw
IEBACisyMDExLTAzLTI3ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYXNrIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIEdMIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAorCisgICAgICAgIE1vZGlmaWVk
IE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgaW4gUXQgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdG8gbWFzayB0aGUgdXNlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRo
YXQgd2UgY2FuIGFkYXB0IHRvIGRpZmZlcmVudAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9y
IE9wZW5HTCBjYWxscy4gQ2xlYW5lZCB1cCBzeW1ib2wgcmVzb2x2ZXIgaW4gb3JkZXIKKyAgICAg
ICAgc2ltcGxpZnkgdGhlIGRlY2xyYXRpb24gb2YgbmV3IHN5bWJvbHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFj
dGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFj
aFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJp
YkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1l
YnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
dHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRp
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZv
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zm
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIpOgorCiAyMDExLTAz
LTI2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDBlZjhlZGEuLjk0NGIzM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC0zNDEwLDcgKzM0MTAsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
V0VCR0w9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggXAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oIFwKLSAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9x
dC9FeHRlbnNpb25zM0RRdC5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKIAogICAgICF2OCB7CiAgICAgICAgIFNPVVJDRVMgKz0g
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbFF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzREludGVybmFsUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43NDFhNWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKQEAgLTAs
MCArMSw2MjkgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEwIFRpZXRvIENvcnBvcmF0aW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgICAgCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICAgIAorICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisqLworCisjaWZuZGVmIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWxRdF9oCisjZGVmaW5lIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxR
dF9oCisKKyNpbmNsdWRlIDxRR3JhcGhpY3NPYmplY3Q+CisjaW5jbHVkZSA8UUdMQ29udGV4dD4K
KworI2lmICFkZWZpbmVkKEdMY2hhcikKK3R5cGVkZWYgY2hhciBHTGNoYXI7CisjZW5kaWYKKwor
I2lmICFkZWZpbmVkKEdMX0RFUFRIMjRfU1RFTkNJTDgpCisjZGVmaW5lIEdMX0RFUFRIMjRfU1RF
TkNJTDggMHg4OEYwCisjZW5kaWYKKworI2lmICFkZWZpbmVkKEFQSUVOVFJZKQorI2RlZmluZSBB
UElFTlRSWQorI2VuZGlmCisKKyNpZmRlZiBRVF9PUEVOR0xfRVNfMgordHlwZWRlZiBHTHNpemVp
cHRyIEdMc2l6ZWlwdHJUeXBlOwordHlwZWRlZiBHTGludHB0ciBHTGludHB0clR5cGU7CisjZWxz
ZQordHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Cit0eXBlZGVmIHB0cmRpZmZfdCBH
TGludHB0clR5cGU7CisjZW5kaWYKKworI2RlZmluZSBERUNMQVJFX1BST0MoUHJvYykgUHJvYyMj
VHlwZSBfIyNQcm9jOworCisjaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpCisjZGVmaW5lIFNF
VF9QUk9DX0FERFJFU1MoUHJvYykgXyMjUHJvYyA9IFByb2MKKyNlbHNlCisjZGVmaW5lIFNFVF9Q
Uk9DX0FERFJFU1MoUHJvYykgXyMjUHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHJvYyMjVHlwZT4o
Z2V0UHJvY0FkZHJlc3MoI1Byb2MpKQorI2VuZGlmCisKKyNpZm5kZWYgZ2xBY3RpdmVUZXh0dXJl
CisjZGVmaW5lIGdsQWN0aXZlVGV4dHVyZSBtX2ludGVybmFsLT5fZ2xBY3RpdmVUZXh0dXJlCisj
ZW5kaWYKKworI2lmbmRlZiBnbEF0dGFjaFNoYWRlcgorI2RlZmluZSBnbEF0dGFjaFNoYWRlciBt
X2ludGVybmFsLT5fZ2xBdHRhY2hTaGFkZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsQmluZEF0dHJp
YkxvY2F0aW9uCisjZGVmaW5lIGdsQmluZEF0dHJpYkxvY2F0aW9uIG1faW50ZXJuYWwtPl9nbEJp
bmRBdHRyaWJMb2NhdGlvbgorI2VuZGlmCisKKyNpZm5kZWYgZ2xCaW5kQnVmZmVyCisjZGVmaW5l
IGdsQmluZEJ1ZmZlciBtX2ludGVybmFsLT5fZ2xCaW5kQnVmZmVyCisjZW5kaWYKKworI2lmbmRl
ZiBnbEJpbmRGcmFtZWJ1ZmZlcgorI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZlciBtX2ludGVybmFs
LT5fZ2xCaW5kRnJhbWVidWZmZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsQmluZFJlbmRlcmJ1ZmZl
cgorI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXIgbV9pbnRlcm5hbC0+X2dsQmluZFJlbmRlcmJ1
ZmZlcgorI2VuZGlmCisKKyNpZm5kZWYgZ2xCbGVuZENvbG9yCisjZGVmaW5lIGdsQmxlbmRDb2xv
ciBtX2ludGVybmFsLT5fZ2xCbGVuZENvbG9yCisjZW5kaWYKKworI2lmbmRlZiBnbEJsZW5kRXF1
YXRpb24KKyNkZWZpbmUgZ2xCbGVuZEVxdWF0aW9uIG1faW50ZXJuYWwtPl9nbEJsZW5kRXF1YXRp
b24KKyNlbmRpZgorCisjaWZuZGVmIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlCisjZGVmaW5lIGds
QmxlbmRFcXVhdGlvblNlcGFyYXRlIG1faW50ZXJuYWwtPl9nbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xCbGVuZEZ1bmNTZXBhcmF0ZQorI2RlZmluZSBnbEJsZW5k
RnVuY1NlcGFyYXRlIG1faW50ZXJuYWwtPl9nbEJsZW5kRnVuY1NlcGFyYXRlCisjZW5kaWYKKwor
I2lmbmRlZiBnbEJ1ZmZlckRhdGEKKyNkZWZpbmUgZ2xCdWZmZXJEYXRhIG1faW50ZXJuYWwtPl9n
bEJ1ZmZlckRhdGEKKyNlbmRpZgorCisjaWZuZGVmIGdsQnVmZmVyU3ViRGF0YQorI2RlZmluZSBn
bEJ1ZmZlclN1YkRhdGEgbV9pbnRlcm5hbC0+X2dsQnVmZmVyU3ViRGF0YQorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzCisjZGVmaW5lIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyBtX2ludGVybmFsLT5fZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzCisjZW5kaWYKKwor
I2lmbmRlZiBnbENvbXBpbGVTaGFkZXIKKyNkZWZpbmUgZ2xDb21waWxlU2hhZGVyIG1faW50ZXJu
YWwtPl9nbENvbXBpbGVTaGFkZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsQ3JlYXRlUHJvZ3JhbQor
I2RlZmluZSBnbENyZWF0ZVByb2dyYW0gbV9pbnRlcm5hbC0+X2dsQ3JlYXRlUHJvZ3JhbQorI2Vu
ZGlmCisKKyNpZm5kZWYgZ2xDcmVhdGVTaGFkZXIKKyNkZWZpbmUgZ2xDcmVhdGVTaGFkZXIgbV9p
bnRlcm5hbC0+X2dsQ3JlYXRlU2hhZGVyCisjZW5kaWYKKworI2lmbmRlZiBnbERlbGV0ZUJ1ZmZl
cnMKKyNkZWZpbmUgZ2xEZWxldGVCdWZmZXJzIG1faW50ZXJuYWwtPl9nbERlbGV0ZUJ1ZmZlcnMK
KyNlbmRpZgorCisjaWZuZGVmIGdsRGVsZXRlRnJhbWVidWZmZXJzCisjZGVmaW5lIGdsRGVsZXRl
RnJhbWVidWZmZXJzIG1faW50ZXJuYWwtPl9nbERlbGV0ZUZyYW1lYnVmZmVycworI2VuZGlmCisK
KyNpZm5kZWYgZ2xEZWxldGVQcm9ncmFtCisjZGVmaW5lIGdsRGVsZXRlUHJvZ3JhbSBtX2ludGVy
bmFsLT5fZ2xEZWxldGVQcm9ncmFtCisjZW5kaWYKKworI2lmbmRlZiBnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMKKyNkZWZpbmUgZ2xEZWxldGVSZW5kZXJidWZmZXJzIG1faW50ZXJuYWwtPl9nbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMKKyNlbmRpZgorCisjaWZuZGVmIGdsRGVsZXRlU2hhZGVyCisjZGVmaW5l
IGdsRGVsZXRlU2hhZGVyIG1faW50ZXJuYWwtPl9nbERlbGV0ZVNoYWRlcgorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xEZXRhY2hTaGFkZXIKKyNkZWZpbmUgZ2xEZXRhY2hTaGFkZXIgbV9pbnRlcm5hbC0+
X2dsRGV0YWNoU2hhZGVyCisjZW5kaWYKKworI2lmbmRlZiBnbERpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheQorI2RlZmluZSBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSBtX2ludGVybmFsLT5fZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkKKyNlbmRpZgorCisjaWZuZGVmIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkKKyNkZWZpbmUgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSBtX2ludGVybmFs
LT5fZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheQorI2VuZGlmCisKKyNpZm5kZWYgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIG1faW50
ZXJuYWwtPl9nbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyCisjZW5kaWYKKworI2lmbmRlZiBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJECisjZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgbV9pbnRl
cm5hbC0+X2dsRnJhbWVidWZmZXJUZXh0dXJlMkQKKyNlbmRpZgorCisjaWZuZGVmIGdsR2VuQnVm
ZmVycworI2RlZmluZSBnbEdlbkJ1ZmZlcnMgbV9pbnRlcm5hbC0+X2dsR2VuQnVmZmVycworI2Vu
ZGlmCisKKyNpZm5kZWYgZ2xHZW5lcmF0ZU1pcG1hcAorI2RlZmluZSBnbEdlbmVyYXRlTWlwbWFw
IG1faW50ZXJuYWwtPl9nbEdlbmVyYXRlTWlwbWFwCisjZW5kaWYKKworI2lmbmRlZiBnbEdlbkZy
YW1lYnVmZmVycworI2RlZmluZSBnbEdlbkZyYW1lYnVmZmVycyBtX2ludGVybmFsLT5fZ2xHZW5G
cmFtZWJ1ZmZlcnMKKyNlbmRpZgorCisjaWZuZGVmIGdsR2VuUmVuZGVyYnVmZmVycworI2RlZmlu
ZSBnbEdlblJlbmRlcmJ1ZmZlcnMgbV9pbnRlcm5hbC0+X2dsR2VuUmVuZGVyYnVmZmVycworI2Vu
ZGlmCisKKyNpZm5kZWYgZ2xHZXRBY3RpdmVBdHRyaWIKKyNkZWZpbmUgZ2xHZXRBY3RpdmVBdHRy
aWIgbV9pbnRlcm5hbC0+X2dsR2V0QWN0aXZlQXR0cmliCisjZW5kaWYKKworI2lmbmRlZiBnbEdl
dEFjdGl2ZVVuaWZvcm0KKyNkZWZpbmUgZ2xHZXRBY3RpdmVVbmlmb3JtIG1faW50ZXJuYWwtPl9n
bEdldEFjdGl2ZVVuaWZvcm0KKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0QXR0YWNoZWRTaGFkZXJz
CisjZGVmaW5lIGdsR2V0QXR0YWNoZWRTaGFkZXJzIG1faW50ZXJuYWwtPl9nbEdldEF0dGFjaGVk
U2hhZGVycworI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRBdHRyaWJMb2NhdGlvbgorI2RlZmluZSBn
bEdldEF0dHJpYkxvY2F0aW9uIG1faW50ZXJuYWwtPl9nbEdldEF0dHJpYkxvY2F0aW9uCisjZW5k
aWYKKworI2lmbmRlZiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2CisjZGVmaW5lIGdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYgbV9pbnRlcm5hbC0+X2dsR2V0QnVmZmVyUGFyYW1ldGVyaXYKKyNlbmRpZgor
CisjaWZuZGVmIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYKKyNkZWZpbmUg
Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiBtX2ludGVybmFsLT5fZ2xHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRQ
cm9ncmFtSW5mb0xvZworI2RlZmluZSBnbEdldFByb2dyYW1JbmZvTG9nIG1faW50ZXJuYWwtPl9n
bEdldFByb2dyYW1JbmZvTG9nCisjZW5kaWYKKworI2lmbmRlZiBnbEdldFByb2dyYW1pdgorI2Rl
ZmluZSBnbEdldFByb2dyYW1pdiBtX2ludGVybmFsLT5fZ2xHZXRQcm9ncmFtaXYKKyNlbmRpZgor
CisjaWZuZGVmIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYKKyNkZWZpbmUgZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdiBtX2ludGVybmFsLT5fZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRTaGFkZXJJbmZvTG9nCisjZGVmaW5lIGdsR2V0
U2hhZGVySW5mb0xvZyBtX2ludGVybmFsLT5fZ2xHZXRTaGFkZXJJbmZvTG9nCisjZW5kaWYKKwor
I2lmbmRlZiBnbEdldFNoYWRlcml2CisjZGVmaW5lIGdsR2V0U2hhZGVyaXYgbV9pbnRlcm5hbC0+
X2dsR2V0U2hhZGVyaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0U2hhZGVyU291cmNlCisjZGVm
aW5lIGdsR2V0U2hhZGVyU291cmNlIG1faW50ZXJuYWwtPl9nbEdldFNoYWRlclNvdXJjZQorI2Vu
ZGlmCisKKyNpZm5kZWYgZ2xHZXRVbmlmb3JtTG9jYXRpb24KKyNkZWZpbmUgZ2xHZXRVbmlmb3Jt
TG9jYXRpb24gbV9pbnRlcm5hbC0+X2dsR2V0VW5pZm9ybUxvY2F0aW9uCisjZW5kaWYKKworI2lm
bmRlZiBnbEdldFVuaWZvcm1mdgorI2RlZmluZSBnbEdldFVuaWZvcm1mdiBtX2ludGVybmFsLT5f
Z2xHZXRVbmlmb3JtZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0VW5pZm9ybWl2CisjZGVmaW5l
IGdsR2V0VW5pZm9ybWl2IG1faW50ZXJuYWwtPl9nbEdldFVuaWZvcm1pdgorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xHZXRWZXJ0ZXhBdHRyaWJmdgorI2RlZmluZSBnbEdldFZlcnRleEF0dHJpYmZ2IG1f
aW50ZXJuYWwtPl9nbEdldFZlcnRleEF0dHJpYmZ2CisjZW5kaWYKKworI2lmbmRlZiBnbEdldFZl
cnRleEF0dHJpYml2CisjZGVmaW5lIGdsR2V0VmVydGV4QXR0cmliaXYgbV9pbnRlcm5hbC0+X2ds
R2V0VmVydGV4QXR0cmliaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0VmVydGV4QXR0cmliUG9p
bnRlcnYKKyNkZWZpbmUgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiBtX2ludGVybmFsLT5fZ2xH
ZXRWZXJ0ZXhBdHRyaWJQb2ludGVydgorI2VuZGlmCisKKyNpZm5kZWYgZ2xJc0J1ZmZlcgorI2Rl
ZmluZSBnbElzQnVmZmVyIG1faW50ZXJuYWwtPl9nbElzQnVmZmVyCisjZW5kaWYKKworI2lmbmRl
ZiBnbElzRnJhbWVidWZmZXIKKyNkZWZpbmUgZ2xJc0ZyYW1lYnVmZmVyIG1faW50ZXJuYWwtPl9n
bElzRnJhbWVidWZmZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsSXNQcm9ncmFtCisjZGVmaW5lIGds
SXNQcm9ncmFtIG1faW50ZXJuYWwtPl9nbElzUHJvZ3JhbQorI2VuZGlmCisKKyNpZm5kZWYgZ2xJ
c1JlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyIG1faW50ZXJuYWwtPl9nbElz
UmVuZGVyYnVmZmVyCisjZW5kaWYKKworI2lmbmRlZiBnbElzU2hhZGVyCisjZGVmaW5lIGdsSXNT
aGFkZXIgbV9pbnRlcm5hbC0+X2dsSXNTaGFkZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsTGlua1By
b2dyYW0KKyNkZWZpbmUgZ2xMaW5rUHJvZ3JhbSBtX2ludGVybmFsLT5fZ2xMaW5rUHJvZ3JhbQor
I2VuZGlmCisKKyNpZm5kZWYgZ2xSZW5kZXJidWZmZXJTdG9yYWdlCisjZGVmaW5lIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZSBtX2ludGVybmFsLT5fZ2xSZW5kZXJidWZmZXJTdG9yYWdlCisjZW5kaWYK
KworI2lmbmRlZiBnbFNhbXBsZUNvdmVyYWdlCisjZGVmaW5lIGdsU2FtcGxlQ292ZXJhZ2UgbV9p
bnRlcm5hbC0+X2dsU2FtcGxlQ292ZXJhZ2UKKyNlbmRpZgorCisjaWZuZGVmIGdsU2hhZGVyU291
cmNlCisjZGVmaW5lIGdsU2hhZGVyU291cmNlIG1faW50ZXJuYWwtPl9nbFNoYWRlclNvdXJjZQor
I2VuZGlmCisKKyNpZm5kZWYgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlCisjZGVmaW5lIGdsU3RlbmNp
bEZ1bmNTZXBhcmF0ZSBtX2ludGVybmFsLT5fZ2xTdGVuY2lsRnVuY1NlcGFyYXRlCisjZW5kaWYK
KworI2lmbmRlZiBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUKKyNkZWZpbmUgZ2xTdGVuY2lsTWFza1Nl
cGFyYXRlIG1faW50ZXJuYWwtPl9nbFN0ZW5jaWxNYXNrU2VwYXJhdGUKKyNlbmRpZgorCisjaWZu
ZGVmIGdsU3RlbmNpbE9wU2VwYXJhdGUKKyNkZWZpbmUgZ2xTdGVuY2lsT3BTZXBhcmF0ZSBtX2lu
dGVybmFsLT5fZ2xTdGVuY2lsT3BTZXBhcmF0ZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3Jt
MWYKKyNkZWZpbmUgZ2xVbmlmb3JtMWYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTFmCisjZW5kaWYK
KworI2lmbmRlZiBnbFVuaWZvcm0xZnYKKyNkZWZpbmUgZ2xVbmlmb3JtMWZ2IG1faW50ZXJuYWwt
Pl9nbFVuaWZvcm0xZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTFpCisjZGVmaW5lIGds
VW5pZm9ybTFpIG1faW50ZXJuYWwtPl9nbFVuaWZvcm0xaQorI2VuZGlmCisKKyNpZm5kZWYgZ2xV
bmlmb3JtMWl2CisjZGVmaW5lIGdsVW5pZm9ybTFpdiBtX2ludGVybmFsLT5fZ2xVbmlmb3JtMWl2
CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0yZgorI2RlZmluZSBnbFVuaWZvcm0yZiBtX2lu
dGVybmFsLT5fZ2xVbmlmb3JtMmYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTJmdgorI2Rl
ZmluZSBnbFVuaWZvcm0yZnYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTJmdgorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xVbmlmb3JtMmkKKyNkZWZpbmUgZ2xVbmlmb3JtMmkgbV9pbnRlcm5hbC0+X2dsVW5p
Zm9ybTJpCisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0yaXYKKyNkZWZpbmUgZ2xVbmlmb3Jt
Mml2IG1faW50ZXJuYWwtPl9nbFVuaWZvcm0yaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9y
bTNmCisjZGVmaW5lIGdsVW5pZm9ybTNmIG1faW50ZXJuYWwtPl9nbFVuaWZvcm0zZgorI2VuZGlm
CisKKyNpZm5kZWYgZ2xVbmlmb3JtM2Z2CisjZGVmaW5lIGdsVW5pZm9ybTNmdiBtX2ludGVybmFs
LT5fZ2xVbmlmb3JtM2Z2CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0zaQorI2RlZmluZSBn
bFVuaWZvcm0zaSBtX2ludGVybmFsLT5fZ2xVbmlmb3JtM2kKKyNlbmRpZgorCisjaWZuZGVmIGds
VW5pZm9ybTNpdgorI2RlZmluZSBnbFVuaWZvcm0zaXYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTNp
dgorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtNGYKKyNkZWZpbmUgZ2xVbmlmb3JtNGYgbV9p
bnRlcm5hbC0+X2dsVW5pZm9ybTRmCisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm00ZnYKKyNk
ZWZpbmUgZ2xVbmlmb3JtNGZ2IG1faW50ZXJuYWwtPl9nbFVuaWZvcm00ZnYKKyNlbmRpZgorCisj
aWZuZGVmIGdsVW5pZm9ybTRpCisjZGVmaW5lIGdsVW5pZm9ybTRpIG1faW50ZXJuYWwtPl9nbFVu
aWZvcm00aQorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtNGl2CisjZGVmaW5lIGdsVW5pZm9y
bTRpdiBtX2ludGVybmFsLT5fZ2xVbmlmb3JtNGl2CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZv
cm1NYXRyaXgyZnYKKyNkZWZpbmUgZ2xVbmlmb3JtTWF0cml4MmZ2IG1faW50ZXJuYWwtPl9nbFVu
aWZvcm1NYXRyaXgyZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybU1hdHJpeDNmdgorI2Rl
ZmluZSBnbFVuaWZvcm1NYXRyaXgzZnYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybU1hdHJpeDNmdgor
I2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtTWF0cml4NGZ2CisjZGVmaW5lIGdsVW5pZm9ybU1h
dHJpeDRmdiBtX2ludGVybmFsLT5fZ2xVbmlmb3JtTWF0cml4NGZ2CisjZW5kaWYKKworI2lmbmRl
ZiBnbFVzZVByb2dyYW0KKyNkZWZpbmUgZ2xVc2VQcm9ncmFtIG1faW50ZXJuYWwtPl9nbFVzZVBy
b2dyYW0KKyNlbmRpZgorCisjaWZuZGVmIGdsVmFsaWRhdGVQcm9ncmFtCisjZGVmaW5lIGdsVmFs
aWRhdGVQcm9ncmFtIG1faW50ZXJuYWwtPl9nbFZhbGlkYXRlUHJvZ3JhbQorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xWZXJ0ZXhBdHRyaWIxZgorI2RlZmluZSBnbFZlcnRleEF0dHJpYjFmIG1faW50ZXJu
YWwtPl9nbFZlcnRleEF0dHJpYjFmCisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjFm
dgorI2RlZmluZSBnbFZlcnRleEF0dHJpYjFmdiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWIx
ZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsVmVydGV4QXR0cmliMmYKKyNkZWZpbmUgZ2xWZXJ0ZXhB
dHRyaWIyZiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWIyZgorI2VuZGlmCisKKyNpZm5kZWYg
Z2xWZXJ0ZXhBdHRyaWIyZnYKKyNkZWZpbmUgZ2xWZXJ0ZXhBdHRyaWIyZnYgbV9pbnRlcm5hbC0+
X2dsVmVydGV4QXR0cmliMmZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjNmCisj
ZGVmaW5lIGdsVmVydGV4QXR0cmliM2YgbV9pbnRlcm5hbC0+X2dsVmVydGV4QXR0cmliM2YKKyNl
bmRpZgorCisjaWZuZGVmIGdsVmVydGV4QXR0cmliM2Z2CisjZGVmaW5lIGdsVmVydGV4QXR0cmli
M2Z2IG1faW50ZXJuYWwtPl9nbFZlcnRleEF0dHJpYjNmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xW
ZXJ0ZXhBdHRyaWI0ZgorI2RlZmluZSBnbFZlcnRleEF0dHJpYjRmIG1faW50ZXJuYWwtPl9nbFZl
cnRleEF0dHJpYjRmCisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjRmdgorI2RlZmlu
ZSBnbFZlcnRleEF0dHJpYjRmdiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWI0ZnYKKyNlbmRp
ZgorCisjaWZuZGVmIGdsVmVydGV4QXR0cmliUG9pbnRlcgorI2RlZmluZSBnbFZlcnRleEF0dHJp
YlBvaW50ZXIgbV9pbnRlcm5hbC0+X2dsVmVydGV4QXR0cmliUG9pbnRlcgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBY3RpdmVUZXh0
dXJlVHlwZSkgKEdMZW51bSk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEF0dGFjaFNoYWRl
clR5cGUpIChHTHVpbnQsIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRB
dHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwgY29uc3QgY2hhciopOwordHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKK3R5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1
aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUpIChH
TGVudW0sIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kQ29sb3JUeXBl
KSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYpOwordHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdMZW51bSk7Cit0eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUpKEdMZW51bSwgR0xlbnVtKTsK
K3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlKShHTGVudW0g
c3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7
Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRhdGFUeXBlKSAoR0xlbnVtLCBHTHNp
emVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdMaW50cHRyVHlwZSwgR0xzaXplaXB0
clR5cGUsIGNvbnN0IEdMdm9pZCopOwordHlwZWRlZiBHTGVudW0gKEFQSUVOVFJZKiBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwordHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZ
KiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKK3R5cGVkZWYgR0x1aW50IChBUElFTlRSWSogZ2xD
cmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVs
ZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVpbnQqKTsKK3R5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVByb2dyYW1UeXBlKSAoR0x1
aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUp
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xE
ZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGV0
YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51
bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwg
R0xpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5CdWZmZXJzVHlwZSkgKEdMc2l6
ZWksIEdMdWludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5lcmF0ZU1pcG1hcFR5
cGUpIChHTGVudW0gdGFyZ2V0KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuRnJhbWVi
dWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwordHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdMc2l6
ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwordHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXpl
aSosIEdMdWludCopOwordHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0QXR0cmliTG9jYXRp
b25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwordHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgY2hhciopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFt
aXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSkgKEdM
dWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Cit0eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdM
c2l6ZWkqLCBjaGFyKik7Cit0eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRVbmlmb3JtTG9j
YXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0Kik7Cit0eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGlu
dCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUpIChH
THVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRW
ZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKK3R5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlKSAoR0x1aW50LCBHTGVu
dW0sIEdMdm9pZCoqKTsKK3R5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc0J1ZmZlclR5
cGUpIChHTHVpbnQpOwordHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzRnJhbWVidWZm
ZXJUeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1Byb2dy
YW1UeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1JlbmRl
cmJ1ZmZlclR5cGUpIChHTHVpbnQpOwordHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElz
U2hhZGVyVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbExpbmtQcm9n
cmFtVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpOwordHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5cGUpIChHTGNsYW1wZiwgR0xib29s
ZWFuKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hhZGVyU291cmNlVHlwZSkgKEdMdWlu
dCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGludCopOwordHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCwgR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE1hc2tTZXBhcmF0
ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5j
aWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSk7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUpIChHTGludCwgR0xmbG9hdCk7Cit0
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IGNvbnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFpVHlw
ZSkgKEdMaW50LCBHTGludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xaXZU
eXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCk7Cit0eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0
IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJpVHlwZSkgKEdM
aW50LCBHTGludCwgR0xpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMml2
VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwordHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQp
OwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2Z2VHlwZSkgKEdMaW50LCBHTHNp
emVpLCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0z
aVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Cit0
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5cGUpIChHTGludCwgR0xmbG9hdCwg
R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVu
aWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdM
aW50LCBHTGludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aXZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3Qg
R0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4M2Z2VHlw
ZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUpIChHTGludCwgR0xzaXplaSwg
R0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVz
ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmFsaWRh
dGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRl
eEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCk7Cit0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsK
K3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZUeXBlKSAoR0x1aW50LCBj
b25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxv
YXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwordHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Cit0
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9p
bnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29u
c3QgR0x2b2lkKik7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgOiBwdWJsaWMg
UUdyYXBoaWNzT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFs
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CisgICAgfkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKworICAgIGJvb2wgaXNDb250ZXh0VmFsaWQoKSB7IHJl
dHVybiBtX2NvbnRleHRWYWxpZDsgfQorICAgIFFHTFdpZGdldCogZ2V0Vmlld3BvcnRHTFdpZGdl
dCgpOworICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGlj
c0l0ZW0qLCBRV2lkZ2V0Kik7CisgICAgUVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNvbnN0OworCisg
ICAgREVDTEFSRV9QUk9DKGdsQWN0aXZlVGV4dHVyZSkKKyAgICBERUNMQVJFX1BST0MoZ2xBdHRh
Y2hTaGFkZXIpCisgICAgREVDTEFSRV9QUk9DKGdsQmluZEF0dHJpYkxvY2F0aW9uKQorICAgIERF
Q0xBUkVfUFJPQyhnbEJpbmRCdWZmZXIpCisgICAgREVDTEFSRV9QUk9DKGdsQmluZEZyYW1lYnVm
ZmVyKQorICAgIERFQ0xBUkVfUFJPQyhnbEJpbmRSZW5kZXJidWZmZXIpCisgICAgREVDTEFSRV9Q
Uk9DKGdsQmxlbmRDb2xvcikKKyAgICBERUNMQVJFX1BST0MoZ2xCbGVuZEVxdWF0aW9uKQorICAg
IERFQ0xBUkVfUFJPQyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSkKKyAgICBERUNMQVJFX1BST0Mo
Z2xCbGVuZEZ1bmNTZXBhcmF0ZSkKKyAgICBERUNMQVJFX1BST0MoZ2xCdWZmZXJEYXRhKQorICAg
IERFQ0xBUkVfUFJPQyhnbEJ1ZmZlclN1YkRhdGEpCisgICAgREVDTEFSRV9QUk9DKGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cykKKyAgICBERUNMQVJFX1BST0MoZ2xDb21waWxlU2hhZGVyKQorICAg
IERFQ0xBUkVfUFJPQyhnbENyZWF0ZVByb2dyYW0pCisgICAgREVDTEFSRV9QUk9DKGdsQ3JlYXRl
U2hhZGVyKQorICAgIERFQ0xBUkVfUFJPQyhnbERlbGV0ZUJ1ZmZlcnMpCisgICAgREVDTEFSRV9Q
Uk9DKGdsRGVsZXRlRnJhbWVidWZmZXJzKQorICAgIERFQ0xBUkVfUFJPQyhnbERlbGV0ZVByb2dy
YW0pCisgICAgREVDTEFSRV9QUk9DKGdsRGVsZXRlUmVuZGVyYnVmZmVycykKKyAgICBERUNMQVJF
X1BST0MoZ2xEZWxldGVTaGFkZXIpCisgICAgREVDTEFSRV9QUk9DKGdsRGV0YWNoU2hhZGVyKQor
ICAgIERFQ0xBUkVfUFJPQyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSkKKyAgICBERUNMQVJF
X1BST0MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKKyAgICBERUNMQVJFX1BST0MoZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcikKKyAgICBERUNMQVJFX1BST0MoZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRCkKKyAgICBERUNMQVJFX1BST0MoZ2xHZW5CdWZmZXJzKQorICAgIERFQ0xBUkVfUFJPQyhn
bEdlbmVyYXRlTWlwbWFwKQorICAgIERFQ0xBUkVfUFJPQyhnbEdlbkZyYW1lYnVmZmVycykKKyAg
ICBERUNMQVJFX1BST0MoZ2xHZW5SZW5kZXJidWZmZXJzKQorICAgIERFQ0xBUkVfUFJPQyhnbEdl
dEFjdGl2ZUF0dHJpYikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRBY3RpdmVVbmlmb3JtKQorICAg
IERFQ0xBUkVfUFJPQyhnbEdldEF0dGFjaGVkU2hhZGVycykKKyAgICBERUNMQVJFX1BST0MoZ2xH
ZXRBdHRyaWJMb2NhdGlvbikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRCdWZmZXJQYXJhbWV0ZXJp
dikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRQcm9ncmFtSW5mb0xvZykKKyAgICBERUNMQVJFX1BS
T0MoZ2xHZXRQcm9ncmFtaXYpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0U2hhZGVySW5mb0xvZykKKyAgICBERUNM
QVJFX1BST0MoZ2xHZXRTaGFkZXJpdikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRTaGFkZXJTb3Vy
Y2UpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0VW5pZm9ybWZ2KQorICAgIERFQ0xBUkVfUFJPQyhn
bEdldFVuaWZvcm1pdikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRVbmlmb3JtTG9jYXRpb24pCisg
ICAgREVDTEFSRV9QUk9DKGdsR2V0VmVydGV4QXR0cmliZnYpCisgICAgREVDTEFSRV9QUk9DKGds
R2V0VmVydGV4QXR0cmliaXYpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0VmVydGV4QXR0cmliUG9p
bnRlcnYpCisgICAgREVDTEFSRV9QUk9DKGdsSXNCdWZmZXIpCisgICAgREVDTEFSRV9QUk9DKGds
SXNGcmFtZWJ1ZmZlcikKKyAgICBERUNMQVJFX1BST0MoZ2xJc1Byb2dyYW0pCisgICAgREVDTEFS
RV9QUk9DKGdsSXNSZW5kZXJidWZmZXIpCisgICAgREVDTEFSRV9QUk9DKGdsSXNTaGFkZXIpCisg
ICAgREVDTEFSRV9QUk9DKGdsTGlua1Byb2dyYW0pCisgICAgREVDTEFSRV9QUk9DKGdsUmVuZGVy
YnVmZmVyU3RvcmFnZSkKKyAgICBERUNMQVJFX1BST0MoZ2xTYW1wbGVDb3ZlcmFnZSkKKyAgICBE
RUNMQVJFX1BST0MoZ2xTaGFkZXJTb3VyY2UpCisgICAgREVDTEFSRV9QUk9DKGdsU3RlbmNpbEZ1
bmNTZXBhcmF0ZSkKKyAgICBERUNMQVJFX1BST0MoZ2xTdGVuY2lsTWFza1NlcGFyYXRlKQorICAg
IERFQ0xBUkVfUFJPQyhnbFN0ZW5jaWxPcFNlcGFyYXRlKQorICAgIERFQ0xBUkVfUFJPQyhnbFVu
aWZvcm0xZikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMWZ2KQorICAgIERFQ0xBUkVfUFJP
QyhnbFVuaWZvcm0xaSkKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMWl2KQorICAgIERFQ0xB
UkVfUFJPQyhnbFVuaWZvcm0yZikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMmZ2KQorICAg
IERFQ0xBUkVfUFJPQyhnbFVuaWZvcm0yaSkKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMml2
KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm0zZikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlm
b3JtM2Z2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm0zaSkKKyAgICBERUNMQVJFX1BST0Mo
Z2xVbmlmb3JtM2l2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm00ZikKKyAgICBERUNMQVJF
X1BST0MoZ2xVbmlmb3JtNGZ2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm00aSkKKyAgICBE
RUNMQVJFX1BST0MoZ2xVbmlmb3JtNGl2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm1NYXRy
aXgyZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybU1hdHJpeDNmdikKKyAgICBERUNMQVJF
X1BST0MoZ2xVbmlmb3JtTWF0cml4NGZ2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVzZVByb2dyYW0p
CisgICAgREVDTEFSRV9QUk9DKGdsVmFsaWRhdGVQcm9ncmFtKQorICAgIERFQ0xBUkVfUFJPQyhn
bFZlcnRleEF0dHJpYjFmKQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0dHJpYjFmdikKKyAg
ICBERUNMQVJFX1BST0MoZ2xWZXJ0ZXhBdHRyaWIyZikKKyAgICBERUNMQVJFX1BST0MoZ2xWZXJ0
ZXhBdHRyaWIyZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVmVydGV4QXR0cmliM2YpCisgICAgREVD
TEFSRV9QUk9DKGdsVmVydGV4QXR0cmliM2Z2KQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0
dHJpYjRmKQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0dHJpYjRmdikKKyAgICBERUNMQVJF
X1BST0MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKQorCisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgbV9hdHRyczsKKyAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CisgICAgUUdM
V2lkZ2V0KiBtX2dsV2lkZ2V0OworICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0Owor
ICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsKKyAgICBHTHVpbnQgbV90ZXh0dXJlOworICAgIEdM
dWludCBtX21haW5GYm87CisgICAgR0x1aW50IG1fY3VycmVudEZibzsKKyAgICBHTHVpbnQgbV9k
ZXB0aEJ1ZmZlcjsKKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkOworICAgIExpc3RIYXNoU2V0
PHVuc2lnbmVkIGludD4gbV9zeW50aGV0aWNFcnJvcnM7CisKKyAgICBPd25QdHI8RXh0ZW5zaW9u
czNEUXQ+IG1fZXh0ZW5zaW9uczsKKworcHJpdmF0ZToKKworICAgIHZvaWQqIGdldFByb2NBZGRy
ZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7CisgICAgYm9vbCBtX2NvbnRleHRWYWxpZDsKK307CisK
K30KKworI2VuZGlmIC8vIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwCmluZGV4IDE2MTUzOTcuLmVhYjlkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIkV4dGVuc2lvbnMzRFF0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKQEAgLTQyLDI0NCArNDMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiAhZGVmaW5lZChHTGNoYXIpCi10eXBlZGVmIGNoYXIgR0xjaGFyOwotI2VuZGlmCi0KLSNp
ZiAhZGVmaW5lZChHTF9ERVBUSDI0X1NURU5DSUw4KQotI2RlZmluZSBHTF9ERVBUSDI0X1NURU5D
SUw4IDB4ODhGMAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChBUElFTlRSWSkKLSNkZWZpbmUgQVBJ
RU5UUlkKLSNlbmRpZgotCi0jaWZkZWYgUVRfT1BFTkdMX0VTXzIKLXR5cGVkZWYgR0xzaXplaXB0
ciBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYgR0xpbnRwdHIgR0xpbnRwdHJUeXBlOwotI2Vsc2UK
LXR5cGVkZWYgcHRyZGlmZl90IEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBwdHJkaWZmX3QgR0xp
bnRwdHJUeXBlOwotI2VuZGlmCi0KLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQWN0aXZlVGV4
dHVyZVR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBdHRhY2hTaGFk
ZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5k
QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRGcmFtZWJ1ZmZlclR5cGUpIChHTGVudW0sIEdM
dWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRSZW5kZXJidWZmZXJUeXBlKSAo
R0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZENvbG9yVHlw
ZSkgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlKShHTGVudW0sIEdMZW51bSk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSkoR0xlbnVt
IHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJEYXRhVHlwZSkgKEdMZW51bSwgR0xz
aXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCosIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEJ1ZmZlclN1YkRhdGFUeXBlKSAoR0xlbnVtLCBHTGludHB0clR5cGUsIEdMc2l6ZWlw
dHJUeXBlLCBjb25zdCBHTHZvaWQqKTsKLXR5cGVkZWYgR0xlbnVtIChBUElFTlRSWSogZ2xDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbENvbXBpbGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0x1aW50IChBUElFTlRS
WSogZ2xDcmVhdGVQcm9ncmFtVHlwZSkgKCk7Ci10eXBlZGVmIEdMdWludCAoQVBJRU5UUlkqIGds
Q3JlYXRlU2hhZGVyVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERl
bGV0ZUJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdM
dWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVQcm9ncmFtVHlwZSkgKEdM
dWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNUeXBl
KSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
RGVsZXRlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERl
dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChHTHVpbnQpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5cGUpIChHTGVu
dW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRFR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQs
IEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuQnVmZmVyc1R5cGUpIChHTHNp
emVpLCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuZXJhdGVNaXBtYXBU
eXBlKSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkZyYW1l
YnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsR2VuUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0QWN0aXZlQXR0cmliVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNp
emVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0QWN0aXZlVW5pZm9ybVR5cGUpIChHTHVpbnQsIEdMdWludCwgR0xzaXpl
aSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6
ZWkqLCBHTHVpbnQqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBnbEdldEF0dHJpYkxvY2F0
aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xpbnQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBhcmFtcyk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldFByb2dyYW1JbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXpl
aSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3Jh
bWl2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xp
bnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUpIChH
THVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJTb3VyY2VUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBH
THNpemVpKiwgY2hhciopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybUxv
Y2F0aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZXRVbmlmb3JtZnZUeXBlKSAoR0x1aW50LCBHTGludCwgR0xmbG9hdCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZXRVbmlmb3JtaXZUeXBlKSAoR0x1aW50LCBHTGludCwgR0xp
bnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliZnZUeXBlKSAo
R0x1aW50LCBHTGVudW0sIEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0
VmVydGV4QXR0cmliaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2VHlwZSkgKEdMdWludCwgR0xl
bnVtLCBHTHZvaWQqKik7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNCdWZmZXJU
eXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc0ZyYW1lYnVm
ZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNQcm9n
cmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNSZW5k
ZXJidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJ
c1NoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xMaW5rUHJv
Z3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2FtcGxlQ292ZXJhZ2VUeXBlKSAoR0xjbGFtcGYsIEdMYm9v
bGVhbik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNoYWRlclNvdXJjZVR5cGUpIChHTHVp
bnQsIEdMc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xp
bnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxNYXNrU2VwYXJh
dGVUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVu
Y2lsT3BTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0pOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZUeXBlKSAoR0xpbnQsIEdMZmxvYXQpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZ2VHlwZSkgKEdMaW50LCBHTHNpemVp
LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xaVR5
cGUpIChHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWl2
VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtMmZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25z
dCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yaVR5cGUpIChH
TGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJp
dlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybTNmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNmdlR5cGUpIChHTGludCwgR0xz
aXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3Jt
M2lUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtM2l2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGZUeXBlKSAoR0xpbnQsIEdMZmxvYXQs
IEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xV
bmlmb3JtNGZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBH
TGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGl2VHlwZSkg
KEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtTWF0cml4MmZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDNmdlR5
cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xV
c2VQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZhbGlk
YXRlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0
ZXhBdHRyaWIxZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjJmVHlwZSkgKEdMdWludCwg
Y29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFZlcnRleEF0dHJpYjJmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliM2ZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZs
b2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVmVydGV4QXR0cmliM2Z2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZlR5cGUpIChHTHVpbnQsIGNvbnN0
IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlKSAoR0x1aW50LCBj
b25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYlBv
aW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTGJvb2xlYW4sIEdMc2l6ZWksIGNv
bnN0IEdMdm9pZCopOwotCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsIDogcHVibGlj
IFFHcmFwaGljc09iamVjdCB7Ci1wdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdyk7Ci0gICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKLQotICAgIGJvb2wgaXND
b250ZXh0VmFsaWQoKSB7IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQotICAgIFFHTFdpZGdldCog
Z2V0Vmlld3BvcnRHTFdpZGdldCgpOwotICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBR
U3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7Ci0gICAgUVJlY3RGIGJvdW5kaW5n
UmVjdCgpIGNvbnN0OwotCi0gICAgZ2xBY3RpdmVUZXh0dXJlVHlwZSBhY3RpdmVUZXh0dXJlOwot
ICAgIGdsQXR0YWNoU2hhZGVyVHlwZSBhdHRhY2hTaGFkZXI7Ci0gICAgZ2xCaW5kQXR0cmliTG9j
YXRpb25UeXBlIGJpbmRBdHRyaWJMb2NhdGlvbjsKLSAgICBnbEJpbmRCdWZmZXJUeXBlIGJpbmRC
dWZmZXI7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXJUeXBlIGJpbmRGcmFtZWJ1ZmZlcjsKLSAgICBn
bEJpbmRSZW5kZXJidWZmZXJUeXBlIGJpbmRSZW5kZXJidWZmZXI7Ci0gICAgZ2xCbGVuZENvbG9y
VHlwZSBibGVuZENvbG9yOwotICAgIGdsQmxlbmRFcXVhdGlvblR5cGUgYmxlbmRFcXVhdGlvbjsK
LSAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUgYmxlbmRFcXVhdGlvblNlcGFyYXRlOwot
ICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlIGJsZW5kRnVuY1NlcGFyYXRlOwotICAgIGdsQnVm
ZmVyRGF0YVR5cGUgYnVmZmVyRGF0YTsKLSAgICBnbEJ1ZmZlclN1YkRhdGFUeXBlIGJ1ZmZlclN1
YkRhdGE7Ci0gICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzVHlwZSBjaGVja0ZyYW1lYnVmZmVy
U3RhdHVzOwotICAgIGdsQ29tcGlsZVNoYWRlclR5cGUgY29tcGlsZVNoYWRlcjsKLSAgICBnbENy
ZWF0ZVByb2dyYW1UeXBlIGNyZWF0ZVByb2dyYW07Ci0gICAgZ2xDcmVhdGVTaGFkZXJUeXBlIGNy
ZWF0ZVNoYWRlcjsKLSAgICBnbERlbGV0ZUJ1ZmZlcnNUeXBlIGRlbGV0ZUJ1ZmZlcnM7Ci0gICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlIGRlbGV0ZUZyYW1lYnVmZmVyczsKLSAgICBnbERlbGV0
ZVByb2dyYW1UeXBlIGRlbGV0ZVByb2dyYW07Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzVHlw
ZSBkZWxldGVSZW5kZXJidWZmZXJzOwotICAgIGdsRGVsZXRlU2hhZGVyVHlwZSBkZWxldGVTaGFk
ZXI7Ci0gICAgZ2xEZXRhY2hTaGFkZXJUeXBlIGRldGFjaFNoYWRlcjsKLSAgICBnbERpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheVR5cGUgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXJUeXBlIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyOwotICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlIGZyYW1lYnVmZmVyVGV4dHVyZTJEOwotICAgIGds
R2VuQnVmZmVyc1R5cGUgZ2VuQnVmZmVyczsKLSAgICBnbEdlbmVyYXRlTWlwbWFwVHlwZSBnZW5l
cmF0ZU1pcG1hcDsKLSAgICBnbEdlbkZyYW1lYnVmZmVyc1R5cGUgZ2VuRnJhbWVidWZmZXJzOwot
ICAgIGdsR2VuUmVuZGVyYnVmZmVyc1R5cGUgZ2VuUmVuZGVyYnVmZmVyczsKLSAgICBnbEdldEFj
dGl2ZUF0dHJpYlR5cGUgZ2V0QWN0aXZlQXR0cmliOwotICAgIGdsR2V0QWN0aXZlVW5pZm9ybVR5
cGUgZ2V0QWN0aXZlVW5pZm9ybTsKLSAgICBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUgZ2V0QXR0
YWNoZWRTaGFkZXJzOwotICAgIGdsR2V0QXR0cmliTG9jYXRpb25UeXBlIGdldEF0dHJpYkxvY2F0
aW9uOwotICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldEJ1ZmZlclBhcmFtZXRlcml2
OwotICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZUeXBlIGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2OwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBl
IGdldFByb2dyYW1JbmZvTG9nOwotICAgIGdsR2V0UHJvZ3JhbWl2VHlwZSBnZXRQcm9ncmFtaXY7
Ci0gICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXY7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSBnZXRTaGFkZXJJbmZvTG9nOwot
ICAgIGdsR2V0U2hhZGVyaXZUeXBlIGdldFNoYWRlcml2OwotICAgIGdsR2V0U2hhZGVyU291cmNl
VHlwZSBnZXRTaGFkZXJTb3VyY2U7Ci0gICAgZ2xHZXRVbmlmb3JtZnZUeXBlIGdldFVuaWZvcm1m
djsKLSAgICBnbEdldFVuaWZvcm1pdlR5cGUgZ2V0VW5pZm9ybWl2OwotICAgIGdsR2V0VW5pZm9y
bUxvY2F0aW9uVHlwZSBnZXRVbmlmb3JtTG9jYXRpb247Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJm
dlR5cGUgZ2V0VmVydGV4QXR0cmliZnY7Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUgZ2V0
VmVydGV4QXR0cmliaXY7Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUgZ2V0VmVy
dGV4QXR0cmliUG9pbnRlcnY7Ci0gICAgZ2xJc0J1ZmZlclR5cGUgaXNCdWZmZXI7Ci0gICAgZ2xJ
c0ZyYW1lYnVmZmVyVHlwZSBpc0ZyYW1lYnVmZmVyOwotICAgIGdsSXNQcm9ncmFtVHlwZSBpc1By
b2dyYW07Ci0gICAgZ2xJc1JlbmRlcmJ1ZmZlclR5cGUgaXNSZW5kZXJidWZmZXI7Ci0gICAgZ2xJ
c1NoYWRlclR5cGUgaXNTaGFkZXI7Ci0gICAgZ2xMaW5rUHJvZ3JhbVR5cGUgbGlua1Byb2dyYW07
Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlVHlwZSByZW5kZXJidWZmZXJTdG9yYWdlOwotICAg
IGdsU2FtcGxlQ292ZXJhZ2VUeXBlIHNhbXBsZUNvdmVyYWdlOwotICAgIGdsU2hhZGVyU291cmNl
VHlwZSBzaGFkZXJTb3VyY2U7Ci0gICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSBzdGVuY2ls
RnVuY1NlcGFyYXRlOwotICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUgc3RlbmNpbE1hc2tT
ZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSBzdGVuY2lsT3BTZXBhcmF0ZTsK
LSAgICBnbFVuaWZvcm0xZlR5cGUgdW5pZm9ybTFmOwotICAgIGdsVW5pZm9ybTFmdlR5cGUgdW5p
Zm9ybTFmdjsKLSAgICBnbFVuaWZvcm0xaVR5cGUgdW5pZm9ybTFpOwotICAgIGdsVW5pZm9ybTFp
dlR5cGUgdW5pZm9ybTFpdjsKLSAgICBnbFVuaWZvcm0yZlR5cGUgdW5pZm9ybTJmOwotICAgIGds
VW5pZm9ybTJmdlR5cGUgdW5pZm9ybTJmdjsKLSAgICBnbFVuaWZvcm0yaVR5cGUgdW5pZm9ybTJp
OwotICAgIGdsVW5pZm9ybTJpdlR5cGUgdW5pZm9ybTJpdjsKLSAgICBnbFVuaWZvcm0zZlR5cGUg
dW5pZm9ybTNmOwotICAgIGdsVW5pZm9ybTNmdlR5cGUgdW5pZm9ybTNmdjsKLSAgICBnbFVuaWZv
cm0zaVR5cGUgdW5pZm9ybTNpOwotICAgIGdsVW5pZm9ybTNpdlR5cGUgdW5pZm9ybTNpdjsKLSAg
ICBnbFVuaWZvcm00ZlR5cGUgdW5pZm9ybTRmOwotICAgIGdsVW5pZm9ybTRmdlR5cGUgdW5pZm9y
bTRmdjsKLSAgICBnbFVuaWZvcm00aVR5cGUgdW5pZm9ybTRpOwotICAgIGdsVW5pZm9ybTRpdlR5
cGUgdW5pZm9ybTRpdjsKLSAgICBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlIHVuaWZvcm1NYXRyaXgy
ZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4M2Z2VHlwZSB1bmlmb3JtTWF0cml4M2Z2OwotICAgIGds
VW5pZm9ybU1hdHJpeDRmdlR5cGUgdW5pZm9ybU1hdHJpeDRmdjsKLSAgICBnbFVzZVByb2dyYW1U
eXBlIHVzZVByb2dyYW07Ci0gICAgZ2xWYWxpZGF0ZVByb2dyYW1UeXBlIHZhbGlkYXRlUHJvZ3Jh
bTsKLSAgICBnbFZlcnRleEF0dHJpYjFmVHlwZSB2ZXJ0ZXhBdHRyaWIxZjsKLSAgICBnbFZlcnRl
eEF0dHJpYjFmdlR5cGUgdmVydGV4QXR0cmliMWZ2OwotICAgIGdsVmVydGV4QXR0cmliMmZUeXBl
IHZlcnRleEF0dHJpYjJmOwotICAgIGdsVmVydGV4QXR0cmliMmZ2VHlwZSB2ZXJ0ZXhBdHRyaWIy
ZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUgdmVydGV4QXR0cmliM2Y7Ci0gICAgZ2xWZXJ0
ZXhBdHRyaWIzZnZUeXBlIHZlcnRleEF0dHJpYjNmdjsKLSAgICBnbFZlcnRleEF0dHJpYjRmVHlw
ZSB2ZXJ0ZXhBdHRyaWI0ZjsKLSAgICBnbFZlcnRleEF0dHJpYjRmdlR5cGUgdmVydGV4QXR0cmli
NGZ2OwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUgdmVydGV4QXR0cmliUG9pbnRlcjsK
LQotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7Ci0gICAgSG9zdFdp
bmRvdyogbV9ob3N0V2luZG93OwotICAgIFFHTFdpZGdldCogbV9nbFdpZGdldDsKLSAgICBRR0xX
aWRnZXQqIG1fdmlld3BvcnRHTFdpZGdldDsKLSAgICBRUmVjdEYgbV9ib3VuZGluZ1JlY3Q7Ci0g
ICAgR0x1aW50IG1fdGV4dHVyZTsKLSAgICBHTHVpbnQgbV9tYWluRmJvOwotICAgIEdMdWludCBt
X2N1cnJlbnRGYm87Ci0gICAgR0x1aW50IG1fZGVwdGhCdWZmZXI7Ci0gICAgYm9vbCBtX2xheWVy
Q29tcG9zaXRlZDsKLSAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBpbnQ+IG1fc3ludGhldGljRXJy
b3JzOwotCi0gICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4dGVuc2lvbnM7Ci0KLXByaXZh
dGU6Ci0KLSAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwotICAg
IGJvb2wgbV9jb250ZXh0VmFsaWQ7Ci19OwotCi0jaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIp
IAotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNlCi0jZGVmaW5lIEdF
VF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9j
QWRkcmVzcygjUHJvYykpOwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIGRlZmluZWQgKFFUX09QRU5HTF9FU18yKQpAQCAt
MzMwLDk2ICs5Myw5NiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dAogCiAgICAgbV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKIAotICAgIGFjdGl2ZVRleHR1cmUgPSBHRVRfUFJPQ19BRERSRVNT
KGdsQWN0aXZlVGV4dHVyZSk7Ci0gICAgYXR0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhn
bEF0dGFjaFNoYWRlcik7Ci0gICAgYmluZEF0dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVT
UyhnbEJpbmRBdHRyaWJMb2NhdGlvbik7Ci0gICAgYmluZEJ1ZmZlciA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xCaW5kQnVmZmVyKTsKLSAgICBiaW5kRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNT
KGdsQmluZEZyYW1lYnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQURE
UkVTUyhnbEJpbmRSZW5kZXJidWZmZXIpOwotICAgIGJsZW5kQ29sb3IgPSBHRVRfUFJPQ19BRERS
RVNTKGdsQmxlbmRDb2xvcik7Ci0gICAgYmxlbmRFcXVhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xCbGVuZEVxdWF0aW9uKTsKLSAgICBibGVuZEVxdWF0aW9uU2VwYXJhdGUgPSBHRVRfUFJPQ19B
RERSRVNTKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKTsKLSAgICBibGVuZEZ1bmNTZXBhcmF0ZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEZ1bmNTZXBhcmF0ZSk7Ci0gICAgYnVmZmVyRGF0YSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJEYXRhKTsKLSAgICBidWZmZXJTdWJEYXRhID0gR0VU
X1BST0NfQUREUkVTUyhnbEJ1ZmZlclN1YkRhdGEpOwotICAgIGNoZWNrRnJhbWVidWZmZXJTdGF0
dXMgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk7Ci0gICAgY29t
cGlsZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDb21waWxlU2hhZGVyKTsKLSAgICBjcmVh
dGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVByb2dyYW0pOwotICAgIGNyZWF0
ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVTaGFkZXIpOwotICAgIGRlbGV0ZUJ1
ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlQnVmZmVycyk7Ci0gICAgZGVsZXRlRnJh
bWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUZyYW1lYnVmZmVycyk7Ci0gICAg
ZGVsZXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVQcm9ncmFtKTsKLSAgICBk
ZWxldGVSZW5kZXJidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVJlbmRlcmJ1ZmZl
cnMpOwotICAgIGRlbGV0ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVTaGFkZXIp
OwotICAgIGRldGFjaFNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZXRhY2hTaGFkZXIpOwot
ICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkpOwotICAgIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BS
T0NfQUREUkVTUyhnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBmcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik7
Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJlMkQgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQpOwotICAgIGdlbkJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2VuQnVm
ZmVycyk7Ci0gICAgZ2VuZXJhdGVNaXBtYXAgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2VuZXJhdGVN
aXBtYXApOwotICAgIGdlbkZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5GcmFt
ZWJ1ZmZlcnMpOwotICAgIGdlblJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2Vu
UmVuZGVyYnVmZmVycyk7Ci0gICAgZ2V0QWN0aXZlQXR0cmliID0gR0VUX1BST0NfQUREUkVTUyhn
bEdldEFjdGl2ZUF0dHJpYik7Ci0gICAgZ2V0QWN0aXZlVW5pZm9ybSA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZXRBY3RpdmVVbmlmb3JtKTsKLSAgICBnZXRBdHRhY2hlZFNoYWRlcnMgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0QXR0YWNoZWRTaGFkZXJzKTsKLSAgICBnZXRBdHRyaWJMb2NhdGlvbiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRyaWJMb2NhdGlvbik7Ci0gICAgZ2V0QnVmZmVyUGFy
YW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYpOwotICAg
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhn
bEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTsKLSAgICBnZXRQcm9ncmFtSW5m
b0xvZyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtSW5mb0xvZyk7Ci0gICAgZ2V0UHJv
Z3JhbWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1pdik7Ci0gICAgZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYpOwotICAgIGdldFNoYWRlckluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0
U2hhZGVySW5mb0xvZyk7Ci0gICAgZ2V0U2hhZGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0
U2hhZGVyaXYpOwotICAgIGdldFNoYWRlclNvdXJjZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRT
aGFkZXJTb3VyY2UpOwotICAgIGdldFVuaWZvcm1mdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRV
bmlmb3JtZnYpOwotICAgIGdldFVuaWZvcm1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlm
b3JtaXYpOwotICAgIGdldFVuaWZvcm1Mb2NhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRV
bmlmb3JtTG9jYXRpb24pOwotICAgIGdldFZlcnRleEF0dHJpYmZ2ID0gR0VUX1BST0NfQUREUkVT
UyhnbEdldFZlcnRleEF0dHJpYmZ2KTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJpdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJpdik7Ci0gICAgZ2V0VmVydGV4QXR0cmliUG9pbnRl
cnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYpOwotICAgIGlz
QnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzQnVmZmVyKTsKLSAgICBpc0ZyYW1lYnVmZmVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbElzRnJhbWVidWZmZXIpOwotICAgIGlzUHJvZ3JhbSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xJc1Byb2dyYW0pOwotICAgIGlzUmVuZGVyYnVmZmVyID0gR0VUX1BS
T0NfQUREUkVTUyhnbElzUmVuZGVyYnVmZmVyKTsKLSAgICBpc1NoYWRlciA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xJc1NoYWRlcik7Ci0gICAgbGlua1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGds
TGlua1Byb2dyYW0pOwotICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgPSBHRVRfUFJPQ19BRERSRVNT
KGdsUmVuZGVyYnVmZmVyU3RvcmFnZSk7Ci0gICAgc2FtcGxlQ292ZXJhZ2UgPSBHRVRfUFJPQ19B
RERSRVNTKGdsU2FtcGxlQ292ZXJhZ2UpOwotICAgIHNoYWRlclNvdXJjZSA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xTaGFkZXJTb3VyY2UpOwotICAgIHN0ZW5jaWxGdW5jU2VwYXJhdGUgPSBHRVRfUFJP
Q19BRERSRVNTKGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSk7Ci0gICAgc3RlbmNpbE1hc2tTZXBhcmF0
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsTWFza1NlcGFyYXRlKTsKLSAgICBzdGVuY2ls
T3BTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsT3BTZXBhcmF0ZSk7Ci0gICAg
dW5pZm9ybTFmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZik7Ci0gICAgdW5pZm9ybTFm
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWZ2KTsKLSAgICB1bmlmb3JtMWkgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpKTsKLSAgICB1bmlmb3JtMWl2ID0gR0VUX1BST0NfQURE
UkVTUyhnbFVuaWZvcm0xaXYpOwotICAgIHVuaWZvcm0yZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtMmYpOwotICAgIHVuaWZvcm0yZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJm
dik7Ci0gICAgdW5pZm9ybTJpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaSk7Ci0gICAg
dW5pZm9ybTJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMml2KTsKLSAgICB1bmlmb3Jt
M2YgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmKTsKLSAgICB1bmlmb3JtM2Z2ID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZnYpOwotICAgIHVuaWZvcm0zaSA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtM2kpOwotICAgIHVuaWZvcm0zaXYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTNpdik7Ci0gICAgdW5pZm9ybTRmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00
Zik7Ci0gICAgdW5pZm9ybTRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGZ2KTsKLSAg
ICB1bmlmb3JtNGkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpKTsKLSAgICB1bmlmb3Jt
NGl2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aXYpOwotICAgIHVuaWZvcm1NYXRyaXgy
ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDJmdik7Ci0gICAgdW5pZm9ybU1h
dHJpeDNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4M2Z2KTsKLSAgICB1bmlm
b3JtTWF0cml4NGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXg0ZnYpOwotICAg
IHVzZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVXNlUHJvZ3JhbSk7Ci0gICAgdmFsaWRh
dGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFZhbGlkYXRlUHJvZ3JhbSk7Ci0gICAgdmVy
dGV4QXR0cmliMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMWYpOwotICAgIHZl
cnRleEF0dHJpYjFmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZnYpOwotICAg
IHZlcnRleEF0dHJpYjJmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjJmKTsKLSAg
ICB2ZXJ0ZXhBdHRyaWIyZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMmZ2KTsK
LSAgICB2ZXJ0ZXhBdHRyaWIzZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIzZik7
Ci0gICAgdmVydGV4QXR0cmliM2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjNm
dik7Ci0gICAgdmVydGV4QXR0cmliNGYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmli
NGYpOwotICAgIHZlcnRleEF0dHJpYjRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRy
aWI0ZnYpOwotICAgIHZlcnRleEF0dHJpYlBvaW50ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliUG9pbnRlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEFjdGl2ZVRleHR1cmUp
OworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xBdHRhY2hTaGFkZXIpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCaW5k
QnVmZmVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQmluZEZyYW1lYnVmZmVyKTsKKyAgICBT
RVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbEJsZW5kQ29sb3IpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2VwYXJhdGUpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xCdWZmZXJEYXRhKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Cisg
ICAgU0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xDb21waWxlU2hhZGVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQ3Jl
YXRlUHJvZ3JhbSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7CisgICAg
U0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUJ1ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVQcm9n
cmFtKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlUmVuZGVyYnVmZmVycyk7CisgICAg
U0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVNoYWRlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bERldGFjaFNoYWRlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbERpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOworICAg
IFNFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbEdlbkJ1ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5lcmF0ZU1p
cG1hcCk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdlbkZyYW1lYnVmZmVycyk7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbEdlblJlbmRlcmJ1ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xHZXRBY3RpdmVBdHRyaWIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVVbmlm
b3JtKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0YWNoZWRTaGFkZXJzKTsKKyAgICBT
RVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9jYXRpb24pOworICAgIFNFVF9QUk9DX0FERFJF
U1MoZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
R2V0UHJvZ3JhbUluZm9Mb2cpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtaXYp
OworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik7Cisg
ICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlckluZm9Mb2cpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJpdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlclNv
dXJjZSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1mdik7CisgICAgU0VUX1BS
T0NfQUREUkVTUyhnbEdldFVuaWZvcm1pdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFVu
aWZvcm1Mb2NhdGlvbik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYmZ2
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydik7CisgICAgU0VUX1BST0NfQURE
UkVTUyhnbElzQnVmZmVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7
CisgICAgU0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbElzUmVuZGVyYnVmZmVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsSXNTaGFkZXIpOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVD
b3ZlcmFnZSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpOworICAgIFNFVF9QUk9DX0FERFJF
U1MoZ2xTdGVuY2lsTWFza1NlcGFyYXRlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNp
bE9wU2VwYXJhdGUpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWYpOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5p
Zm9ybTFpKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7CisgICAgU0VUX1BS
T0NfQUREUkVTUyhnbFVuaWZvcm0yZik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0y
ZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmkpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtMml2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbFVuaWZvcm0zaSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaXYpOworICAg
IFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtNGZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpKTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm1NYXRyaXgyZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4M2Z2KTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDRmdik7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbFVzZVByb2dyYW0pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWYWxpZGF0ZVBy
b2dyYW0pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZik7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjFmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjJmKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMmZ2
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliM2YpOworICAgIFNFVF9QUk9D
X0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIzZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0
ZXhBdHRyaWI0Zik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjRmdik7Cisg
ICAgU0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOwogCiAgICAgaWYgKCFt
X2NvbnRleHRWYWxpZCkgewogICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBB
bGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7CkBAIC00MzYs
MjYgKzE5OSwyNiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dAogICAgIGdsVGV4SW1hZ2UyRChH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IDEsIDEsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCk7CiAKLSAgICBnZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fbWFp
bkZibyk7CisgICAgX2dsR2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX21haW5GYm8p
OwogICAgIG1fY3VycmVudEZibyA9IG1fbWFpbkZibzsKIAotICAgIGJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7CisgICAgX2dsQmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsKIAot
ICAgIGdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhCdWZmZXIpOwotICAg
IGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0
aEJ1ZmZlcik7CisgICAgX2dsR2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9kZXB0
aEJ1ZmZlcik7CisgICAgX2dsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQot
ICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCAvKiB3aWR0aCAqLyAxLCAvKiBo
ZWlnaHQgKi8gMSk7CisgICAgX2dsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIC8q
IHdpZHRoICovIDEsIC8qIGhlaWdodCAqLyAxKTsKICNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3Rv
cmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQ09NUE9ORU5ULCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7CisgICAgX2ds
UmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQg
Ki8gMSk7CiAjZW5kaWYKIAotICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgMCk7Ci0gCi0gICAgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUsIDApOwotICAgIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5E
RVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgIF9nbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7CisKKyAgICBfZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVy
ZSwgMCk7CisgICAgX2dsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAgICAgZ2xDbGVhckNv
bG9yKC8qIHJlZCAqLyAwLCAvKiBncmVlbiAqLyAwLCAvKiBibHVlICovIDAsIC8qIGFscGhhICov
IDApOwogCi0gICAgaWYgKGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKKyAgICBpZiAoX2dsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkg
ewogICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJsZSB0byBj
cmVhdGUgdGhlIG1haW4gZnJhbWVidWZmZXIiKTsKICAgICAgICAgbV9jb250ZXh0VmFsaWQgPSBm
YWxzZTsKICAgICB9CkBAIC01MDQsMTAgKzI2NywxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFw
aAogICAgIHF1aW50MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4o
b2Zmc2NyZWVuSW1hZ2UuYml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9t
YWluRmJvKTsKKyAgICBfZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX21haW5GYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8g
MCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAotICAgIGJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZi
byk7CisgICAgX2dsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9jdXJyZW50RmJvKTsKIAogICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJp
dHMsIGFuZCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVl
ZCBSR0IzMiBvciBBUkdCMzJfUE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCkBA
IC02MjksMTkgKzM5MiwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwg
aGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNz
Q29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwogICAgIGdsQmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogICAgCi0gICAgbV9pbnRlcm5h
bC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9pbnRl
cm5hbC0+bV9tYWluRmJvKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9p
bnRlcm5hbC0+bV9tYWluRmJvKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CiAjaWYgZGVm
aW5lZChRVF9PUEVOR0xfRVNfMikKICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQx
Niwgd2lkdGgsIGhlaWdodCk7CiAjZWxzZQogICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBP
TkVOVCwgd2lkdGgsIGhlaWdodCk7CiAjZW5kaWYKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworICAgIGdsQmluZFJl
bmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKICAgICAKLSAg
ICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSwgMCk7Ci0gICAgbV9p
bnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CisgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSwgMCk7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2lu
dGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKIAotICAgIEdMZW51bSBzdGF0dXMgPSBtX2ludGVybmFs
LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7
CisgICAgR0xlbnVtIHN0YXR1cyA9IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIpOwogICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3ND
b250ZXh0M0Q6IFdhc24ndCBhYmxlIHRvIHJlc2hhcGUgdGhlIG1haW4gZnJhbWVidWZmZXIiKTsK
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTY1OSw3ICs0MjIsNyBAQCBJbnRTaXplIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5hY3Rp
dmVUZXh0dXJlKHRleHR1cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC02NjcsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
UGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVy
KTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsQXR0YWNoU2hhZGVy
KHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFj
aGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtYXhDb3VudCwg
R0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykKQEAgLTY4NSwyNiAr
NDQ4LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluCiB7CiAgICAgQVNTRVJUKHByb2dyYW0p
OwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kQnVmZmVyKHRh
cmdldCwgYnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogICAgIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZlciA/IGJ1
ZmZlciA6IG1faW50ZXJuYWwtPm1fbWFpbkZibzsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVi
dWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8pOworICAgIGdsQmluZEZyYW1l
YnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJl
bmRlcmJ1ZmZlcik7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVy
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC03MTYsMTkgKzQ3OSwxOSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IoR0Mz
RGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1w
ZiBhbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAg
IGdsQmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1
YXRpb24obW9kZSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uKG1vZGUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0Mz
RGVudW0gbW9kZUFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1v
ZGVBbHBoYSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhh
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0
b3IsIEdDM0RlbnVtIGRmYWN0b3IpCkBAIC03NDAsMzEgKzUwMywzMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JH
QiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFs
cGhhKTsKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwg
ZHN0QWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVm
ZmVyRGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOworICAgIGdsQnVmZmVy
RGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNp
emUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXpl
LCBkYXRhLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRh
dGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBz
aXplLCBkYXRhKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRh
dGEpOwogfQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdD
M0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBAIC04MDUsNyArNTY4LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmNvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNE
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC04NTMsNyArNjE2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQo
c2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRp
c2FibGUoR0MzRGVudW0gY2FwKQpAQCAtODY1LDcgKzYyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRl
eCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9k
ZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtODg5LDcgKzY1Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkKQEAg
LTkwNywxMyArNjcwLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQs
IGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwg
bGV2ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC05MjUsNyArNjg4LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZW5lcmF0ZU1pcG1h
cCh0YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKIH0KIAogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC05MzgsMTQgKzcwMSwxNCBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEdWludCBpbmRleAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdl
dFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9N
QVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFw
aGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsK
IAogICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAg
ICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVu
dW0gdHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwg
aW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAg
Z2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgs
ICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAg
ZmFzdEZyZWUobmFtZSk7CkBAIC05NzAsMTQgKzczMywxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQg
aW5kZQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBH
TGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihzdGF0aWNf
Y2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1f
TUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8
R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9M
RU5HVEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RN
YWxsb2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50
IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFj
dGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0
aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVVbmlm
b3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZuYW1l
TGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAg
ICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtOTk4LDcgKzc2MSw3IEBAIGludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmli
dXRlcygpCkBAIC0xMDM3LDcgKzgwMCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNE
Ojppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZB
TFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNC
dWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5h
YmxlZChHQzNEZW51bSBjYXApCkBAIC0xMDUyLDcgKzgxNSw3IEBAIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIp
CiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0ZyYW1lYnVmZmVy
KGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsK
IH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCkBAIC0xMDYxLDcgKzgyNCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAgICBy
ZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQcm9ncmFtKHByb2dyYW0pOworICAg
IHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQpA
QCAtMTA3MCw3ICs4MzMsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiAgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwor
ICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
QEAgLTEwNzksNyArODQyLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAg
ICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1
cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gZ2xJc1NoYWRlcihz
aGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTExMDEsNyArODY0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsTGlua1By
b2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVp
KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTExNTIsMTMgKzkxNSwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYK
LSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CisgICAgZ2xTYW1wbGVDb3ZlcmFn
ZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihH
QzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpA
QCAtMTE4NCw3ICs5NDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2Uo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogICAgIENTdHJpbmcg
c291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hhciogZGF0YSA9
IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVuZ3RoID0gcHJlZml4ZWRTb3VyY2UubGVuZ3Ro
KCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyogY291
bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAgIGdsU2hhZGVyU291cmNlKChHTHVpbnQpIHNo
YWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVp
bnQgbWFzaykKQEAgLTExOTYsNyArOTU5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdD
M0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbEZ1
bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3RlbmNpbEZ1bmNTZXBh
cmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTIwOCw3ICs5NzEsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBt
YXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICBnbFN0ZW5j
aWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3Mp
CkBAIC0xMjIwLDcgKzk4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChH
QzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBm
YWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2lsT3BTZXBh
cmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9wU2VwYXJhdGUo
ZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZs
b2F0IHZhbHVlKQpAQCAtMTIzOCwxMTUgKzEwMDEsMTE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlm
b3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0x
ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9ybTJmKGxvY2F0
aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
M2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9h
dCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgZ2xVbmlm
b3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxv
YXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmKGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZv
cm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00ZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWkobG9jYXRpb24sIHYw
KTsKKyAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0Rp
bnQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3Jt
MmkobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGlu
dCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgZ2xVbmlm
b3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkg
c2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVu
aWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEs
IEdDM0RpbnQgdjIsIEdDM0RpbnQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGkobG9jYXRpb24sIHYwLCB2
MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aXYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJp
eDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
YXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwg
c2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMzU0
LDcgKzExMTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51c2VQcm9n
cmFtKHByb2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkK
QEAgLTEzNjIsNjEgKzExMjUsNjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAg
ICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT52YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xWYWxpZGF0ZVByb2dyYW0o
cHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwg
djApOworICAgIGdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFy
cmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliMmZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52
ZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZihp
bmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0
dHJpYjNmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxv
YXQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOworICAg
IGdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQq
IGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0
ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51
bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50
cHRyIG9mZnNldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUs
IG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+
KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQpCkBAIC0xNDM0LDcgKzExOTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldEJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVl
KQpAQCAtMTQ0Niw3ICsxMjA5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2
KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RpbnQqIHZhbHVlKQpAQCAtMTQ1OCw3ICsxMjIxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFt
aXYocHJvZ3JhbSwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ2Niw3ICsxMjI5
LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgp
OworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xP
R19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKIApAQCAtMTQ3NCw3
ICsxMjM3LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4g
IiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgs
ICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwg
JnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShp
bmZvKTsKQEAgLTE0ODUsMTQgKzEyNDgsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0Rl
bnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5nZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0U2hhZGVy
aXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMTUwMCwx
NCArMTI2MywxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVu
Z3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9f
TE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIEdMY2hh
ciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAgICAgaWYgKCFpbmZvKQog
ICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJJbmZvTG9nKHNo
YWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRl
ciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAg
IGZhc3RGcmVlKGluZm8pOwpAQCAtMTUyMCwxNCArMTI4MywxNCBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3Ro
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4
dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRTaGFkZXJpdihz
aGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSCwgJmxlbmd0aCk7
CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBm
YXN0TWFsbG9jKGxlbmd0aCk7CiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gIiI7CiAK
LSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgsICZzaXplLCBp
bmZvKTsKKyAgICBnbEdldFNoYWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8p
OwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE1
NTAsMTMgKzEzMTMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVy
aXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEcKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIEdDM0RpbnQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkKQEAgLTE1NjQsMTkgKzEzMjcsMTkgQEAgR0MzRGludCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJm
dihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRl
eCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUp
OworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQog
CiBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lKQpAQCAtMTU4NCw3ICsxMzQ3LDcgQEAg
R0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RlbnVtIHAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIAogICAgIEdMdm9pZCogcG9pbnRlciA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFtTmFtZSwgJnBvaW50ZXIpOwor
ICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFtTmFtZSwgJnBvaW50ZXIp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMTYwNSw3ICsxMzY4LDcgQEAgUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwot
ICAgIG1faW50ZXJuYWwtPmdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAg
Z2xHZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7
CiB9CiAKQEAgLTE2MTMsMjggKzEzNzYsMjggQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuRnJh
bWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CiB9
CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0oKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJu
IG1faW50ZXJuYWwtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICByZXR1cm4gZ2xDcmVhdGVQcm9ncmFt
KCk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
ICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5SZW5kZXJidWZmZXJz
KC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCiBQbGF0Zm9ybTNET2Jq
ZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2lu
dGVybmFsLT5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAgcmV0dXJuIGdsQ3JlYXRlU2hhZGVyKHR5
cGUpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0
dXJlKCkKQEAgLTE2NDgsMzEgKzE0MTEsMzEgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVC
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVCdWZmZXJzKDEsICZi
dWZmZXIpOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1
ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmRlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOworICAgIGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRl
cmJ1ZmZlcik7CisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5kZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbERlbGV0ZVNoYWRl
cihzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87061</attachid>
            <date>2011-03-27 00:35:10 -0700</date>
            <delta_ts>2011-03-27 00:55:36 -0700</delta_ts>
            <desc>Fixed ChangeLog entry.</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>84346</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjI2ZmQxLi4xOGJjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEy
IEBACisyMDExLTAzLTI3ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYXNrIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIEdMIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAorCisgICAgICAgIE1vZGlmaWVk
IE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgaW4gUXQgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdG8gbWFzayB0aGUgdXNlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRo
YXQgd2UgY2FuIGFkYXB0IHRvIGRpZmZlcmVudAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9y
IE9wZW5HTCBjYWxscy4gQ2xlYW5lZCB1cCBzeW1ib2wgcmVzb2x2ZXIgaW4gb3JkZXIKKyAgICAg
ICAgc2ltcGxpZnkgdGhlIGRlY2xyYXRpb24gb2YgbmV3IHN5bWJvbHMuCisKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzREludGVybmFsUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjppc0NvbnRleHRWYWxpZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVu
ZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZm
ZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpj
b21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXRh
Y2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omlz
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1No
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFy
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0x
aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dXNl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQ
cm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIxZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIy
Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0Zik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRl
bGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
U2hhZGVyKToKKwogMjAxMS0wMy0yNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwZWY4
ZWRhLi45NDRiMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzQxMCw3ICszNDEwLDggQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBc
Ci0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaCBcCisgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCiAKICAgICAhdjggewog
ICAgICAgICBTT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQxYTVjMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWxRdC5oCkBAIC0wLDAgKzEsNjI5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAx
MCBUaWV0byBDb3Jwb3JhdGlvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgICAgIAorICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorKi8K
KworI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzREludGVybmFsUXRfaAorI2RlZmluZSBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsUXRfaAorCisjaW5jbHVkZSA8UUdyYXBoaWNzT2JqZWN0PgorI2lu
Y2x1ZGUgPFFHTENvbnRleHQ+CisKKyNpZiAhZGVmaW5lZChHTGNoYXIpCit0eXBlZGVmIGNoYXIg
R0xjaGFyOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChHTF9ERVBUSDI0X1NURU5DSUw4KQorI2Rl
ZmluZSBHTF9ERVBUSDI0X1NURU5DSUw4IDB4ODhGMAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChB
UElFTlRSWSkKKyNkZWZpbmUgQVBJRU5UUlkKKyNlbmRpZgorCisjaWZkZWYgUVRfT1BFTkdMX0VT
XzIKK3R5cGVkZWYgR0xzaXplaXB0ciBHTHNpemVpcHRyVHlwZTsKK3R5cGVkZWYgR0xpbnRwdHIg
R0xpbnRwdHJUeXBlOworI2Vsc2UKK3R5cGVkZWYgcHRyZGlmZl90IEdMc2l6ZWlwdHJUeXBlOwor
dHlwZWRlZiBwdHJkaWZmX3QgR0xpbnRwdHJUeXBlOworI2VuZGlmCisKKyNkZWZpbmUgREVDTEFS
RV9QUk9DKFByb2MpIFByb2MjI1R5cGUgXyMjUHJvYzsKKworI2lmIGRlZmluZWQgKFFUX09QRU5H
TF9FU18yKQorI2RlZmluZSBTRVRfUFJPQ19BRERSRVNTKFByb2MpIF8jI1Byb2MgPSBQcm9jCisj
ZWxzZQorI2RlZmluZSBTRVRfUFJPQ19BRERSRVNTKFByb2MpIF8jI1Byb2MgPSByZWludGVycHJl
dF9jYXN0PFByb2MjI1R5cGU+KGdldFByb2NBZGRyZXNzKCNQcm9jKSkKKyNlbmRpZgorCisjaWZu
ZGVmIGdsQWN0aXZlVGV4dHVyZQorI2RlZmluZSBnbEFjdGl2ZVRleHR1cmUgbV9pbnRlcm5hbC0+
X2dsQWN0aXZlVGV4dHVyZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xBdHRhY2hTaGFkZXIKKyNkZWZp
bmUgZ2xBdHRhY2hTaGFkZXIgbV9pbnRlcm5hbC0+X2dsQXR0YWNoU2hhZGVyCisjZW5kaWYKKwor
I2lmbmRlZiBnbEJpbmRBdHRyaWJMb2NhdGlvbgorI2RlZmluZSBnbEJpbmRBdHRyaWJMb2NhdGlv
biBtX2ludGVybmFsLT5fZ2xCaW5kQXR0cmliTG9jYXRpb24KKyNlbmRpZgorCisjaWZuZGVmIGds
QmluZEJ1ZmZlcgorI2RlZmluZSBnbEJpbmRCdWZmZXIgbV9pbnRlcm5hbC0+X2dsQmluZEJ1ZmZl
cgorI2VuZGlmCisKKyNpZm5kZWYgZ2xCaW5kRnJhbWVidWZmZXIKKyNkZWZpbmUgZ2xCaW5kRnJh
bWVidWZmZXIgbV9pbnRlcm5hbC0+X2dsQmluZEZyYW1lYnVmZmVyCisjZW5kaWYKKworI2lmbmRl
ZiBnbEJpbmRSZW5kZXJidWZmZXIKKyNkZWZpbmUgZ2xCaW5kUmVuZGVyYnVmZmVyIG1faW50ZXJu
YWwtPl9nbEJpbmRSZW5kZXJidWZmZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsQmxlbmRDb2xvcgor
I2RlZmluZSBnbEJsZW5kQ29sb3IgbV9pbnRlcm5hbC0+X2dsQmxlbmRDb2xvcgorI2VuZGlmCisK
KyNpZm5kZWYgZ2xCbGVuZEVxdWF0aW9uCisjZGVmaW5lIGdsQmxlbmRFcXVhdGlvbiBtX2ludGVy
bmFsLT5fZ2xCbGVuZEVxdWF0aW9uCisjZW5kaWYKKworI2lmbmRlZiBnbEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZQorI2RlZmluZSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSBtX2ludGVybmFsLT5fZ2xC
bGVuZEVxdWF0aW9uU2VwYXJhdGUKKyNlbmRpZgorCisjaWZuZGVmIGdsQmxlbmRGdW5jU2VwYXJh
dGUKKyNkZWZpbmUgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSBtX2ludGVybmFsLT5fZ2xCbGVuZEZ1bmNT
ZXBhcmF0ZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xCdWZmZXJEYXRhCisjZGVmaW5lIGdsQnVmZmVy
RGF0YSBtX2ludGVybmFsLT5fZ2xCdWZmZXJEYXRhCisjZW5kaWYKKworI2lmbmRlZiBnbEJ1ZmZl
clN1YkRhdGEKKyNkZWZpbmUgZ2xCdWZmZXJTdWJEYXRhIG1faW50ZXJuYWwtPl9nbEJ1ZmZlclN1
YkRhdGEKKyNlbmRpZgorCisjaWZuZGVmIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cworI2RlZmlu
ZSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMgbV9pbnRlcm5hbC0+X2dsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cworI2VuZGlmCisKKyNpZm5kZWYgZ2xDb21waWxlU2hhZGVyCisjZGVmaW5lIGdsQ29t
cGlsZVNoYWRlciBtX2ludGVybmFsLT5fZ2xDb21waWxlU2hhZGVyCisjZW5kaWYKKworI2lmbmRl
ZiBnbENyZWF0ZVByb2dyYW0KKyNkZWZpbmUgZ2xDcmVhdGVQcm9ncmFtIG1faW50ZXJuYWwtPl9n
bENyZWF0ZVByb2dyYW0KKyNlbmRpZgorCisjaWZuZGVmIGdsQ3JlYXRlU2hhZGVyCisjZGVmaW5l
IGdsQ3JlYXRlU2hhZGVyIG1faW50ZXJuYWwtPl9nbENyZWF0ZVNoYWRlcgorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xEZWxldGVCdWZmZXJzCisjZGVmaW5lIGdsRGVsZXRlQnVmZmVycyBtX2ludGVybmFs
LT5fZ2xEZWxldGVCdWZmZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbERlbGV0ZUZyYW1lYnVmZmVy
cworI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVycyBtX2ludGVybmFsLT5fZ2xEZWxldGVGcmFt
ZWJ1ZmZlcnMKKyNlbmRpZgorCisjaWZuZGVmIGdsRGVsZXRlUHJvZ3JhbQorI2RlZmluZSBnbERl
bGV0ZVByb2dyYW0gbV9pbnRlcm5hbC0+X2dsRGVsZXRlUHJvZ3JhbQorI2VuZGlmCisKKyNpZm5k
ZWYgZ2xEZWxldGVSZW5kZXJidWZmZXJzCisjZGVmaW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVycyBt
X2ludGVybmFsLT5fZ2xEZWxldGVSZW5kZXJidWZmZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbERl
bGV0ZVNoYWRlcgorI2RlZmluZSBnbERlbGV0ZVNoYWRlciBtX2ludGVybmFsLT5fZ2xEZWxldGVT
aGFkZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsRGV0YWNoU2hhZGVyCisjZGVmaW5lIGdsRGV0YWNo
U2hhZGVyIG1faW50ZXJuYWwtPl9nbERldGFjaFNoYWRlcgorI2VuZGlmCisKKyNpZm5kZWYgZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkKKyNkZWZpbmUgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkgbV9pbnRlcm5hbC0+X2dsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5CisjZW5kaWYKKworI2lm
bmRlZiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5CisjZGVmaW5lIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkgbV9pbnRlcm5hbC0+X2dsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkKKyNlbmRpZgor
CisjaWZuZGVmIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIKKyNkZWZpbmUgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlciBtX2ludGVybmFsLT5fZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgorI2Vu
ZGlmCisKKyNpZm5kZWYgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAorI2RlZmluZSBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEIG1faW50ZXJuYWwtPl9nbEZyYW1lYnVmZmVyVGV4dHVyZTJECisjZW5kaWYK
KworI2lmbmRlZiBnbEdlbkJ1ZmZlcnMKKyNkZWZpbmUgZ2xHZW5CdWZmZXJzIG1faW50ZXJuYWwt
Pl9nbEdlbkJ1ZmZlcnMKKyNlbmRpZgorCisjaWZuZGVmIGdsR2VuZXJhdGVNaXBtYXAKKyNkZWZp
bmUgZ2xHZW5lcmF0ZU1pcG1hcCBtX2ludGVybmFsLT5fZ2xHZW5lcmF0ZU1pcG1hcAorI2VuZGlm
CisKKyNpZm5kZWYgZ2xHZW5GcmFtZWJ1ZmZlcnMKKyNkZWZpbmUgZ2xHZW5GcmFtZWJ1ZmZlcnMg
bV9pbnRlcm5hbC0+X2dsR2VuRnJhbWVidWZmZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbEdlblJl
bmRlcmJ1ZmZlcnMKKyNkZWZpbmUgZ2xHZW5SZW5kZXJidWZmZXJzIG1faW50ZXJuYWwtPl9nbEdl
blJlbmRlcmJ1ZmZlcnMKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0QWN0aXZlQXR0cmliCisjZGVm
aW5lIGdsR2V0QWN0aXZlQXR0cmliIG1faW50ZXJuYWwtPl9nbEdldEFjdGl2ZUF0dHJpYgorI2Vu
ZGlmCisKKyNpZm5kZWYgZ2xHZXRBY3RpdmVVbmlmb3JtCisjZGVmaW5lIGdsR2V0QWN0aXZlVW5p
Zm9ybSBtX2ludGVybmFsLT5fZ2xHZXRBY3RpdmVVbmlmb3JtCisjZW5kaWYKKworI2lmbmRlZiBn
bEdldEF0dGFjaGVkU2hhZGVycworI2RlZmluZSBnbEdldEF0dGFjaGVkU2hhZGVycyBtX2ludGVy
bmFsLT5fZ2xHZXRBdHRhY2hlZFNoYWRlcnMKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0QXR0cmli
TG9jYXRpb24KKyNkZWZpbmUgZ2xHZXRBdHRyaWJMb2NhdGlvbiBtX2ludGVybmFsLT5fZ2xHZXRB
dHRyaWJMb2NhdGlvbgorI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdgor
I2RlZmluZSBnbEdldEJ1ZmZlclBhcmFtZXRlcml2IG1faW50ZXJuYWwtPl9nbEdldEJ1ZmZlclBh
cmFtZXRlcml2CisjZW5kaWYKKworI2lmbmRlZiBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2CisjZGVmaW5lIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYg
bV9pbnRlcm5hbC0+X2dsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYKKyNlbmRp
ZgorCisjaWZuZGVmIGdsR2V0UHJvZ3JhbUluZm9Mb2cKKyNkZWZpbmUgZ2xHZXRQcm9ncmFtSW5m
b0xvZyBtX2ludGVybmFsLT5fZ2xHZXRQcm9ncmFtSW5mb0xvZworI2VuZGlmCisKKyNpZm5kZWYg
Z2xHZXRQcm9ncmFtaXYKKyNkZWZpbmUgZ2xHZXRQcm9ncmFtaXYgbV9pbnRlcm5hbC0+X2dsR2V0
UHJvZ3JhbWl2CisjZW5kaWYKKworI2lmbmRlZiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
CisjZGVmaW5lIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgbV9pbnRlcm5hbC0+X2dsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0U2hhZGVySW5m
b0xvZworI2RlZmluZSBnbEdldFNoYWRlckluZm9Mb2cgbV9pbnRlcm5hbC0+X2dsR2V0U2hhZGVy
SW5mb0xvZworI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRTaGFkZXJpdgorI2RlZmluZSBnbEdldFNo
YWRlcml2IG1faW50ZXJuYWwtPl9nbEdldFNoYWRlcml2CisjZW5kaWYKKworI2lmbmRlZiBnbEdl
dFNoYWRlclNvdXJjZQorI2RlZmluZSBnbEdldFNoYWRlclNvdXJjZSBtX2ludGVybmFsLT5fZ2xH
ZXRTaGFkZXJTb3VyY2UKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0VW5pZm9ybUxvY2F0aW9uCisj
ZGVmaW5lIGdsR2V0VW5pZm9ybUxvY2F0aW9uIG1faW50ZXJuYWwtPl9nbEdldFVuaWZvcm1Mb2Nh
dGlvbgorI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRVbmlmb3JtZnYKKyNkZWZpbmUgZ2xHZXRVbmlm
b3JtZnYgbV9pbnRlcm5hbC0+X2dsR2V0VW5pZm9ybWZ2CisjZW5kaWYKKworI2lmbmRlZiBnbEdl
dFVuaWZvcm1pdgorI2RlZmluZSBnbEdldFVuaWZvcm1pdiBtX2ludGVybmFsLT5fZ2xHZXRVbmlm
b3JtaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0VmVydGV4QXR0cmliZnYKKyNkZWZpbmUgZ2xH
ZXRWZXJ0ZXhBdHRyaWJmdiBtX2ludGVybmFsLT5fZ2xHZXRWZXJ0ZXhBdHRyaWJmdgorI2VuZGlm
CisKKyNpZm5kZWYgZ2xHZXRWZXJ0ZXhBdHRyaWJpdgorI2RlZmluZSBnbEdldFZlcnRleEF0dHJp
Yml2IG1faW50ZXJuYWwtPl9nbEdldFZlcnRleEF0dHJpYml2CisjZW5kaWYKKworI2lmbmRlZiBn
bEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2CisjZGVmaW5lIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl
cnYgbV9pbnRlcm5hbC0+X2dsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYKKyNlbmRpZgorCisjaWZu
ZGVmIGdsSXNCdWZmZXIKKyNkZWZpbmUgZ2xJc0J1ZmZlciBtX2ludGVybmFsLT5fZ2xJc0J1ZmZl
cgorI2VuZGlmCisKKyNpZm5kZWYgZ2xJc0ZyYW1lYnVmZmVyCisjZGVmaW5lIGdsSXNGcmFtZWJ1
ZmZlciBtX2ludGVybmFsLT5fZ2xJc0ZyYW1lYnVmZmVyCisjZW5kaWYKKworI2lmbmRlZiBnbElz
UHJvZ3JhbQorI2RlZmluZSBnbElzUHJvZ3JhbSBtX2ludGVybmFsLT5fZ2xJc1Byb2dyYW0KKyNl
bmRpZgorCisjaWZuZGVmIGdsSXNSZW5kZXJidWZmZXIKKyNkZWZpbmUgZ2xJc1JlbmRlcmJ1ZmZl
ciBtX2ludGVybmFsLT5fZ2xJc1JlbmRlcmJ1ZmZlcgorI2VuZGlmCisKKyNpZm5kZWYgZ2xJc1No
YWRlcgorI2RlZmluZSBnbElzU2hhZGVyIG1faW50ZXJuYWwtPl9nbElzU2hhZGVyCisjZW5kaWYK
KworI2lmbmRlZiBnbExpbmtQcm9ncmFtCisjZGVmaW5lIGdsTGlua1Byb2dyYW0gbV9pbnRlcm5h
bC0+X2dsTGlua1Byb2dyYW0KKyNlbmRpZgorCisjaWZuZGVmIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UgbV9pbnRlcm5hbC0+X2dsUmVuZGVyYnVm
ZmVyU3RvcmFnZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xTYW1wbGVDb3ZlcmFnZQorI2RlZmluZSBn
bFNhbXBsZUNvdmVyYWdlIG1faW50ZXJuYWwtPl9nbFNhbXBsZUNvdmVyYWdlCisjZW5kaWYKKwor
I2lmbmRlZiBnbFNoYWRlclNvdXJjZQorI2RlZmluZSBnbFNoYWRlclNvdXJjZSBtX2ludGVybmFs
LT5fZ2xTaGFkZXJTb3VyY2UKKyNlbmRpZgorCisjaWZuZGVmIGdsU3RlbmNpbEZ1bmNTZXBhcmF0
ZQorI2RlZmluZSBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUgbV9pbnRlcm5hbC0+X2dsU3RlbmNpbEZ1
bmNTZXBhcmF0ZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xTdGVuY2lsTWFza1NlcGFyYXRlCisjZGVm
aW5lIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSBtX2ludGVybmFsLT5fZ2xTdGVuY2lsTWFza1NlcGFy
YXRlCisjZW5kaWYKKworI2lmbmRlZiBnbFN0ZW5jaWxPcFNlcGFyYXRlCisjZGVmaW5lIGdsU3Rl
bmNpbE9wU2VwYXJhdGUgbV9pbnRlcm5hbC0+X2dsU3RlbmNpbE9wU2VwYXJhdGUKKyNlbmRpZgor
CisjaWZuZGVmIGdsVW5pZm9ybTFmCisjZGVmaW5lIGdsVW5pZm9ybTFmIG1faW50ZXJuYWwtPl9n
bFVuaWZvcm0xZgorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtMWZ2CisjZGVmaW5lIGdsVW5p
Zm9ybTFmdiBtX2ludGVybmFsLT5fZ2xVbmlmb3JtMWZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFVu
aWZvcm0xaQorI2RlZmluZSBnbFVuaWZvcm0xaSBtX2ludGVybmFsLT5fZ2xVbmlmb3JtMWkKKyNl
bmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTFpdgorI2RlZmluZSBnbFVuaWZvcm0xaXYgbV9pbnRl
cm5hbC0+X2dsVW5pZm9ybTFpdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtMmYKKyNkZWZp
bmUgZ2xVbmlmb3JtMmYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTJmCisjZW5kaWYKKworI2lmbmRl
ZiBnbFVuaWZvcm0yZnYKKyNkZWZpbmUgZ2xVbmlmb3JtMmZ2IG1faW50ZXJuYWwtPl9nbFVuaWZv
cm0yZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTJpCisjZGVmaW5lIGdsVW5pZm9ybTJp
IG1faW50ZXJuYWwtPl9nbFVuaWZvcm0yaQorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtMml2
CisjZGVmaW5lIGdsVW5pZm9ybTJpdiBtX2ludGVybmFsLT5fZ2xVbmlmb3JtMml2CisjZW5kaWYK
KworI2lmbmRlZiBnbFVuaWZvcm0zZgorI2RlZmluZSBnbFVuaWZvcm0zZiBtX2ludGVybmFsLT5f
Z2xVbmlmb3JtM2YKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTNmdgorI2RlZmluZSBnbFVu
aWZvcm0zZnYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTNmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xV
bmlmb3JtM2kKKyNkZWZpbmUgZ2xVbmlmb3JtM2kgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTNpCisj
ZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0zaXYKKyNkZWZpbmUgZ2xVbmlmb3JtM2l2IG1faW50
ZXJuYWwtPl9nbFVuaWZvcm0zaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTRmCisjZGVm
aW5lIGdsVW5pZm9ybTRmIG1faW50ZXJuYWwtPl9nbFVuaWZvcm00ZgorI2VuZGlmCisKKyNpZm5k
ZWYgZ2xVbmlmb3JtNGZ2CisjZGVmaW5lIGdsVW5pZm9ybTRmdiBtX2ludGVybmFsLT5fZ2xVbmlm
b3JtNGZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm00aQorI2RlZmluZSBnbFVuaWZvcm00
aSBtX2ludGVybmFsLT5fZ2xVbmlmb3JtNGkKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTRp
dgorI2RlZmluZSBnbFVuaWZvcm00aXYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTRpdgorI2VuZGlm
CisKKyNpZm5kZWYgZ2xVbmlmb3JtTWF0cml4MmZ2CisjZGVmaW5lIGdsVW5pZm9ybU1hdHJpeDJm
diBtX2ludGVybmFsLT5fZ2xVbmlmb3JtTWF0cml4MmZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFVu
aWZvcm1NYXRyaXgzZnYKKyNkZWZpbmUgZ2xVbmlmb3JtTWF0cml4M2Z2IG1faW50ZXJuYWwtPl9n
bFVuaWZvcm1NYXRyaXgzZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybU1hdHJpeDRmdgor
I2RlZmluZSBnbFVuaWZvcm1NYXRyaXg0ZnYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybU1hdHJpeDRm
dgorI2VuZGlmCisKKyNpZm5kZWYgZ2xVc2VQcm9ncmFtCisjZGVmaW5lIGdsVXNlUHJvZ3JhbSBt
X2ludGVybmFsLT5fZ2xVc2VQcm9ncmFtCisjZW5kaWYKKworI2lmbmRlZiBnbFZhbGlkYXRlUHJv
Z3JhbQorI2RlZmluZSBnbFZhbGlkYXRlUHJvZ3JhbSBtX2ludGVybmFsLT5fZ2xWYWxpZGF0ZVBy
b2dyYW0KKyNlbmRpZgorCisjaWZuZGVmIGdsVmVydGV4QXR0cmliMWYKKyNkZWZpbmUgZ2xWZXJ0
ZXhBdHRyaWIxZiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWIxZgorI2VuZGlmCisKKyNpZm5k
ZWYgZ2xWZXJ0ZXhBdHRyaWIxZnYKKyNkZWZpbmUgZ2xWZXJ0ZXhBdHRyaWIxZnYgbV9pbnRlcm5h
bC0+X2dsVmVydGV4QXR0cmliMWZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjJm
CisjZGVmaW5lIGdsVmVydGV4QXR0cmliMmYgbV9pbnRlcm5hbC0+X2dsVmVydGV4QXR0cmliMmYK
KyNlbmRpZgorCisjaWZuZGVmIGdsVmVydGV4QXR0cmliMmZ2CisjZGVmaW5lIGdsVmVydGV4QXR0
cmliMmZ2IG1faW50ZXJuYWwtPl9nbFZlcnRleEF0dHJpYjJmdgorI2VuZGlmCisKKyNpZm5kZWYg
Z2xWZXJ0ZXhBdHRyaWIzZgorI2RlZmluZSBnbFZlcnRleEF0dHJpYjNmIG1faW50ZXJuYWwtPl9n
bFZlcnRleEF0dHJpYjNmCisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjNmdgorI2Rl
ZmluZSBnbFZlcnRleEF0dHJpYjNmdiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWIzZnYKKyNl
bmRpZgorCisjaWZuZGVmIGdsVmVydGV4QXR0cmliNGYKKyNkZWZpbmUgZ2xWZXJ0ZXhBdHRyaWI0
ZiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWI0ZgorI2VuZGlmCisKKyNpZm5kZWYgZ2xWZXJ0
ZXhBdHRyaWI0ZnYKKyNkZWZpbmUgZ2xWZXJ0ZXhBdHRyaWI0ZnYgbV9pbnRlcm5hbC0+X2dsVmVy
dGV4QXR0cmliNGZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYlBvaW50ZXIKKyNk
ZWZpbmUgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIG1faW50ZXJuYWwtPl9nbFZlcnRleEF0dHJpYlBv
aW50ZXIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQWN0aXZlVGV4dHVyZVR5cGUpIChHTGVudW0pOwordHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xBdHRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwordHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xCaW5kQXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBHTHVpbnQsIGNv
bnN0IGNoYXIqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEJ1ZmZlclR5cGUpIChH
TGVudW0sIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRGcmFtZWJ1ZmZl
clR5cGUpIChHTGVudW0sIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRS
ZW5kZXJidWZmZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xCbGVuZENvbG9yVHlwZSkgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xh
bXBmKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblR5cGUpIChHTGVu
dW0pOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBl
KShHTGVudW0sIEdMZW51bSk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRnVuY1Nl
cGFyYXRlVHlwZSkoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhh
LCBHTGVudW0gZHN0QWxwaGEpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJEYXRh
VHlwZSkgKEdMZW51bSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCosIEdMZW51bSk7Cit0
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlclN1YkRhdGFUeXBlKSAoR0xlbnVtLCBHTGlu
dHB0clR5cGUsIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqKTsKK3R5cGVkZWYgR0xlbnVt
IChBUElFTlRSWSogZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzVHlwZSkgKEdMZW51bSk7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbENvbXBpbGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKK3R5cGVk
ZWYgR0x1aW50IChBUElFTlRSWSogZ2xDcmVhdGVQcm9ncmFtVHlwZSkgKCk7Cit0eXBlZGVmIEdM
dWludCAoQVBJRU5UUlkqIGdsQ3JlYXRlU2hhZGVyVHlwZSkgKEdMZW51bSk7Cit0eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbERlbGV0ZUJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgY29uc3QgR0x1aW50
Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUpIChH
THNpemVpIG4sIGNvbnN0IEdMdWludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxl
dGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlU2hhZGVyVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbERldGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChHTHVp
bnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5
cGUpIChHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwordHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRFR5cGUpIChHTGVudW0sIEdMZW51
bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2Vu
QnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsR2VuZXJhdGVNaXBtYXBUeXBlKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdlbkZyYW1lYnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKK3R5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVp
bnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QWN0aXZlQXR0cmliVHlwZSkgKEdM
dWludCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIq
KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QWN0aXZlVW5pZm9ybVR5cGUpIChHTHVp
bnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7
Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUpIChHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTHVpbnQqKTsKK3R5cGVkZWYgR0xpbnQgKEFQSUVOVFJZ
KiBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwordHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdM
ZW51bSwgR0xpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQq
IHBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFByb2dyYW1JbmZvTG9nVHlw
ZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0UHJvZ3JhbWl2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwordHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChH
TGVudW0sIEdMZW51bSwgR0xpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hh
ZGVySW5mb0xvZ1R5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBH
TGludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJTb3VyY2VUeXBlKSAo
R0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwordHlwZWRlZiBHTGludCAoQVBJRU5U
UlkqIGdsR2V0VW5pZm9ybUxvY2F0aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwordHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRVbmlmb3JtZnZUeXBlKSAoR0x1aW50LCBHTGludCwg
R0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRVbmlmb3JtaXZUeXBlKSAo
R0x1aW50LCBHTGludCwgR0xpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVy
dGV4QXR0cmliZnZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdM
aW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTHZvaWQqKik7Cit0eXBlZGVmIEdMYm9vbGVhbiAoQVBJ
RU5UUlkqIGdsSXNCdWZmZXJUeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgR0xib29sZWFuIChBUElF
TlRSWSogZ2xJc0ZyYW1lYnVmZmVyVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIEdMYm9vbGVhbiAo
QVBJRU5UUlkqIGdsSXNQcm9ncmFtVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIEdMYm9vbGVhbiAo
QVBJRU5UUlkqIGdsSXNSZW5kZXJidWZmZXJUeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgR0xib29s
ZWFuIChBUElFTlRSWSogZ2xJc1NoYWRlclR5cGUpIChHTHVpbnQpOwordHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xMaW5rUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xSZW5kZXJidWZmZXJTdG9yYWdlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVp
LCBHTHNpemVpKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2FtcGxlQ292ZXJhZ2VUeXBl
KSAoR0xjbGFtcGYsIEdMYm9vbGVhbik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNoYWRl
clNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0xpbnQq
KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUpIChH
TGVudW0sIEdMZW51bSwgR0xpbnQsIEdMdWludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwordHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xl
bnVtLCBHTGVudW0pOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZUeXBlKSAo
R0xpbnQsIEdMZmxvYXQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZ2VHlw
ZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm0xaVR5cGUpIChHTGludCwgR0xpbnQpOwordHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtMWl2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwor
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmZUeXBlKSAoR0xpbnQsIEdMZmxvYXQs
IEdMZmxvYXQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmZ2VHlwZSkgKEdM
aW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm0yaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybTJpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsK
K3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNmVHlwZSkgKEdMaW50LCBHTGZsb2F0
LCBHTGZsb2F0LCBHTGZsb2F0KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNm
dlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xVbmlmb3JtM2lUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpOwor
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2l2VHlwZSkgKEdMaW50LCBHTHNpemVp
LCBjb25zdCBHTGludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGZUeXBl
KSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwordHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBH
TGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aVR5cGUpIChHTGlu
dCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtNGl2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwordHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSkgKEdMaW50LCBHTHNpemVp
LCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VW5pZm9ybU1hdHJpeDNmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBH
TGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xVc2VQcm9ncmFtVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFZhbGlkYXRlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwordHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQp
OwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlKSAoR0x1aW50
LCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJp
YjJmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Cit0eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjJmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliM2ZUeXBlKSAo
R0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKK3R5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliM2Z2VHlwZSkgKEdMdWludCwgY29u
c3QgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZlR5
cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQs
IGNvbnN0IEdMZmxvYXQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0
ZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTGJv
b2xlYW4sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCopOworCitjbGFzcyBHcmFwaGljc0NvbnRleHQz
REludGVybmFsIDogcHVibGljIFFHcmFwaGljc09iamVjdCB7CitwdWJsaWM6CisgICAgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcywgSG9zdFdp
bmRvdyopOworICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CisKKyAgICBib29sIGlz
Q29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0VmFsaWQ7IH0KKyAgICBRR0xXaWRnZXQq
IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKKyAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3Qg
UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOworICAgIFFSZWN0RiBib3VuZGlu
Z1JlY3QoKSBjb25zdDsKKworICAgIERFQ0xBUkVfUFJPQyhnbEFjdGl2ZVRleHR1cmUpCisgICAg
REVDTEFSRV9QUk9DKGdsQXR0YWNoU2hhZGVyKQorICAgIERFQ0xBUkVfUFJPQyhnbEJpbmRBdHRy
aWJMb2NhdGlvbikKKyAgICBERUNMQVJFX1BST0MoZ2xCaW5kQnVmZmVyKQorICAgIERFQ0xBUkVf
UFJPQyhnbEJpbmRGcmFtZWJ1ZmZlcikKKyAgICBERUNMQVJFX1BST0MoZ2xCaW5kUmVuZGVyYnVm
ZmVyKQorICAgIERFQ0xBUkVfUFJPQyhnbEJsZW5kQ29sb3IpCisgICAgREVDTEFSRV9QUk9DKGds
QmxlbmRFcXVhdGlvbikKKyAgICBERUNMQVJFX1BST0MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUp
CisgICAgREVDTEFSRV9QUk9DKGdsQmxlbmRGdW5jU2VwYXJhdGUpCisgICAgREVDTEFSRV9QUk9D
KGdsQnVmZmVyRGF0YSkKKyAgICBERUNMQVJFX1BST0MoZ2xCdWZmZXJTdWJEYXRhKQorICAgIERF
Q0xBUkVfUFJPQyhnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMpCisgICAgREVDTEFSRV9QUk9DKGds
Q29tcGlsZVNoYWRlcikKKyAgICBERUNMQVJFX1BST0MoZ2xDcmVhdGVQcm9ncmFtKQorICAgIERF
Q0xBUkVfUFJPQyhnbENyZWF0ZVNoYWRlcikKKyAgICBERUNMQVJFX1BST0MoZ2xEZWxldGVCdWZm
ZXJzKQorICAgIERFQ0xBUkVfUFJPQyhnbERlbGV0ZUZyYW1lYnVmZmVycykKKyAgICBERUNMQVJF
X1BST0MoZ2xEZWxldGVQcm9ncmFtKQorICAgIERFQ0xBUkVfUFJPQyhnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMpCisgICAgREVDTEFSRV9QUk9DKGdsRGVsZXRlU2hhZGVyKQorICAgIERFQ0xBUkVfUFJP
QyhnbERldGFjaFNoYWRlcikKKyAgICBERUNMQVJFX1BST0MoZ2xEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkpCisgICAgREVDTEFSRV9QUk9DKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpCisgICAg
REVDTEFSRV9QUk9DKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIpCisgICAgREVDTEFSRV9QUk9D
KGdsRnJhbWVidWZmZXJUZXh0dXJlMkQpCisgICAgREVDTEFSRV9QUk9DKGdsR2VuQnVmZmVycykK
KyAgICBERUNMQVJFX1BST0MoZ2xHZW5lcmF0ZU1pcG1hcCkKKyAgICBERUNMQVJFX1BST0MoZ2xH
ZW5GcmFtZWJ1ZmZlcnMpCisgICAgREVDTEFSRV9QUk9DKGdsR2VuUmVuZGVyYnVmZmVycykKKyAg
ICBERUNMQVJFX1BST0MoZ2xHZXRBY3RpdmVBdHRyaWIpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0
QWN0aXZlVW5pZm9ybSkKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpCisg
ICAgREVDTEFSRV9QUk9DKGdsR2V0QXR0cmliTG9jYXRpb24pCisgICAgREVDTEFSRV9QUk9DKGds
R2V0QnVmZmVyUGFyYW1ldGVyaXYpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0UHJvZ3JhbUluZm9M
b2cpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0UHJvZ3JhbWl2KQorICAgIERFQ0xBUkVfUFJPQyhn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KQorICAgIERFQ0xBUkVfUFJPQyhnbEdldFNoYWRl
ckluZm9Mb2cpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0U2hhZGVyaXYpCisgICAgREVDTEFSRV9Q
Uk9DKGdsR2V0U2hhZGVyU291cmNlKQorICAgIERFQ0xBUkVfUFJPQyhnbEdldFVuaWZvcm1mdikK
KyAgICBERUNMQVJFX1BST0MoZ2xHZXRVbmlmb3JtaXYpCisgICAgREVDTEFSRV9QUk9DKGdsR2V0
VW5pZm9ybUxvY2F0aW9uKQorICAgIERFQ0xBUkVfUFJPQyhnbEdldFZlcnRleEF0dHJpYmZ2KQor
ICAgIERFQ0xBUkVfUFJPQyhnbEdldFZlcnRleEF0dHJpYml2KQorICAgIERFQ0xBUkVfUFJPQyhn
bEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KQorICAgIERFQ0xBUkVfUFJPQyhnbElzQnVmZmVyKQor
ICAgIERFQ0xBUkVfUFJPQyhnbElzRnJhbWVidWZmZXIpCisgICAgREVDTEFSRV9QUk9DKGdsSXNQ
cm9ncmFtKQorICAgIERFQ0xBUkVfUFJPQyhnbElzUmVuZGVyYnVmZmVyKQorICAgIERFQ0xBUkVf
UFJPQyhnbElzU2hhZGVyKQorICAgIERFQ0xBUkVfUFJPQyhnbExpbmtQcm9ncmFtKQorICAgIERF
Q0xBUkVfUFJPQyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpCisgICAgREVDTEFSRV9QUk9DKGdsU2Ft
cGxlQ292ZXJhZ2UpCisgICAgREVDTEFSRV9QUk9DKGdsU2hhZGVyU291cmNlKQorICAgIERFQ0xB
UkVfUFJPQyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpCisgICAgREVDTEFSRV9QUk9DKGdsU3RlbmNp
bE1hc2tTZXBhcmF0ZSkKKyAgICBERUNMQVJFX1BST0MoZ2xTdGVuY2lsT3BTZXBhcmF0ZSkKKyAg
ICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMWYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTFm
dikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMWkpCisgICAgREVDTEFSRV9QUk9DKGdsVW5p
Zm9ybTFpdikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMmYpCisgICAgREVDTEFSRV9QUk9D
KGdsVW5pZm9ybTJmdikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtMmkpCisgICAgREVDTEFS
RV9QUk9DKGdsVW5pZm9ybTJpdikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtM2YpCisgICAg
REVDTEFSRV9QUk9DKGdsVW5pZm9ybTNmdikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtM2kp
CisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTNpdikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlm
b3JtNGYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTRmdikKKyAgICBERUNMQVJFX1BST0Mo
Z2xVbmlmb3JtNGkpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTRpdikKKyAgICBERUNMQVJF
X1BST0MoZ2xVbmlmb3JtTWF0cml4MmZ2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm1NYXRy
aXgzZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybU1hdHJpeDRmdikKKyAgICBERUNMQVJF
X1BST0MoZ2xVc2VQcm9ncmFtKQorICAgIERFQ0xBUkVfUFJPQyhnbFZhbGlkYXRlUHJvZ3JhbSkK
KyAgICBERUNMQVJFX1BST0MoZ2xWZXJ0ZXhBdHRyaWIxZikKKyAgICBERUNMQVJFX1BST0MoZ2xW
ZXJ0ZXhBdHRyaWIxZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVmVydGV4QXR0cmliMmYpCisgICAg
REVDTEFSRV9QUk9DKGdsVmVydGV4QXR0cmliMmZ2KQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRl
eEF0dHJpYjNmKQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0dHJpYjNmdikKKyAgICBERUNM
QVJFX1BST0MoZ2xWZXJ0ZXhBdHRyaWI0ZikKKyAgICBERUNMQVJFX1BST0MoZ2xWZXJ0ZXhBdHRy
aWI0ZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVmVydGV4QXR0cmliUG9pbnRlcikKKworICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7CisgICAgSG9zdFdpbmRvdyogbV9o
b3N0V2luZG93OworICAgIFFHTFdpZGdldCogbV9nbFdpZGdldDsKKyAgICBRR0xXaWRnZXQqIG1f
dmlld3BvcnRHTFdpZGdldDsKKyAgICBRUmVjdEYgbV9ib3VuZGluZ1JlY3Q7CisgICAgR0x1aW50
IG1fdGV4dHVyZTsKKyAgICBHTHVpbnQgbV9tYWluRmJvOworICAgIEdMdWludCBtX2N1cnJlbnRG
Ym87CisgICAgR0x1aW50IG1fZGVwdGhCdWZmZXI7CisgICAgYm9vbCBtX2xheWVyQ29tcG9zaXRl
ZDsKKyAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBpbnQ+IG1fc3ludGhldGljRXJyb3JzOworCisg
ICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4dGVuc2lvbnM7CisKK3ByaXZhdGU6CisKKyAg
ICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOworICAgIGJvb2wgbV9j
b250ZXh0VmFsaWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsUXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAxNjE1Mzk3Li5lYWI5ZDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxR
dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRv
dy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC00MiwyNDQgKzQzLDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIWRlZmluZWQoR0xjaGFyKQotdHlwZWRlZiBjaGFyIEdM
Y2hhcjsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoR0xfREVQVEgyNF9TVEVOQ0lMOCkKLSNkZWZp
bmUgR0xfREVQVEgyNF9TVEVOQ0lMOCAweDg4RjAKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVBJ
RU5UUlkpCi0jZGVmaW5lIEFQSUVOVFJZCi0jZW5kaWYKLQotI2lmZGVmIFFUX09QRU5HTF9FU18y
Ci10eXBlZGVmIEdMc2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIEdMaW50cHRyIEdM
aW50cHRyVHlwZTsKLSNlbHNlCi10eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsKLXR5
cGVkZWYgcHRyZGlmZl90IEdMaW50cHRyVHlwZTsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEFjdGl2ZVRleHR1cmVUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQXR0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBj
b25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAo
R0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZm
ZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5k
UmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQmxlbmRDb2xvclR5cGUpIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNs
YW1wZik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xl
bnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlw
ZSkoR0xlbnVtLCBHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNT
ZXBhcmF0ZVR5cGUpKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBo
YSwgR0xlbnVtIGRzdEFscGhhKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0
YVR5cGUpIChHTGVudW0sIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xp
bnRwdHJUeXBlLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKik7Ci10eXBlZGVmIEdMZW51
bSAoQVBJRU5UUlkqIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xDb21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBl
ZGVmIEdMdWludCAoQVBJRU5UUlkqIGdsQ3JlYXRlUHJvZ3JhbVR5cGUpICgpOwotdHlwZWRlZiBH
THVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVNoYWRlclR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEZWxldGVCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAo
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVs
ZXRlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxl
dGVSZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEZXRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlU
eXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVu
dW0sIEdMZW51bSwgR0x1aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdl
bkJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdlbmVyYXRlTWlwbWFwVHlwZSkgKEdMZW51bSB0YXJnZXQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChH
THVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFy
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1
aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1
aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0x1aW50Kik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRS
WSogZ2xHZXRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBH
TGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50
KiBwYXJhbXMpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5
cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdldFByb2dyYW1pdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAo
R0xlbnVtLCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNo
YWRlckluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwg
R0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkg
KEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVO
VFJZKiBnbEdldFVuaWZvcm1Mb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQs
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkg
KEdMdWludCwgR0xpbnQsIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZl
cnRleEF0dHJpYmZ2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBH
TGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0x2b2lkKiopOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQ
SUVOVFJZKiBnbElzQnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJ
RU5UUlkqIGdsSXNGcmFtZWJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4g
KEFQSUVOVFJZKiBnbElzUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4g
KEFQSUVOVFJZKiBnbElzUmVuZGVyYnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9v
bGVhbiAoQVBJRU5UUlkqIGdsSXNTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsTGlua1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXpl
aSwgR0xzaXplaSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlw
ZSkgKEdMY2xhbXBmLCBHTGJvb2xlYW4pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFk
ZXJTb3VyY2VUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAo
R0xlbnVtLCBHTGVudW0sIEdMaW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xTdGVuY2lsTWFza1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdM
ZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkg
KEdMaW50LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5
cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtMWlUeXBlKSAoR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybTFpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0
LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChH
TGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtMmlUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0yaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9h
dCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0z
ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTNpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlw
ZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3Qg
R0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xp
bnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTRpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm1NYXRyaXgzZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3Qg
R0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlw
ZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVXNlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xWYWxpZGF0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRy
aWIyZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBH
TGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkg
KEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZU
eXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0
LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmli
NGZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xi
b29sZWFuLCBHTHNpemVpLCBjb25zdCBHTHZvaWQqKTsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgewotcHVibGljOgotICAgIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMs
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOwotICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFs
KCk7Ci0KLSAgICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0VmFsaWQ7
IH0KLSAgICBRR0xXaWRnZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKLSAgICB2b2lkIHBhaW50
KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwot
ICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKLQotICAgIGdsQWN0aXZlVGV4dHVyZVR5
cGUgYWN0aXZlVGV4dHVyZTsKLSAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwot
ICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247Ci0gICAgZ2xC
aW5kQnVmZmVyVHlwZSBiaW5kQnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyVHlwZSBiaW5k
RnJhbWVidWZmZXI7Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVy
OwotICAgIGdsQmxlbmRDb2xvclR5cGUgYmxlbmRDb2xvcjsKLSAgICBnbEJsZW5kRXF1YXRpb25U
eXBlIGJsZW5kRXF1YXRpb247Ci0gICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5k
RXF1YXRpb25TZXBhcmF0ZTsKLSAgICBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNT
ZXBhcmF0ZTsKLSAgICBnbEJ1ZmZlckRhdGFUeXBlIGJ1ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJT
dWJEYXRhVHlwZSBidWZmZXJTdWJEYXRhOwotICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5
cGUgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1czsKLSAgICBnbENvbXBpbGVTaGFkZXJUeXBlIGNvbXBp
bGVTaGFkZXI7Ci0gICAgZ2xDcmVhdGVQcm9ncmFtVHlwZSBjcmVhdGVQcm9ncmFtOwotICAgIGds
Q3JlYXRlU2hhZGVyVHlwZSBjcmVhdGVTaGFkZXI7Ci0gICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBk
ZWxldGVCdWZmZXJzOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1
ZmZlcnM7Ci0gICAgZ2xEZWxldGVQcm9ncmFtVHlwZSBkZWxldGVQcm9ncmFtOwotICAgIGdsRGVs
ZXRlUmVuZGVyYnVmZmVyc1R5cGUgZGVsZXRlUmVuZGVyYnVmZmVyczsKLSAgICBnbERlbGV0ZVNo
YWRlclR5cGUgZGVsZXRlU2hhZGVyOwotICAgIGdsRGV0YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFk
ZXI7Ci0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcjsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZl
clRleHR1cmUyRDsKLSAgICBnbEdlbkJ1ZmZlcnNUeXBlIGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5l
cmF0ZU1pcG1hcFR5cGUgZ2VuZXJhdGVNaXBtYXA7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBl
IGdlbkZyYW1lYnVmZmVyczsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1
ZmZlcnM7Ci0gICAgZ2xHZXRBY3RpdmVBdHRyaWJUeXBlIGdldEFjdGl2ZUF0dHJpYjsKLSAgICBn
bEdldEFjdGl2ZVVuaWZvcm1UeXBlIGdldEFjdGl2ZVVuaWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hl
ZFNoYWRlcnNUeXBlIGdldEF0dGFjaGVkU2hhZGVyczsKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9u
VHlwZSBnZXRBdHRyaWJMb2NhdGlvbjsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2VHlwZSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdl
dFByb2dyYW1JbmZvTG9nVHlwZSBnZXRQcm9ncmFtSW5mb0xvZzsKLSAgICBnbEdldFByb2dyYW1p
dlR5cGUgZ2V0UHJvZ3JhbWl2OwotICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBl
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUg
Z2V0U2hhZGVySW5mb0xvZzsKLSAgICBnbEdldFNoYWRlcml2VHlwZSBnZXRTaGFkZXJpdjsKLSAg
ICBnbEdldFNoYWRlclNvdXJjZVR5cGUgZ2V0U2hhZGVyU291cmNlOwotICAgIGdsR2V0VW5pZm9y
bWZ2VHlwZSBnZXRVbmlmb3JtZnY7Ci0gICAgZ2xHZXRVbmlmb3JtaXZUeXBlIGdldFVuaWZvcm1p
djsKLSAgICBnbEdldFVuaWZvcm1Mb2NhdGlvblR5cGUgZ2V0VW5pZm9ybUxvY2F0aW9uOwotICAg
IGdsR2V0VmVydGV4QXR0cmliZnZUeXBlIGdldFZlcnRleEF0dHJpYmZ2OwotICAgIGdsR2V0VmVy
dGV4QXR0cmliaXZUeXBlIGdldFZlcnRleEF0dHJpYml2OwotICAgIGdsR2V0VmVydGV4QXR0cmli
UG9pbnRlcnZUeXBlIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBl
IGlzQnVmZmVyOwotICAgIGdsSXNGcmFtZWJ1ZmZlclR5cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBn
bElzUHJvZ3JhbVR5cGUgaXNQcm9ncmFtOwotICAgIGdsSXNSZW5kZXJidWZmZXJUeXBlIGlzUmVu
ZGVyYnVmZmVyOwotICAgIGdsSXNTaGFkZXJUeXBlIGlzU2hhZGVyOwotICAgIGdsTGlua1Byb2dy
YW1UeXBlIGxpbmtQcm9ncmFtOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVy
YnVmZmVyU3RvcmFnZTsKLSAgICBnbFNhbXBsZUNvdmVyYWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsK
LSAgICBnbFNoYWRlclNvdXJjZVR5cGUgc2hhZGVyU291cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNT
ZXBhcmF0ZVR5cGUgc3RlbmNpbEZ1bmNTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJh
dGVUeXBlIHN0ZW5jaWxNYXNrU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUg
c3RlbmNpbE9wU2VwYXJhdGU7Ci0gICAgZ2xVbmlmb3JtMWZUeXBlIHVuaWZvcm0xZjsKLSAgICBn
bFVuaWZvcm0xZnZUeXBlIHVuaWZvcm0xZnY7Ci0gICAgZ2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0x
aTsKLSAgICBnbFVuaWZvcm0xaXZUeXBlIHVuaWZvcm0xaXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBl
IHVuaWZvcm0yZjsKLSAgICBnbFVuaWZvcm0yZnZUeXBlIHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlm
b3JtMmlUeXBlIHVuaWZvcm0yaTsKLSAgICBnbFVuaWZvcm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0g
ICAgZ2xVbmlmb3JtM2ZUeXBlIHVuaWZvcm0zZjsKLSAgICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZv
cm0zZnY7Ci0gICAgZ2xVbmlmb3JtM2lUeXBlIHVuaWZvcm0zaTsKLSAgICBnbFVuaWZvcm0zaXZU
eXBlIHVuaWZvcm0zaXY7Ci0gICAgZ2xVbmlmb3JtNGZUeXBlIHVuaWZvcm00ZjsKLSAgICBnbFVu
aWZvcm00ZnZUeXBlIHVuaWZvcm00ZnY7Ci0gICAgZ2xVbmlmb3JtNGlUeXBlIHVuaWZvcm00aTsK
LSAgICBnbFVuaWZvcm00aXZUeXBlIHVuaWZvcm00aXY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2
VHlwZSB1bmlmb3JtTWF0cml4MmZ2OwotICAgIGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9y
bU1hdHJpeDNmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7
Ci0gICAgZ2xVc2VQcm9ncmFtVHlwZSB1c2VQcm9ncmFtOwotICAgIGdsVmFsaWRhdGVQcm9ncmFt
VHlwZSB2YWxpZGF0ZVByb2dyYW07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0
cmliMWY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlIHZlcnRleEF0dHJpYjFmdjsKLSAgICBn
bFZlcnRleEF0dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRyaWIyZjsKLSAgICBnbFZlcnRleEF0dHJpYjJm
dlR5cGUgdmVydGV4QXR0cmliMmZ2OwotICAgIGdsVmVydGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0
dHJpYjNmOwotICAgIGdsVmVydGV4QXR0cmliM2Z2VHlwZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWI0ZlR5cGUgdmVydGV4QXR0cmliNGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0
ZnZUeXBlIHZlcnRleEF0dHJpYjRmdjsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlIHZl
cnRleEF0dHJpYlBvaW50ZXI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBt
X2F0dHJzOwotICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKLSAgICBRR0xXaWRnZXQqIG1f
Z2xXaWRnZXQ7Ci0gICAgUUdMV2lkZ2V0KiBtX3ZpZXdwb3J0R0xXaWRnZXQ7Ci0gICAgUVJlY3RG
IG1fYm91bmRpbmdSZWN0OwotICAgIEdMdWludCBtX3RleHR1cmU7Ci0gICAgR0x1aW50IG1fbWFp
bkZibzsKLSAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVy
OwotICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQg
aW50PiBtX3N5bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9l
eHRlbnNpb25zOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3Qg
U3RyaW5nJiBwcm9jKTsKLSAgICBib29sIG1fY29udGV4dFZhbGlkOwotfTsKLQotI2lmIGRlZmlu
ZWQgKFFUX09QRU5HTF9FU18yKSAKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSBQcm9j
Ci0jZWxzZQotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIHJlaW50ZXJwcmV0X2Nhc3Q8
UHJvYyMjVHlwZT4oZ2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKLSNlbmRpZgotCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKICNpZiBkZWZpbmVkIChR
VF9PUEVOR0xfRVNfMikKQEAgLTMzMCw5NiArOTMsOTYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXQKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBhY3RpdmVUZXh0dXJl
ID0gR0VUX1BST0NfQUREUkVTUyhnbEFjdGl2ZVRleHR1cmUpOwotICAgIGF0dGFjaFNoYWRlciA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xBdHRhY2hTaGFkZXIpOwotICAgIGJpbmRBdHRyaWJMb2NhdGlv
biA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOwotICAgIGJpbmRCdWZm
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEJ1ZmZlcik7Ci0gICAgYmluZEZyYW1lYnVmZmVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRGcmFtZWJ1ZmZlcik7Ci0gICAgYmluZFJlbmRlcmJ1
ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsKLSAgICBibGVuZENv
bG9yID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kQ29sb3IpOwotICAgIGJsZW5kRXF1YXRpb24g
PSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvbik7Ci0gICAgYmxlbmRFcXVhdGlvblNl
cGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSk7Ci0gICAg
YmxlbmRGdW5jU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2VwYXJhdGUp
OwotICAgIGJ1ZmZlckRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7Ci0gICAg
YnVmZmVyU3ViRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJTdWJEYXRhKTsKLSAgICBj
aGVja0ZyYW1lYnVmZmVyU3RhdHVzID0gR0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMpOwotICAgIGNvbXBpbGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ29tcGls
ZVNoYWRlcik7Ci0gICAgY3JlYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVQ
cm9ncmFtKTsKLSAgICBjcmVhdGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlU2hh
ZGVyKTsKLSAgICBkZWxldGVCdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUJ1ZmZl
cnMpOwotICAgIGRlbGV0ZUZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVG
cmFtZWJ1ZmZlcnMpOwotICAgIGRlbGV0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVs
ZXRlUHJvZ3JhbSk7Ci0gICAgZGVsZXRlUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xEZWxldGVSZW5kZXJidWZmZXJzKTsKLSAgICBkZWxldGVTaGFkZXIgPSBHRVRfUFJPQ19BRERS
RVNTKGdsRGVsZXRlU2hhZGVyKTsKLSAgICBkZXRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNT
KGdsRGV0YWNoU2hhZGVyKTsKLSAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJP
Q19BRERSRVNTKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk7
Ci0gICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIpOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEID0gR0VUX1BST0Nf
QUREUkVTUyhnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKLSAgICBnZW5CdWZmZXJzID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdlbkJ1ZmZlcnMpOwotICAgIGdlbmVyYXRlTWlwbWFwID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdlbmVyYXRlTWlwbWFwKTsKLSAgICBnZW5GcmFtZWJ1ZmZlcnMgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2VuRnJhbWVidWZmZXJzKTsKLSAgICBnZW5SZW5kZXJidWZmZXJzID0gR0VU
X1BST0NfQUREUkVTUyhnbEdlblJlbmRlcmJ1ZmZlcnMpOwotICAgIGdldEFjdGl2ZUF0dHJpYiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVBdHRyaWIpOwotICAgIGdldEFjdGl2ZVVuaWZv
cm0gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7Ci0gICAgZ2V0QXR0YWNo
ZWRTaGFkZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hhZGVycyk7Ci0gICAg
Z2V0QXR0cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9jYXRpb24p
OwotICAgIGdldEJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEJ1ZmZl
clBhcmFtZXRlcml2KTsKLSAgICBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7
Ci0gICAgZ2V0UHJvZ3JhbUluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbUlu
Zm9Mb2cpOwotICAgIGdldFByb2dyYW1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFt
aXYpOwotICAgIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTsKLSAgICBnZXRTaGFkZXJJbmZvTG9nID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFNoYWRlckluZm9Mb2cpOwotICAgIGdldFNoYWRlcml2ID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFNoYWRlcml2KTsKLSAgICBnZXRTaGFkZXJTb3VyY2UgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyU291cmNlKTsKLSAgICBnZXRVbmlmb3JtZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybWZ2KTsKLSAgICBnZXRVbmlmb3JtaXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0VW5pZm9ybWl2KTsKLSAgICBnZXRVbmlmb3JtTG9jYXRpb24gPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJm
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdik7Ci0gICAgZ2V0VmVydGV4
QXR0cmliaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOwotICAgIGdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2KTsKLSAgICBpc0J1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7
Ci0gICAgaXNGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0ZyYW1lYnVmZmVyKTsK
LSAgICBpc1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsKLSAgICBpc1Jl
bmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7Ci0gICAgaXNT
aGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNTaGFkZXIpOwotICAgIGxpbmtQcm9ncmFtID0g
R0VUX1BST0NfQUREUkVTUyhnbExpbmtQcm9ncmFtKTsKLSAgICByZW5kZXJidWZmZXJTdG9yYWdl
ID0gR0VUX1BST0NfQUREUkVTUyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwotICAgIHNhbXBsZUNv
dmVyYWdlID0gR0VUX1BST0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKLSAgICBzaGFkZXJT
b3VyY2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsU2hhZGVyU291cmNlKTsKLSAgICBzdGVuY2lsRnVu
Y1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpOwotICAg
IHN0ZW5jaWxNYXNrU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBh
cmF0ZSk7Ci0gICAgc3RlbmNpbE9wU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNp
bE9wU2VwYXJhdGUpOwotICAgIHVuaWZvcm0xZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
MWYpOwotICAgIHVuaWZvcm0xZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7Ci0g
ICAgdW5pZm9ybTFpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7Ci0gICAgdW5pZm9y
bTFpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWl2KTsKLSAgICB1bmlmb3JtMmYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJmKTsKLSAgICB1bmlmb3JtMmZ2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0yZnYpOwotICAgIHVuaWZvcm0yaSA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtMmkpOwotICAgIHVuaWZvcm0yaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTJpdik7Ci0gICAgdW5pZm9ybTNmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZik7Ci0g
ICAgdW5pZm9ybTNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsKLSAgICB1bmlm
b3JtM2kgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpKTsKLSAgICB1bmlmb3JtM2l2ID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaXYpOwotICAgIHVuaWZvcm00ZiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtNGYpOwotICAgIHVuaWZvcm00ZnYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTRmdik7Ci0gICAgdW5pZm9ybTRpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm00aSk7Ci0gICAgdW5pZm9ybTRpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGl2KTsK
LSAgICB1bmlmb3JtTWF0cml4MmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgy
ZnYpOwotICAgIHVuaWZvcm1NYXRyaXgzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1h
dHJpeDNmdik7Ci0gICAgdW5pZm9ybU1hdHJpeDRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtTWF0cml4NGZ2KTsKLSAgICB1c2VQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFVzZVBy
b2dyYW0pOwotICAgIHZhbGlkYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWYWxpZGF0
ZVByb2dyYW0pOwotICAgIHZlcnRleEF0dHJpYjFmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjFmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliMWZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWIyZik7Ci0gICAgdmVydGV4QXR0cmliMmZ2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjJmdik7Ci0gICAgdmVydGV4QXR0cmliM2YgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVmVydGV4QXR0cmliM2YpOwotICAgIHZlcnRleEF0dHJpYjNmdiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xWZXJ0ZXhBdHRyaWIzZnYpOwotICAgIHZlcnRleEF0dHJpYjRmID0gR0VUX1BST0NfQURE
UkVTUyhnbFZlcnRleEF0dHJpYjRmKTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVmVydGV4QXR0cmliNGZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyID0gR0VU
X1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOworICAgIFNFVF9QUk9DX0FERFJF
U1MoZ2xBY3RpdmVUZXh0dXJlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVy
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsQmluZEJ1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJpbmRG
cmFtZWJ1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJpbmRSZW5kZXJidWZmZXIpOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsQmxlbmRFcXVhdGlvbik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bEJ1ZmZlclN1YkRhdGEpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQ29tcGlsZVNoYWRlcik7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbENyZWF0ZVByb2dyYW0pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xD
cmVhdGVTaGFkZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZmZXJzKTsKKyAgICBTRVRfUFJPQ19B
RERSRVNTKGdsRGVsZXRlUHJvZ3JhbSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVJl
bmRlcmJ1ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVTaGFkZXIpOworICAg
IFNFVF9QUk9DX0FERFJFU1MoZ2xEZXRhY2hTaGFkZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5CdWZmZXJzKTsKKyAgICBTRVRfUFJPQ19B
RERSRVNTKGdsR2VuZXJhdGVNaXBtYXApOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5GcmFt
ZWJ1ZmZlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKKyAgICBTRVRfUFJPQ19BRERS
RVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFj
aGVkU2hhZGVycyk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7CisgICAg
U0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsKKyAgICBTRVRfUFJPQ19BRERS
RVNTKGdsR2V0UHJvZ3JhbWl2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9n
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyaXYpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJTb3VyY2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlm
b3JtZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtaXYpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtTG9jYXRpb24pOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xHZXRWZXJ0ZXhBdHRyaWJmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0
dHJpYml2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYp
OworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbElzRnJhbWVidWZmZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xJc1Byb2dyYW0pOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7CisgICAgU0VUX1BST0NfQURE
UkVTUyhnbElzU2hhZGVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsTGlua1Byb2dyYW0pOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKKyAgICBTRVRfUFJP
Q19BRERSRVNTKGdsU2FtcGxlQ292ZXJhZ2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xTaGFk
ZXJTb3VyY2UpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSk7CisgICAgU0VUX1BS
T0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNlcGFyYXRlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTFmKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm0xaXYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmYpOworICAgIFNFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtMmZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJp
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpdik7CisgICAgU0VUX1BST0NfQURE
UkVTUyhnbFVuaWZvcm0zZik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZnYpOwor
ICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2kpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtM2l2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRmKTsKKyAgICBT
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVu
aWZvcm00aSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aXYpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybU1hdHJpeDNmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXg0
ZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsKKyAgICBTRVRfUFJPQ19B
RERSRVNTKGdsVmFsaWRhdGVQcm9ncmFtKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliMWYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZnYpOworICAg
IFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIyZik7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbFZlcnRleEF0dHJpYjJmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJp
YjNmKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliM2Z2KTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliNGYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWI0ZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKTsKIAogICAgIGlmICghbV9jb250ZXh0VmFsaWQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJH
cmFwaGljc0NvbnRleHQzRDogQWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2
YWlsYWJsZSIpOwpAQCAtNDM2LDI2ICsxOTksMjYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQK
ICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBLCAxLCAxLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIDApOwogICAgIGdsQmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCi0gICAgZ2VuRnJhbWVidWZmZXJzKC8q
IGNvdW50ICovIDEsICZtX21haW5GYm8pOworICAgIF9nbEdlbkZyYW1lYnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmbV9tYWluRmJvKTsKICAgICBtX2N1cnJlbnRGYm8gPSBtX21haW5GYm87CiAKLSAg
ICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX21haW5G
Ym8pOworICAgIF9nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fbWFpbkZibyk7CiAKLSAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZt
X2RlcHRoQnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgIF9nbEdlblJlbmRlcmJ1ZmZlcnMoLyog
Y291bnQgKi8gMSwgJm1fZGVwdGhCdWZmZXIpOworICAgIF9nbEJpbmRSZW5kZXJidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CiAjaWYgZGVmaW5l
ZChRVF9PUEVOR0xfRVNfMikKLSAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwg
Lyogd2lkdGggKi8gMSwgLyogaGVpZ2h0ICovIDEpOworICAgIF9nbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0NPTVBPTkVOVDE2LCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7CiAjZWxzZQot
ICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgLyogd2lkdGggKi8gMSwgLyogaGVp
Z2h0ICovIDEpOworICAgIF9nbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgLyogd2lk
dGggKi8gMSwgLyogaGVpZ2h0ICovIDEpOwogI2VuZGlmCiAKLSAgICBiaW5kUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwotIAotICAgIGZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90
ZXh0dXJlLCAwKTsKLSAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyAgICBfZ2xCaW5k
UmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworCisgICAg
X2dsRnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAgIF9nbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZm
ZXIpOwogICAgIGdsQ2xlYXJDb2xvcigvKiByZWQgKi8gMCwgLyogZ3JlZW4gKi8gMCwgLyogYmx1
ZSAqLyAwLCAvKiBhbHBoYSAqLyAwKTsKIAotICAgIGlmIChjaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgaWYgKF9nbENoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVJfQ09NUExFVEUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQz
RDogV2Fzbid0IGFibGUgdG8gY3JlYXRlIHRoZSBtYWluIGZyYW1lYnVmZmVyIik7CiAgICAgICAg
IG1fY29udGV4dFZhbGlkID0gZmFsc2U7CiAgICAgfQpAQCAtNTA0LDEwICsyNjcsMTAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29u
c3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKICAgICBtX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7CisgICAgX2dsQmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsKICAgICBnbFJlYWRQaXhlbHMo
LyogeCAqLyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFn
ZVBpeGVscyk7CiAKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX2N1cnJlbnRGYm8pOworICAgIF9nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CiAKICAgICAvLyBPcGVuR0wgZ2l2
ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20g
bGVmdAogICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4g
YXQgdGhlIHRvcCBsZWZ0LgpAQCAtNjI5LDE5ICszOTIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZ2xUZXhJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAw
KTsKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsK
ICAgIAotICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fbWFpbkZibyk7Ci0gICAgbV9pbnRlcm5hbC0+Ymlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFs
LT5tX2RlcHRoQnVmZmVyKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fbWFpbkZibyk7CisgICAgZ2xCaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVw
dGhCdWZmZXIpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgcmVuZGVyYnVmZmVy
U3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogI2Vsc2UKICAgICByZW5kZXJi
dWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwogI2VuZGlmCi0gICAgbV9p
bnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCAwKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgMCk7CiAgICAgCi0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRU
QUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3Rl
eHR1cmUsIDApOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFD
SE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVw
dGhCdWZmZXIpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3RleHR1cmUsIDApOworICAg
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CiAKLSAgICBHTGVudW0g
c3RhdHVzID0gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIpOworICAgIEdMZW51bSBzdGF0dXMgPSBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKICAgICBpZiAoc3RhdHVz
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewogICAgICAgICBM
T0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBXYXNuJ3QgYWJsZSB0byByZXNoYXBlIHRoZSBt
YWluIGZyYW1lYnVmZmVyIik7CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC02NTksNyAr
NDIyLDcgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0
ZXh0dXJlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1
cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtNjY3
LDcgKzQzMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7
CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsK
KyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEc2l6ZWkgbWF4Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNo
YWRlcnMpCkBAIC02ODUsMjYgKzQ0OCwyNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbgogewog
ICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRl
eCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKHRhcmdl
dCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5tX2N1cnJl
bnRGYm8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX21haW5GYm87Ci0gICAgbV9p
bnRlcm5hbC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJv
KTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZi
byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0
YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRU
ZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtNzE2
LDE5ICs0NzksMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xh
bXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKKyAgICBnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1v
ZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2Rl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdD
M0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
KG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5k
RnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQpAQCAtNzQwLDMxICs1MDMs
MzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3Is
IEdDM0RlbnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBh
cmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEs
IEdDM0RlbnVtIGRzdEFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RS
R0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0Is
IGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51
bSB1c2FnZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVz
YWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZm
ZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQs
IEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0
YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdl
dCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29s
b3IoR0MzRGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBh
KQpAQCAtODA1LDcgKzU2OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5j
b21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpA
QCAtODUzLDcgKzYxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTg2NSw3ICs2MjgsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3
QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAg
LTg4OSw3ICs2NTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0g
Y2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0Mz
RHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmZpbmlzaCgpCkBAIC05MDcsMTMgKzY3MCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVm
ZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwg
cmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1l
bnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50
IGxldmVsKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKHRh
cmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQpAQCAtOTI1LDcgKzY4
OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdl
dCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAt
OTM4LDE0ICs3MDEsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsK
LSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xF
TkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1h
bGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQg
c2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwg
JnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhM
ZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1l
TGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtOTcwLDE0ICs3MzMsMTQgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEdDM0R1aW50IGluZGUKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5n
ZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJv
Z3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpB
Q1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFt
ZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAgR0xzaXplaSBuYW1lTGVu
Z3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAg
ICBtX2ludGVybmFsLT5nZXRBY3RpdmVVbmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3Jh
bSksIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwor
ICAgIGdsR2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRl
eCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlm
ICghbmFtZUxlbmd0aCkgewogICAgICAgICBmYXN0RnJlZShuYW1lKTsKQEAgLTk5OCw3ICs3NjEs
NyBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gLTE7CiAgICAgCiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9p
bnRlcm5hbC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
KyAgICByZXR1cm4gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQpAQCAtMTAzNyw3ICs4MDAsNyBAQCBHQzNEYm9vbGVh
biBHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAg
ICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcihidWZmZXIp
OworICAgIHJldHVybiBnbElzQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc0VuYWJsZWQoR0MzRGVudW0gY2FwKQpAQCAtMTA1Miw3ICs4MTUsNyBA
QCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IGZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRl
cm5hbC0+aXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNGcmFtZWJ1
ZmZlcihmcmFtZWJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTA2MSw3ICs4MjQsNyBAQCBH
QzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gZ2xJc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIEdD
M0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2Jq
ZWN0IHJlbmRlcmJ1ZmZlcikKQEAgLTEwNzAsNyArODMzLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNSZW5kZXJidWZm
ZXIocmVuZGVyYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZm
ZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xMDc5LDcgKzg0Miw3IEBAIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAg
cmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzU2hhZGVyKHNoYWRlcik7CisgICAg
cmV0dXJuIGdsSXNTaGFkZXIoc2hhZGVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0Q6OmlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC0xMTAxLDcgKzg2
NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5saW5rUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCkBA
IC0xMTUyLDEzICs5MTUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVy
U3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm8KICAgICAgICAgYnJl
YWs7CiAgICAgfQogI2VuZGlmCi0gICAgbV9pbnRlcm5hbC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0
YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdD
M0Rib29sZWFuIGludmVydCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwor
ICAgIGdsU2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCkKQEAgLTExODQsNyArOTQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25zdCBTdHJpbmcm
IHNvdXIKICAgICBDU3RyaW5nIHNvdXJjZUNTID0gcHJlZml4ZWRTb3VyY2UudXRmOCgpOwogICAg
IGNvbnN0IGNoYXIqIGRhdGEgPSBzb3VyY2VDUy5kYXRhKCk7CiAgICAgaW50IGxlbmd0aCA9IHBy
ZWZpeGVkU291cmNlLmxlbmd0aCgpOwotICAgIG1faW50ZXJuYWwtPnNoYWRlclNvdXJjZSgoR0x1
aW50KSBzaGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKKyAgICBnbFNoYWRl
clNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywg
R0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCkBAIC0xMTk2LDcgKzk1OSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBH
QzNEdWludCBtYXNrKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0
ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFz
aykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAg
ICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKQEAgLTEyMDgs
NyArOTcxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQg
bWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVu
dW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwg
bWFzayk7CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZh
aWwsIEdDM0RlbnVtIHpwYXNzKQpAQCAtMTIyMCw3ICs5ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVt
IHpwYXNzKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVu
dW0gZmFjZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICBn
bFN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCB2YWx1ZSkKQEAgLTEyMzgsMTE1ICsxMDAxLDExNSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFm
KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xZihsb2NhdGlv
biwgdjApOworICAgIGdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQg
djAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKKyAg
ICBnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0Mz
RGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2
MSwgdjIpOworICAgIGdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zZnYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRm
KGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xV
bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5p
Zm9ybTFpKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWl2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50IHYwLCBHQzNEaW50IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwg
djEpOworICAgIGdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5
LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5
KTsKKyAgICBnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAs
IEdDM0RpbnQgdjEsIEdDM0RpbnQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2kobG9jYXRpb24sIHYwLCB2
MSwgdjIpOworICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9y
bTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGkobG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRp
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT51bmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGl2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNE
ZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgyZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1N
YXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwor
ICAgIGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQpAQCAtMTM1NCw3ICsxMTE3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0p
OwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3Jh
bSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMzYyLDYxICsxMTI1LDYxIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAg
QVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVy
dGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJy
YXkpOworICAgIGdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQg
djAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwor
ICAgIGdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJh
eSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0
cmliMmZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0Mz
RGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAg
IGdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0
dHJpYjNmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdD
M0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHYw
LCB2MSwgdjIsIHYzKTsKKyAgICBnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2
Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWlu
dCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmdihpbmRleCwg
YXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdD
M0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNp
emVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2ludGVy
KGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwg
R0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTQzNCw3ICsxMTk3LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEYm9vbGVhbiogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUp
OworICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGZsb2F0KiB2YWx1ZSkKQEAgLTE0NDYsNyArMTIwOSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFt
TmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJh
bU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYo
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE0NTgsNyArMTIyMSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGludCogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGds
R2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKQEAgLTE0NjYsNyArMTIyOSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1f
aW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19M
T0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGlj
c0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6
ZSA9IDA7CiAKQEAgLTE0NzQsNyArMTIzNyw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIGlmICghaW5m
bykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xv
Zyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5m
byk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNDg1LDE0ICsxMjQ4LDE0IEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsK
KyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAg
IEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKQEAgLTE1MDAsMTQgKzEyNjMsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwot
ICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklO
Rk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBo
aWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBz
aXplID0gMDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgp
OwogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+
Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0
U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5n
IHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE1MjAsMTQgKzEyODMsMTQg
QEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
IAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hh
ZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOwor
ICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJD
RV9MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIq
IGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAg
ICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRl
ciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBs
ZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFz
dEZyZWUoaW5mbyk7CkBAIC0xNTUwLDEzICsxMzEzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYo
cHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlKTsKKyAgICBnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQog
CiBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTY0LDE5ICsxMzI3LDE5
IEBAIEdDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWwtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0
VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0g
cGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4
LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJh
bU5hbWUsIHZhbHVlKTsKIH0KIAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKQEAg
LTE1ODQsNyArMTM0Nyw3IEBAIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVy
dGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwCiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICAKICAgICBHTHZvaWQqIHBvaW50ZXIg
PSAwOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJh
bU5hbWUsICZwb2ludGVyKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBw
YXJhbU5hbWUsICZwb2ludGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRy
PihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTE2MDUsNyAr
MTM2OCw3IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZl
cigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBH
THVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5CdWZmZXJzKC8qIGNvdW50ICov
IDEsICZoYW5kbGUpOworICAgIGdsR2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsK
ICAgICByZXR1cm4gaGFuZGxlOwogfQogCkBAIC0xNjEzLDI4ICsxMzc2LDI4IEBAIFBsYXRmb3Jt
M0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUg
PSAwOwotICAgIG1faW50ZXJuYWwtPmdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFu
ZGxlKTsKKyAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAg
ICByZXR1cm4gaGFuZGxlOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0
dXJuIGdsQ3JlYXRlUHJvZ3JhbSgpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlblJl
bmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdD
M0RlbnVtIHR5cGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlU2hhZGVyKHR5cGUpOworICAgIHJldHVy
biBnbENyZWF0ZVNoYWRlcih0eXBlKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCkBAIC0xNjQ4LDMxICsxNDExLDMxIEBAIFBsYXRmb3Jt
M0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZl
cik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZy
YW1lYnVmZmVyKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5k
ZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7
CisgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87062</attachid>
            <date>2011-03-27 00:55:36 -0700</date>
            <delta_ts>2011-03-28 06:48:20 -0700</delta_ts>
            <desc>Fixed typo in ChangeLog and style issue</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>84347</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNjI2ZmQxLi42ZTkyNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEy
IEBACisyMDExLTAzLTI3ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYXNrIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIEdMIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAorCisgICAgICAgIE1vZGlmaWVk
IE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgaW4gUXQgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdG8gbWFzayB0aGUgdXNlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRo
YXQgd2UgY2FuIGFkYXB0IHRvIGRpZmZlcmVudAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9y
IE9wZW5HTCBjYWxscy4gQ2xlYW5lZCB1cCBzeW1ib2wgcmVzb2x2ZXIgaW4gb3JkZXIKKyAgICAg
ICAgc2ltcGxpZnkgdGhlIGRlY2xhcmF0aW9uIG9mIG5ldyBzeW1ib2xzLgorCisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6aXNDb250ZXh0VmFsaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVm
ZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0
YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNT
aGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9y
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFy
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBh
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVz
ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRl
UHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJm
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Yp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVy
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpk
ZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxl
dGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZVNoYWRlcik6CisKIDIwMTEtMDMtMjYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMGVm
OGVkYS4uOTQ0YjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0MTAsNyArMzQxMCw4IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnMzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgg
XAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmggXAorICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREludGVybmFsUXQuaAogCiAgICAgIXY4IHsK
ICAgICAgICAgU09VUkNFUyArPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREludGVybmFsUXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYjNlY2MKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
REludGVybmFsUXQuaApAQCAtMCwwICsxLDYyOSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTAgVGlldG8gQ29ycG9yYXRpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICAgICAKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyov
CisKKyNpZm5kZWYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0X2gKKyNkZWZpbmUgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbFF0X2gKKworI2luY2x1ZGUgPFFHTENvbnRleHQ+CisjaW5jbHVk
ZSA8UUdyYXBoaWNzT2JqZWN0PgorCisjaWYgIWRlZmluZWQoR0xjaGFyKQordHlwZWRlZiBjaGFy
IEdMY2hhcjsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoR0xfREVQVEgyNF9TVEVOQ0lMOCkKKyNk
ZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOCAweDg4RjAKKyNlbmRpZgorCisjaWYgIWRlZmluZWQo
QVBJRU5UUlkpCisjZGVmaW5lIEFQSUVOVFJZCisjZW5kaWYKKworI2lmZGVmIFFUX09QRU5HTF9F
U18yCit0eXBlZGVmIEdMc2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Cit0eXBlZGVmIEdMaW50cHRy
IEdMaW50cHRyVHlwZTsKKyNlbHNlCit0eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsK
K3R5cGVkZWYgcHRyZGlmZl90IEdMaW50cHRyVHlwZTsKKyNlbmRpZgorCisjZGVmaW5lIERFQ0xB
UkVfUFJPQyhQcm9jKSBQcm9jIyNUeXBlIF8jI1Byb2M7CisKKyNpZiBkZWZpbmVkIChRVF9PUEVO
R0xfRVNfMikKKyNkZWZpbmUgU0VUX1BST0NfQUREUkVTUyhQcm9jKSBfIyNQcm9jID0gUHJvYwor
I2Vsc2UKKyNkZWZpbmUgU0VUX1BST0NfQUREUkVTUyhQcm9jKSBfIyNQcm9jID0gcmVpbnRlcnBy
ZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpCisjZW5kaWYKKworI2lm
bmRlZiBnbEFjdGl2ZVRleHR1cmUKKyNkZWZpbmUgZ2xBY3RpdmVUZXh0dXJlIG1faW50ZXJuYWwt
Pl9nbEFjdGl2ZVRleHR1cmUKKyNlbmRpZgorCisjaWZuZGVmIGdsQXR0YWNoU2hhZGVyCisjZGVm
aW5lIGdsQXR0YWNoU2hhZGVyIG1faW50ZXJuYWwtPl9nbEF0dGFjaFNoYWRlcgorI2VuZGlmCisK
KyNpZm5kZWYgZ2xCaW5kQXR0cmliTG9jYXRpb24KKyNkZWZpbmUgZ2xCaW5kQXR0cmliTG9jYXRp
b24gbV9pbnRlcm5hbC0+X2dsQmluZEF0dHJpYkxvY2F0aW9uCisjZW5kaWYKKworI2lmbmRlZiBn
bEJpbmRCdWZmZXIKKyNkZWZpbmUgZ2xCaW5kQnVmZmVyIG1faW50ZXJuYWwtPl9nbEJpbmRCdWZm
ZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsQmluZEZyYW1lYnVmZmVyCisjZGVmaW5lIGdsQmluZEZy
YW1lYnVmZmVyIG1faW50ZXJuYWwtPl9nbEJpbmRGcmFtZWJ1ZmZlcgorI2VuZGlmCisKKyNpZm5k
ZWYgZ2xCaW5kUmVuZGVyYnVmZmVyCisjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlciBtX2ludGVy
bmFsLT5fZ2xCaW5kUmVuZGVyYnVmZmVyCisjZW5kaWYKKworI2lmbmRlZiBnbEJsZW5kQ29sb3IK
KyNkZWZpbmUgZ2xCbGVuZENvbG9yIG1faW50ZXJuYWwtPl9nbEJsZW5kQ29sb3IKKyNlbmRpZgor
CisjaWZuZGVmIGdsQmxlbmRFcXVhdGlvbgorI2RlZmluZSBnbEJsZW5kRXF1YXRpb24gbV9pbnRl
cm5hbC0+X2dsQmxlbmRFcXVhdGlvbgorI2VuZGlmCisKKyNpZm5kZWYgZ2xCbGVuZEVxdWF0aW9u
U2VwYXJhdGUKKyNkZWZpbmUgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgbV9pbnRlcm5hbC0+X2ds
QmxlbmRFcXVhdGlvblNlcGFyYXRlCisjZW5kaWYKKworI2lmbmRlZiBnbEJsZW5kRnVuY1NlcGFy
YXRlCisjZGVmaW5lIGdsQmxlbmRGdW5jU2VwYXJhdGUgbV9pbnRlcm5hbC0+X2dsQmxlbmRGdW5j
U2VwYXJhdGUKKyNlbmRpZgorCisjaWZuZGVmIGdsQnVmZmVyRGF0YQorI2RlZmluZSBnbEJ1ZmZl
ckRhdGEgbV9pbnRlcm5hbC0+X2dsQnVmZmVyRGF0YQorI2VuZGlmCisKKyNpZm5kZWYgZ2xCdWZm
ZXJTdWJEYXRhCisjZGVmaW5lIGdsQnVmZmVyU3ViRGF0YSBtX2ludGVybmFsLT5fZ2xCdWZmZXJT
dWJEYXRhCisjZW5kaWYKKworI2lmbmRlZiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMKKyNkZWZp
bmUgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzIG1faW50ZXJuYWwtPl9nbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMKKyNlbmRpZgorCisjaWZuZGVmIGdsQ29tcGlsZVNoYWRlcgorI2RlZmluZSBnbENv
bXBpbGVTaGFkZXIgbV9pbnRlcm5hbC0+X2dsQ29tcGlsZVNoYWRlcgorI2VuZGlmCisKKyNpZm5k
ZWYgZ2xDcmVhdGVQcm9ncmFtCisjZGVmaW5lIGdsQ3JlYXRlUHJvZ3JhbSBtX2ludGVybmFsLT5f
Z2xDcmVhdGVQcm9ncmFtCisjZW5kaWYKKworI2lmbmRlZiBnbENyZWF0ZVNoYWRlcgorI2RlZmlu
ZSBnbENyZWF0ZVNoYWRlciBtX2ludGVybmFsLT5fZ2xDcmVhdGVTaGFkZXIKKyNlbmRpZgorCisj
aWZuZGVmIGdsRGVsZXRlQnVmZmVycworI2RlZmluZSBnbERlbGV0ZUJ1ZmZlcnMgbV9pbnRlcm5h
bC0+X2dsRGVsZXRlQnVmZmVycworI2VuZGlmCisKKyNpZm5kZWYgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMKKyNkZWZpbmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMgbV9pbnRlcm5hbC0+X2dsRGVsZXRlRnJh
bWVidWZmZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbERlbGV0ZVByb2dyYW0KKyNkZWZpbmUgZ2xE
ZWxldGVQcm9ncmFtIG1faW50ZXJuYWwtPl9nbERlbGV0ZVByb2dyYW0KKyNlbmRpZgorCisjaWZu
ZGVmIGdsRGVsZXRlUmVuZGVyYnVmZmVycworI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMg
bV9pbnRlcm5hbC0+X2dsRGVsZXRlUmVuZGVyYnVmZmVycworI2VuZGlmCisKKyNpZm5kZWYgZ2xE
ZWxldGVTaGFkZXIKKyNkZWZpbmUgZ2xEZWxldGVTaGFkZXIgbV9pbnRlcm5hbC0+X2dsRGVsZXRl
U2hhZGVyCisjZW5kaWYKKworI2lmbmRlZiBnbERldGFjaFNoYWRlcgorI2RlZmluZSBnbERldGFj
aFNoYWRlciBtX2ludGVybmFsLT5fZ2xEZXRhY2hTaGFkZXIKKyNlbmRpZgorCisjaWZuZGVmIGds
RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5CisjZGVmaW5lIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5IG1faW50ZXJuYWwtPl9nbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheQorI2VuZGlmCisKKyNp
Zm5kZWYgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheQorI2RlZmluZSBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5IG1faW50ZXJuYWwtPl9nbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5CisjZW5kaWYK
KworI2lmbmRlZiBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyCisjZGVmaW5lIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIgbV9pbnRlcm5hbC0+X2dsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIKKyNl
bmRpZgorCisjaWZuZGVmIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQKKyNkZWZpbmUgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRCBtX2ludGVybmFsLT5fZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAorI2VuZGlm
CisKKyNpZm5kZWYgZ2xHZW5CdWZmZXJzCisjZGVmaW5lIGdsR2VuQnVmZmVycyBtX2ludGVybmFs
LT5fZ2xHZW5CdWZmZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbEdlbmVyYXRlTWlwbWFwCisjZGVm
aW5lIGdsR2VuZXJhdGVNaXBtYXAgbV9pbnRlcm5hbC0+X2dsR2VuZXJhdGVNaXBtYXAKKyNlbmRp
ZgorCisjaWZuZGVmIGdsR2VuRnJhbWVidWZmZXJzCisjZGVmaW5lIGdsR2VuRnJhbWVidWZmZXJz
IG1faW50ZXJuYWwtPl9nbEdlbkZyYW1lYnVmZmVycworI2VuZGlmCisKKyNpZm5kZWYgZ2xHZW5S
ZW5kZXJidWZmZXJzCisjZGVmaW5lIGdsR2VuUmVuZGVyYnVmZmVycyBtX2ludGVybmFsLT5fZ2xH
ZW5SZW5kZXJidWZmZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbEdldEFjdGl2ZUF0dHJpYgorI2Rl
ZmluZSBnbEdldEFjdGl2ZUF0dHJpYiBtX2ludGVybmFsLT5fZ2xHZXRBY3RpdmVBdHRyaWIKKyNl
bmRpZgorCisjaWZuZGVmIGdsR2V0QWN0aXZlVW5pZm9ybQorI2RlZmluZSBnbEdldEFjdGl2ZVVu
aWZvcm0gbV9pbnRlcm5hbC0+X2dsR2V0QWN0aXZlVW5pZm9ybQorI2VuZGlmCisKKyNpZm5kZWYg
Z2xHZXRBdHRhY2hlZFNoYWRlcnMKKyNkZWZpbmUgZ2xHZXRBdHRhY2hlZFNoYWRlcnMgbV9pbnRl
cm5hbC0+X2dsR2V0QXR0YWNoZWRTaGFkZXJzCisjZW5kaWYKKworI2lmbmRlZiBnbEdldEF0dHJp
YkxvY2F0aW9uCisjZGVmaW5lIGdsR2V0QXR0cmliTG9jYXRpb24gbV9pbnRlcm5hbC0+X2dsR2V0
QXR0cmliTG9jYXRpb24KKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYK
KyNkZWZpbmUgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiBtX2ludGVybmFsLT5fZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdgorI2RlZmluZSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
IG1faW50ZXJuYWwtPl9nbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2CisjZW5k
aWYKKworI2lmbmRlZiBnbEdldFByb2dyYW1JbmZvTG9nCisjZGVmaW5lIGdsR2V0UHJvZ3JhbUlu
Zm9Mb2cgbV9pbnRlcm5hbC0+X2dsR2V0UHJvZ3JhbUluZm9Mb2cKKyNlbmRpZgorCisjaWZuZGVm
IGdsR2V0UHJvZ3JhbWl2CisjZGVmaW5lIGdsR2V0UHJvZ3JhbWl2IG1faW50ZXJuYWwtPl9nbEdl
dFByb2dyYW1pdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dgorI2RlZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IG1faW50ZXJuYWwtPl9nbEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2CisjZW5kaWYKKworI2lmbmRlZiBnbEdldFNoYWRlcklu
Zm9Mb2cKKyNkZWZpbmUgZ2xHZXRTaGFkZXJJbmZvTG9nIG1faW50ZXJuYWwtPl9nbEdldFNoYWRl
ckluZm9Mb2cKKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0U2hhZGVyaXYKKyNkZWZpbmUgZ2xHZXRT
aGFkZXJpdiBtX2ludGVybmFsLT5fZ2xHZXRTaGFkZXJpdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xH
ZXRTaGFkZXJTb3VyY2UKKyNkZWZpbmUgZ2xHZXRTaGFkZXJTb3VyY2UgbV9pbnRlcm5hbC0+X2ds
R2V0U2hhZGVyU291cmNlCisjZW5kaWYKKworI2lmbmRlZiBnbEdldFVuaWZvcm1Mb2NhdGlvbgor
I2RlZmluZSBnbEdldFVuaWZvcm1Mb2NhdGlvbiBtX2ludGVybmFsLT5fZ2xHZXRVbmlmb3JtTG9j
YXRpb24KKyNlbmRpZgorCisjaWZuZGVmIGdsR2V0VW5pZm9ybWZ2CisjZGVmaW5lIGdsR2V0VW5p
Zm9ybWZ2IG1faW50ZXJuYWwtPl9nbEdldFVuaWZvcm1mdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xH
ZXRVbmlmb3JtaXYKKyNkZWZpbmUgZ2xHZXRVbmlmb3JtaXYgbV9pbnRlcm5hbC0+X2dsR2V0VW5p
Zm9ybWl2CisjZW5kaWYKKworI2lmbmRlZiBnbEdldFZlcnRleEF0dHJpYmZ2CisjZGVmaW5lIGds
R2V0VmVydGV4QXR0cmliZnYgbV9pbnRlcm5hbC0+X2dsR2V0VmVydGV4QXR0cmliZnYKKyNlbmRp
ZgorCisjaWZuZGVmIGdsR2V0VmVydGV4QXR0cmliaXYKKyNkZWZpbmUgZ2xHZXRWZXJ0ZXhBdHRy
aWJpdiBtX2ludGVybmFsLT5fZ2xHZXRWZXJ0ZXhBdHRyaWJpdgorI2VuZGlmCisKKyNpZm5kZWYg
Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydgorI2RlZmluZSBnbEdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2IG1faW50ZXJuYWwtPl9nbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2CisjZW5kaWYKKworI2lm
bmRlZiBnbElzQnVmZmVyCisjZGVmaW5lIGdsSXNCdWZmZXIgbV9pbnRlcm5hbC0+X2dsSXNCdWZm
ZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsSXNGcmFtZWJ1ZmZlcgorI2RlZmluZSBnbElzRnJhbWVi
dWZmZXIgbV9pbnRlcm5hbC0+X2dsSXNGcmFtZWJ1ZmZlcgorI2VuZGlmCisKKyNpZm5kZWYgZ2xJ
c1Byb2dyYW0KKyNkZWZpbmUgZ2xJc1Byb2dyYW0gbV9pbnRlcm5hbC0+X2dsSXNQcm9ncmFtCisj
ZW5kaWYKKworI2lmbmRlZiBnbElzUmVuZGVyYnVmZmVyCisjZGVmaW5lIGdsSXNSZW5kZXJidWZm
ZXIgbV9pbnRlcm5hbC0+X2dsSXNSZW5kZXJidWZmZXIKKyNlbmRpZgorCisjaWZuZGVmIGdsSXNT
aGFkZXIKKyNkZWZpbmUgZ2xJc1NoYWRlciBtX2ludGVybmFsLT5fZ2xJc1NoYWRlcgorI2VuZGlm
CisKKyNpZm5kZWYgZ2xMaW5rUHJvZ3JhbQorI2RlZmluZSBnbExpbmtQcm9ncmFtIG1faW50ZXJu
YWwtPl9nbExpbmtQcm9ncmFtCisjZW5kaWYKKworI2lmbmRlZiBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UKKyNkZWZpbmUgZ2xSZW5kZXJidWZmZXJTdG9yYWdlIG1faW50ZXJuYWwtPl9nbFJlbmRlcmJ1
ZmZlclN0b3JhZ2UKKyNlbmRpZgorCisjaWZuZGVmIGdsU2FtcGxlQ292ZXJhZ2UKKyNkZWZpbmUg
Z2xTYW1wbGVDb3ZlcmFnZSBtX2ludGVybmFsLT5fZ2xTYW1wbGVDb3ZlcmFnZQorI2VuZGlmCisK
KyNpZm5kZWYgZ2xTaGFkZXJTb3VyY2UKKyNkZWZpbmUgZ2xTaGFkZXJTb3VyY2UgbV9pbnRlcm5h
bC0+X2dsU2hhZGVyU291cmNlCisjZW5kaWYKKworI2lmbmRlZiBnbFN0ZW5jaWxGdW5jU2VwYXJh
dGUKKyNkZWZpbmUgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIG1faW50ZXJuYWwtPl9nbFN0ZW5jaWxG
dW5jU2VwYXJhdGUKKyNlbmRpZgorCisjaWZuZGVmIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZQorI2Rl
ZmluZSBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUgbV9pbnRlcm5hbC0+X2dsU3RlbmNpbE1hc2tTZXBh
cmF0ZQorI2VuZGlmCisKKyNpZm5kZWYgZ2xTdGVuY2lsT3BTZXBhcmF0ZQorI2RlZmluZSBnbFN0
ZW5jaWxPcFNlcGFyYXRlIG1faW50ZXJuYWwtPl9nbFN0ZW5jaWxPcFNlcGFyYXRlCisjZW5kaWYK
KworI2lmbmRlZiBnbFVuaWZvcm0xZgorI2RlZmluZSBnbFVuaWZvcm0xZiBtX2ludGVybmFsLT5f
Z2xVbmlmb3JtMWYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTFmdgorI2RlZmluZSBnbFVu
aWZvcm0xZnYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTFmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xV
bmlmb3JtMWkKKyNkZWZpbmUgZ2xVbmlmb3JtMWkgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTFpCisj
ZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0xaXYKKyNkZWZpbmUgZ2xVbmlmb3JtMWl2IG1faW50
ZXJuYWwtPl9nbFVuaWZvcm0xaXYKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTJmCisjZGVm
aW5lIGdsVW5pZm9ybTJmIG1faW50ZXJuYWwtPl9nbFVuaWZvcm0yZgorI2VuZGlmCisKKyNpZm5k
ZWYgZ2xVbmlmb3JtMmZ2CisjZGVmaW5lIGdsVW5pZm9ybTJmdiBtX2ludGVybmFsLT5fZ2xVbmlm
b3JtMmZ2CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0yaQorI2RlZmluZSBnbFVuaWZvcm0y
aSBtX2ludGVybmFsLT5fZ2xVbmlmb3JtMmkKKyNlbmRpZgorCisjaWZuZGVmIGdsVW5pZm9ybTJp
dgorI2RlZmluZSBnbFVuaWZvcm0yaXYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTJpdgorI2VuZGlm
CisKKyNpZm5kZWYgZ2xVbmlmb3JtM2YKKyNkZWZpbmUgZ2xVbmlmb3JtM2YgbV9pbnRlcm5hbC0+
X2dsVW5pZm9ybTNmCisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm0zZnYKKyNkZWZpbmUgZ2xV
bmlmb3JtM2Z2IG1faW50ZXJuYWwtPl9nbFVuaWZvcm0zZnYKKyNlbmRpZgorCisjaWZuZGVmIGds
VW5pZm9ybTNpCisjZGVmaW5lIGdsVW5pZm9ybTNpIG1faW50ZXJuYWwtPl9nbFVuaWZvcm0zaQor
I2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtM2l2CisjZGVmaW5lIGdsVW5pZm9ybTNpdiBtX2lu
dGVybmFsLT5fZ2xVbmlmb3JtM2l2CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm00ZgorI2Rl
ZmluZSBnbFVuaWZvcm00ZiBtX2ludGVybmFsLT5fZ2xVbmlmb3JtNGYKKyNlbmRpZgorCisjaWZu
ZGVmIGdsVW5pZm9ybTRmdgorI2RlZmluZSBnbFVuaWZvcm00ZnYgbV9pbnRlcm5hbC0+X2dsVW5p
Zm9ybTRmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xVbmlmb3JtNGkKKyNkZWZpbmUgZ2xVbmlmb3Jt
NGkgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybTRpCisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm00
aXYKKyNkZWZpbmUgZ2xVbmlmb3JtNGl2IG1faW50ZXJuYWwtPl9nbFVuaWZvcm00aXYKKyNlbmRp
ZgorCisjaWZuZGVmIGdsVW5pZm9ybU1hdHJpeDJmdgorI2RlZmluZSBnbFVuaWZvcm1NYXRyaXgy
ZnYgbV9pbnRlcm5hbC0+X2dsVW5pZm9ybU1hdHJpeDJmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xV
bmlmb3JtTWF0cml4M2Z2CisjZGVmaW5lIGdsVW5pZm9ybU1hdHJpeDNmdiBtX2ludGVybmFsLT5f
Z2xVbmlmb3JtTWF0cml4M2Z2CisjZW5kaWYKKworI2lmbmRlZiBnbFVuaWZvcm1NYXRyaXg0ZnYK
KyNkZWZpbmUgZ2xVbmlmb3JtTWF0cml4NGZ2IG1faW50ZXJuYWwtPl9nbFVuaWZvcm1NYXRyaXg0
ZnYKKyNlbmRpZgorCisjaWZuZGVmIGdsVXNlUHJvZ3JhbQorI2RlZmluZSBnbFVzZVByb2dyYW0g
bV9pbnRlcm5hbC0+X2dsVXNlUHJvZ3JhbQorI2VuZGlmCisKKyNpZm5kZWYgZ2xWYWxpZGF0ZVBy
b2dyYW0KKyNkZWZpbmUgZ2xWYWxpZGF0ZVByb2dyYW0gbV9pbnRlcm5hbC0+X2dsVmFsaWRhdGVQ
cm9ncmFtCisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjFmCisjZGVmaW5lIGdsVmVy
dGV4QXR0cmliMWYgbV9pbnRlcm5hbC0+X2dsVmVydGV4QXR0cmliMWYKKyNlbmRpZgorCisjaWZu
ZGVmIGdsVmVydGV4QXR0cmliMWZ2CisjZGVmaW5lIGdsVmVydGV4QXR0cmliMWZ2IG1faW50ZXJu
YWwtPl9nbFZlcnRleEF0dHJpYjFmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xWZXJ0ZXhBdHRyaWIy
ZgorI2RlZmluZSBnbFZlcnRleEF0dHJpYjJmIG1faW50ZXJuYWwtPl9nbFZlcnRleEF0dHJpYjJm
CisjZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjJmdgorI2RlZmluZSBnbFZlcnRleEF0
dHJpYjJmdiBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWIyZnYKKyNlbmRpZgorCisjaWZuZGVm
IGdsVmVydGV4QXR0cmliM2YKKyNkZWZpbmUgZ2xWZXJ0ZXhBdHRyaWIzZiBtX2ludGVybmFsLT5f
Z2xWZXJ0ZXhBdHRyaWIzZgorI2VuZGlmCisKKyNpZm5kZWYgZ2xWZXJ0ZXhBdHRyaWIzZnYKKyNk
ZWZpbmUgZ2xWZXJ0ZXhBdHRyaWIzZnYgbV9pbnRlcm5hbC0+X2dsVmVydGV4QXR0cmliM2Z2Cisj
ZW5kaWYKKworI2lmbmRlZiBnbFZlcnRleEF0dHJpYjRmCisjZGVmaW5lIGdsVmVydGV4QXR0cmli
NGYgbV9pbnRlcm5hbC0+X2dsVmVydGV4QXR0cmliNGYKKyNlbmRpZgorCisjaWZuZGVmIGdsVmVy
dGV4QXR0cmliNGZ2CisjZGVmaW5lIGdsVmVydGV4QXR0cmliNGZ2IG1faW50ZXJuYWwtPl9nbFZl
cnRleEF0dHJpYjRmdgorI2VuZGlmCisKKyNpZm5kZWYgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyCisj
ZGVmaW5lIGdsVmVydGV4QXR0cmliUG9pbnRlciBtX2ludGVybmFsLT5fZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEFjdGl2ZVRleHR1cmVUeXBlKSAoR0xlbnVtKTsKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQXR0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKK3R5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBj
b25zdCBjaGFyKik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAo
R0xlbnVtLCBHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZm
ZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5k
UmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQmxlbmRDb2xvclR5cGUpIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNs
YW1wZik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xl
bnVtKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlw
ZSkoR0xlbnVtLCBHTGVudW0pOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNT
ZXBhcmF0ZVR5cGUpKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBo
YSwgR0xlbnVtIGRzdEFscGhhKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0
YVR5cGUpIChHTGVudW0sIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwor
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xp
bnRwdHJUeXBlLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKik7Cit0eXBlZGVmIEdMZW51
bSAoQVBJRU5UUlkqIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwordHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xDb21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Cit0eXBl
ZGVmIEdMdWludCAoQVBJRU5UUlkqIGdsQ3JlYXRlUHJvZ3JhbVR5cGUpICgpOwordHlwZWRlZiBH
THVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVNoYWRlclR5cGUpIChHTGVudW0pOwordHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEZWxldGVCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWlu
dCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAo
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVs
ZXRlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxl
dGVSZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Cit0eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVNoYWRlclR5cGUpIChHTHVpbnQpOwordHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEZXRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwordHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1
aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlU
eXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVu
dW0sIEdMZW51bSwgR0x1aW50LCBHTGludCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdl
bkJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdlbmVyYXRlTWlwbWFwVHlwZSkgKEdMZW51bSB0YXJnZXQpOwordHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Cit0eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1
aW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChH
THVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFy
Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1
aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciop
OwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1
aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0x1aW50Kik7Cit0eXBlZGVmIEdMaW50IChBUElFTlRS
WSogZ2xHZXRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKK3R5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBH
TGVudW0sIEdMaW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50
KiBwYXJhbXMpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5
cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Cit0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdldFByb2dyYW1pdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKK3R5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAo
R0xlbnVtLCBHTGVudW0sIEdMaW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNo
YWRlckluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwordHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwg
R0xpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkg
KEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKK3R5cGVkZWYgR0xpbnQgKEFQSUVO
VFJZKiBnbEdldFVuaWZvcm1Mb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKK3R5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQs
IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkg
KEdMdWludCwgR0xpbnQsIEdMaW50Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZl
cnRleEF0dHJpYmZ2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBH
TGludCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0x2b2lkKiopOwordHlwZWRlZiBHTGJvb2xlYW4gKEFQ
SUVOVFJZKiBnbElzQnVmZmVyVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoQVBJ
RU5UUlkqIGdsSXNGcmFtZWJ1ZmZlclR5cGUpIChHTHVpbnQpOwordHlwZWRlZiBHTGJvb2xlYW4g
KEFQSUVOVFJZKiBnbElzUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwordHlwZWRlZiBHTGJvb2xlYW4g
KEFQSUVOVFJZKiBnbElzUmVuZGVyYnVmZmVyVHlwZSkgKEdMdWludCk7Cit0eXBlZGVmIEdMYm9v
bGVhbiAoQVBJRU5UUlkqIGdsSXNTaGFkZXJUeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsTGlua1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXpl
aSwgR0xzaXplaSk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlw
ZSkgKEdMY2xhbXBmLCBHTGJvb2xlYW4pOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFk
ZXJTb3VyY2VUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50
Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAo
R0xlbnVtLCBHTGVudW0sIEdMaW50LCBHTHVpbnQpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xTdGVuY2lsTWFza1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKK3R5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdM
ZW51bSwgR0xlbnVtKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkg
KEdMaW50LCBHTGZsb2F0KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5
cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtMWlUeXBlKSAoR0xpbnQsIEdMaW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybTFpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsK
K3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0
LCBHTGZsb2F0KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChH
TGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtMmlUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCk7Cit0eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0yaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7
Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9h
dCwgR0xmbG9hdCwgR0xmbG9hdCk7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0z
ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTNpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsK
K3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgY29uc3QgR0xpbnQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlw
ZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3Qg
R0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xp
bnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTRpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKK3R5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm1NYXRyaXgzZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3Qg
R0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlw
ZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVXNlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwordHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xWYWxpZGF0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKK3R5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0
KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRy
aWIyZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwordHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBH
TGZsb2F0Kik7Cit0eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkg
KEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Cit0
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQqKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZU
eXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0
LCBjb25zdCBHTGZsb2F0KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmli
NGZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwordHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xi
b29sZWFuLCBHTHNpemVpLCBjb25zdCBHTHZvaWQqKTsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgeworcHVibGljOgorICAgIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMsIEhvc3RX
aW5kb3cqKTsKKyAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOworCisgICAgYm9vbCBp
c0NvbnRleHRWYWxpZCgpIHsgcmV0dXJuIG1fY29udGV4dFZhbGlkOyB9CisgICAgUUdMV2lkZ2V0
KiBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CisgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0
IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKKyAgICBRUmVjdEYgYm91bmRp
bmdSZWN0KCkgY29uc3Q7CisKKyAgICBERUNMQVJFX1BST0MoZ2xBY3RpdmVUZXh0dXJlKQorICAg
IERFQ0xBUkVfUFJPQyhnbEF0dGFjaFNoYWRlcikKKyAgICBERUNMQVJFX1BST0MoZ2xCaW5kQXR0
cmliTG9jYXRpb24pCisgICAgREVDTEFSRV9QUk9DKGdsQmluZEJ1ZmZlcikKKyAgICBERUNMQVJF
X1BST0MoZ2xCaW5kRnJhbWVidWZmZXIpCisgICAgREVDTEFSRV9QUk9DKGdsQmluZFJlbmRlcmJ1
ZmZlcikKKyAgICBERUNMQVJFX1BST0MoZ2xCbGVuZENvbG9yKQorICAgIERFQ0xBUkVfUFJPQyhn
bEJsZW5kRXF1YXRpb24pCisgICAgREVDTEFSRV9QUk9DKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
KQorICAgIERFQ0xBUkVfUFJPQyhnbEJsZW5kRnVuY1NlcGFyYXRlKQorICAgIERFQ0xBUkVfUFJP
QyhnbEJ1ZmZlckRhdGEpCisgICAgREVDTEFSRV9QUk9DKGdsQnVmZmVyU3ViRGF0YSkKKyAgICBE
RUNMQVJFX1BST0MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKQorICAgIERFQ0xBUkVfUFJPQyhn
bENvbXBpbGVTaGFkZXIpCisgICAgREVDTEFSRV9QUk9DKGdsQ3JlYXRlUHJvZ3JhbSkKKyAgICBE
RUNMQVJFX1BST0MoZ2xDcmVhdGVTaGFkZXIpCisgICAgREVDTEFSRV9QUk9DKGdsRGVsZXRlQnVm
ZmVycykKKyAgICBERUNMQVJFX1BST0MoZ2xEZWxldGVGcmFtZWJ1ZmZlcnMpCisgICAgREVDTEFS
RV9QUk9DKGdsRGVsZXRlUHJvZ3JhbSkKKyAgICBERUNMQVJFX1BST0MoZ2xEZWxldGVSZW5kZXJi
dWZmZXJzKQorICAgIERFQ0xBUkVfUFJPQyhnbERlbGV0ZVNoYWRlcikKKyAgICBERUNMQVJFX1BS
T0MoZ2xEZXRhY2hTaGFkZXIpCisgICAgREVDTEFSRV9QUk9DKGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KQorICAgIERFQ0xBUkVfUFJPQyhnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KQorICAg
IERFQ0xBUkVfUFJPQyhnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKQorICAgIERFQ0xBUkVfUFJP
QyhnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKQorICAgIERFQ0xBUkVfUFJPQyhnbEdlbkJ1ZmZlcnMp
CisgICAgREVDTEFSRV9QUk9DKGdsR2VuZXJhdGVNaXBtYXApCisgICAgREVDTEFSRV9QUk9DKGds
R2VuRnJhbWVidWZmZXJzKQorICAgIERFQ0xBUkVfUFJPQyhnbEdlblJlbmRlcmJ1ZmZlcnMpCisg
ICAgREVDTEFSRV9QUk9DKGdsR2V0QWN0aXZlQXR0cmliKQorICAgIERFQ0xBUkVfUFJPQyhnbEdl
dEFjdGl2ZVVuaWZvcm0pCisgICAgREVDTEFSRV9QUk9DKGdsR2V0QXR0YWNoZWRTaGFkZXJzKQor
ICAgIERFQ0xBUkVfUFJPQyhnbEdldEF0dHJpYkxvY2F0aW9uKQorICAgIERFQ0xBUkVfUFJPQyhn
bEdldEJ1ZmZlclBhcmFtZXRlcml2KQorICAgIERFQ0xBUkVfUFJPQyhnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KQorICAgIERFQ0xBUkVfUFJPQyhnbEdldFByb2dyYW1JbmZv
TG9nKQorICAgIERFQ0xBUkVfUFJPQyhnbEdldFByb2dyYW1pdikKKyAgICBERUNMQVJFX1BST0Mo
Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRTaGFk
ZXJJbmZvTG9nKQorICAgIERFQ0xBUkVfUFJPQyhnbEdldFNoYWRlcml2KQorICAgIERFQ0xBUkVf
UFJPQyhnbEdldFNoYWRlclNvdXJjZSkKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRVbmlmb3JtZnYp
CisgICAgREVDTEFSRV9QUk9DKGdsR2V0VW5pZm9ybWl2KQorICAgIERFQ0xBUkVfUFJPQyhnbEdl
dFVuaWZvcm1Mb2NhdGlvbikKKyAgICBERUNMQVJFX1BST0MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdikK
KyAgICBERUNMQVJFX1BST0MoZ2xHZXRWZXJ0ZXhBdHRyaWJpdikKKyAgICBERUNMQVJFX1BST0Mo
Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydikKKyAgICBERUNMQVJFX1BST0MoZ2xJc0J1ZmZlcikK
KyAgICBERUNMQVJFX1BST0MoZ2xJc0ZyYW1lYnVmZmVyKQorICAgIERFQ0xBUkVfUFJPQyhnbElz
UHJvZ3JhbSkKKyAgICBERUNMQVJFX1BST0MoZ2xJc1JlbmRlcmJ1ZmZlcikKKyAgICBERUNMQVJF
X1BST0MoZ2xJc1NoYWRlcikKKyAgICBERUNMQVJFX1BST0MoZ2xMaW5rUHJvZ3JhbSkKKyAgICBE
RUNMQVJFX1BST0MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKQorICAgIERFQ0xBUkVfUFJPQyhnbFNh
bXBsZUNvdmVyYWdlKQorICAgIERFQ0xBUkVfUFJPQyhnbFNoYWRlclNvdXJjZSkKKyAgICBERUNM
QVJFX1BST0MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKQorICAgIERFQ0xBUkVfUFJPQyhnbFN0ZW5j
aWxNYXNrU2VwYXJhdGUpCisgICAgREVDTEFSRV9QUk9DKGdsU3RlbmNpbE9wU2VwYXJhdGUpCisg
ICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTFmKQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm0x
ZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTFpKQorICAgIERFQ0xBUkVfUFJPQyhnbFVu
aWZvcm0xaXYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTJmKQorICAgIERFQ0xBUkVfUFJP
QyhnbFVuaWZvcm0yZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTJpKQorICAgIERFQ0xB
UkVfUFJPQyhnbFVuaWZvcm0yaXYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTNmKQorICAg
IERFQ0xBUkVfUFJPQyhnbFVuaWZvcm0zZnYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5pZm9ybTNp
KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm0zaXYpCisgICAgREVDTEFSRV9QUk9DKGdsVW5p
Zm9ybTRmKQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm00ZnYpCisgICAgREVDTEFSRV9QUk9D
KGdsVW5pZm9ybTRpKQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm00aXYpCisgICAgREVDTEFS
RV9QUk9DKGdsVW5pZm9ybU1hdHJpeDJmdikKKyAgICBERUNMQVJFX1BST0MoZ2xVbmlmb3JtTWF0
cml4M2Z2KQorICAgIERFQ0xBUkVfUFJPQyhnbFVuaWZvcm1NYXRyaXg0ZnYpCisgICAgREVDTEFS
RV9QUk9DKGdsVXNlUHJvZ3JhbSkKKyAgICBERUNMQVJFX1BST0MoZ2xWYWxpZGF0ZVByb2dyYW0p
CisgICAgREVDTEFSRV9QUk9DKGdsVmVydGV4QXR0cmliMWYpCisgICAgREVDTEFSRV9QUk9DKGds
VmVydGV4QXR0cmliMWZ2KQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0dHJpYjJmKQorICAg
IERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0dHJpYjJmdikKKyAgICBERUNMQVJFX1BST0MoZ2xWZXJ0
ZXhBdHRyaWIzZikKKyAgICBERUNMQVJFX1BST0MoZ2xWZXJ0ZXhBdHRyaWIzZnYpCisgICAgREVD
TEFSRV9QUk9DKGdsVmVydGV4QXR0cmliNGYpCisgICAgREVDTEFSRV9QUk9DKGdsVmVydGV4QXR0
cmliNGZ2KQorICAgIERFQ0xBUkVfUFJPQyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpCisKKyAgICBH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOworICAgIEhvc3RXaW5kb3cqIG1f
aG9zdFdpbmRvdzsKKyAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7CisgICAgUUdMV2lkZ2V0KiBt
X3ZpZXdwb3J0R0xXaWRnZXQ7CisgICAgUVJlY3RGIG1fYm91bmRpbmdSZWN0OworICAgIEdMdWlu
dCBtX3RleHR1cmU7CisgICAgR0x1aW50IG1fbWFpbkZibzsKKyAgICBHTHVpbnQgbV9jdXJyZW50
RmJvOworICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOworICAgIGJvb2wgbV9sYXllckNvbXBvc2l0
ZWQ7CisgICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5bnRoZXRpY0Vycm9yczsKKwor
ICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOworCitwcml2YXRlOgorCisg
ICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKTsKKyAgICBib29sIG1f
Y29udGV4dFZhbGlkOworfTsKKworfQorCisjZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbFF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggMTYxNTM5Ny4uZWFiOWQ2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzREludGVybmFs
UXQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RXaW5k
b3cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtNDIsMjQ0ICs0Myw2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFkZWZpbmVkKEdMY2hhcikKLXR5cGVkZWYgY2hhciBH
TGNoYXI7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEdMX0RFUFRIMjRfU1RFTkNJTDgpCi0jZGVm
aW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFQ
SUVOVFJZKQotI2RlZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xfRVNf
MgotdHlwZWRlZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0ciBH
TGludHB0clR5cGU7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Ci10
eXBlZGVmIHB0cmRpZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xBY3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEF0dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwg
Y29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkg
KEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVm
ZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmlu
ZFJlbmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEJsZW5kQ29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xj
bGFtcGYpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdM
ZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5
cGUpKEdMZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5j
U2VwYXJhdGVUeXBlKShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxw
aGEsIEdMZW51bSBkc3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRh
dGFUeXBlKSAoR0xlbnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdM
aW50cHRyVHlwZSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBHTGVu
dW0gKEFQSUVOVFJZKiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlw
ZWRlZiBHTHVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVkZWYg
R0x1aW50IChBUElFTlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVp
bnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkg
KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERl
bGV0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVs
ZXRlUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdM
dWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xl
bnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZW5CdWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZW5lcmF0ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdM
dWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAo
R0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hh
ciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdM
dWludCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdM
dWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJRU5U
UlkqIGdsR2V0QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwg
R0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGlu
dCogcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dU
eXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkg
KEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRT
aGFkZXJJbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0s
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUp
IChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChBUElF
TlRSWSogZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50
LCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUp
IChHTHVpbnQsIEdMaW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRW
ZXJ0ZXhBdHRyaWJmdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwg
R0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl
cnZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFuIChB
UElFTlRSWSogZ2xJc0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQ
SUVOVFJZKiBnbElzRnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFu
IChBUElFTlRSWSogZ2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFu
IChBUElFTlRSWSogZ2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJv
b2xlYW4gKEFQSUVOVFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6
ZWksIEdMc2l6ZWkpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5
cGUpIChHTGNsYW1wZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hh
ZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkg
KEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsU3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBH
TGVudW0sIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUp
IChHTGludCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZU
eXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9h
dCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTJpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xVbmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxv
YXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3Jt
M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6
ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5
cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdM
aW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm00aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6
ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtTWF0cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5
cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9h
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVp
bnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0
cmliMmZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUp
IChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBj
b25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRm
VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9h
dCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJp
YjRmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdM
Ym9vbGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKik7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwgOiBwdWJsaWMgUUdyYXBoaWNzT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBHcmFw
aGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKLSAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCgpOwotCi0gICAgYm9vbCBpc0NvbnRleHRWYWxpZCgpIHsgcmV0dXJuIG1fY29udGV4dFZhbGlk
OyB9Ci0gICAgUUdMV2lkZ2V0KiBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7Ci0gICAgdm9pZCBwYWlu
dChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsK
LSAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmVU
eXBlIGFjdGl2ZVRleHR1cmU7Ci0gICAgZ2xBdHRhY2hTaGFkZXJUeXBlIGF0dGFjaFNoYWRlcjsK
LSAgICBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUgYmluZEF0dHJpYkxvY2F0aW9uOwotICAgIGds
QmluZEJ1ZmZlclR5cGUgYmluZEJ1ZmZlcjsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlclR5cGUgYmlu
ZEZyYW1lYnVmZmVyOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUgYmluZFJlbmRlcmJ1ZmZl
cjsKLSAgICBnbEJsZW5kQ29sb3JUeXBlIGJsZW5kQ29sb3I7Ci0gICAgZ2xCbGVuZEVxdWF0aW9u
VHlwZSBibGVuZEVxdWF0aW9uOwotICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSBibGVu
ZEVxdWF0aW9uU2VwYXJhdGU7Ci0gICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5cGUgYmxlbmRGdW5j
U2VwYXJhdGU7Ci0gICAgZ2xCdWZmZXJEYXRhVHlwZSBidWZmZXJEYXRhOwotICAgIGdsQnVmZmVy
U3ViRGF0YVR5cGUgYnVmZmVyU3ViRGF0YTsKLSAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNU
eXBlIGNoZWNrRnJhbWVidWZmZXJTdGF0dXM7Ci0gICAgZ2xDb21waWxlU2hhZGVyVHlwZSBjb21w
aWxlU2hhZGVyOwotICAgIGdsQ3JlYXRlUHJvZ3JhbVR5cGUgY3JlYXRlUHJvZ3JhbTsKLSAgICBn
bENyZWF0ZVNoYWRlclR5cGUgY3JlYXRlU2hhZGVyOwotICAgIGdsRGVsZXRlQnVmZmVyc1R5cGUg
ZGVsZXRlQnVmZmVyczsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUgZGVsZXRlRnJhbWVi
dWZmZXJzOwotICAgIGdsRGVsZXRlUHJvZ3JhbVR5cGUgZGVsZXRlUHJvZ3JhbTsKLSAgICBnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlIGRlbGV0ZVJlbmRlcmJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVT
aGFkZXJUeXBlIGRlbGV0ZVNoYWRlcjsKLSAgICBnbERldGFjaFNoYWRlclR5cGUgZGV0YWNoU2hh
ZGVyOwotICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUgZW5hYmxlVmVydGV4
QXR0cmliQXJyYXk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5cGUgZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXI7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRFR5cGUgZnJhbWVidWZm
ZXJUZXh0dXJlMkQ7Ci0gICAgZ2xHZW5CdWZmZXJzVHlwZSBnZW5CdWZmZXJzOwotICAgIGdsR2Vu
ZXJhdGVNaXBtYXBUeXBlIGdlbmVyYXRlTWlwbWFwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzVHlw
ZSBnZW5GcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSBnZW5SZW5kZXJi
dWZmZXJzOwotICAgIGdsR2V0QWN0aXZlQXR0cmliVHlwZSBnZXRBY3RpdmVBdHRyaWI7Ci0gICAg
Z2xHZXRBY3RpdmVVbmlmb3JtVHlwZSBnZXRBY3RpdmVVbmlmb3JtOwotICAgIGdsR2V0QXR0YWNo
ZWRTaGFkZXJzVHlwZSBnZXRBdHRhY2hlZFNoYWRlcnM7Ci0gICAgZ2xHZXRBdHRyaWJMb2NhdGlv
blR5cGUgZ2V0QXR0cmliTG9jYXRpb247Ci0gICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUg
Z2V0QnVmZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdlR5cGUgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXY7Ci0gICAgZ2xH
ZXRQcm9ncmFtSW5mb0xvZ1R5cGUgZ2V0UHJvZ3JhbUluZm9Mb2c7Ci0gICAgZ2xHZXRQcm9ncmFt
aXZUeXBlIGdldFByb2dyYW1pdjsKLSAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlw
ZSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFNoYWRlckluZm9Mb2dUeXBl
IGdldFNoYWRlckluZm9Mb2c7Ci0gICAgZ2xHZXRTaGFkZXJpdlR5cGUgZ2V0U2hhZGVyaXY7Ci0g
ICAgZ2xHZXRTaGFkZXJTb3VyY2VUeXBlIGdldFNoYWRlclNvdXJjZTsKLSAgICBnbEdldFVuaWZv
cm1mdlR5cGUgZ2V0VW5pZm9ybWZ2OwotICAgIGdsR2V0VW5pZm9ybWl2VHlwZSBnZXRVbmlmb3Jt
aXY7Ci0gICAgZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlIGdldFVuaWZvcm1Mb2NhdGlvbjsKLSAg
ICBnbEdldFZlcnRleEF0dHJpYmZ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJmdjsKLSAgICBnbEdldFZl
cnRleEF0dHJpYml2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJpdjsKLSAgICBnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydjsKLSAgICBnbElzQnVmZmVyVHlw
ZSBpc0J1ZmZlcjsKLSAgICBnbElzRnJhbWVidWZmZXJUeXBlIGlzRnJhbWVidWZmZXI7Ci0gICAg
Z2xJc1Byb2dyYW1UeXBlIGlzUHJvZ3JhbTsKLSAgICBnbElzUmVuZGVyYnVmZmVyVHlwZSBpc1Jl
bmRlcmJ1ZmZlcjsKLSAgICBnbElzU2hhZGVyVHlwZSBpc1NoYWRlcjsKLSAgICBnbExpbmtQcm9n
cmFtVHlwZSBsaW5rUHJvZ3JhbTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlIHJlbmRl
cmJ1ZmZlclN0b3JhZ2U7Ci0gICAgZ2xTYW1wbGVDb3ZlcmFnZVR5cGUgc2FtcGxlQ292ZXJhZ2U7
Ci0gICAgZ2xTaGFkZXJTb3VyY2VUeXBlIHNoYWRlclNvdXJjZTsKLSAgICBnbFN0ZW5jaWxGdW5j
U2VwYXJhdGVUeXBlIHN0ZW5jaWxGdW5jU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsTWFza1NlcGFy
YXRlVHlwZSBzdGVuY2lsTWFza1NlcGFyYXRlOwotICAgIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBl
IHN0ZW5jaWxPcFNlcGFyYXRlOwotICAgIGdsVW5pZm9ybTFmVHlwZSB1bmlmb3JtMWY7Ci0gICAg
Z2xVbmlmb3JtMWZ2VHlwZSB1bmlmb3JtMWZ2OwotICAgIGdsVW5pZm9ybTFpVHlwZSB1bmlmb3Jt
MWk7Ci0gICAgZ2xVbmlmb3JtMWl2VHlwZSB1bmlmb3JtMWl2OwotICAgIGdsVW5pZm9ybTJmVHlw
ZSB1bmlmb3JtMmY7Ci0gICAgZ2xVbmlmb3JtMmZ2VHlwZSB1bmlmb3JtMmZ2OwotICAgIGdsVW5p
Zm9ybTJpVHlwZSB1bmlmb3JtMmk7Ci0gICAgZ2xVbmlmb3JtMml2VHlwZSB1bmlmb3JtMml2Owot
ICAgIGdsVW5pZm9ybTNmVHlwZSB1bmlmb3JtM2Y7Ci0gICAgZ2xVbmlmb3JtM2Z2VHlwZSB1bmlm
b3JtM2Z2OwotICAgIGdsVW5pZm9ybTNpVHlwZSB1bmlmb3JtM2k7Ci0gICAgZ2xVbmlmb3JtM2l2
VHlwZSB1bmlmb3JtM2l2OwotICAgIGdsVW5pZm9ybTRmVHlwZSB1bmlmb3JtNGY7Ci0gICAgZ2xV
bmlmb3JtNGZ2VHlwZSB1bmlmb3JtNGZ2OwotICAgIGdsVW5pZm9ybTRpVHlwZSB1bmlmb3JtNGk7
Ci0gICAgZ2xVbmlmb3JtNGl2VHlwZSB1bmlmb3JtNGl2OwotICAgIGdsVW5pZm9ybU1hdHJpeDJm
dlR5cGUgdW5pZm9ybU1hdHJpeDJmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXgzZnZUeXBlIHVuaWZv
cm1NYXRyaXgzZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSB1bmlmb3JtTWF0cml4NGZ2
OwotICAgIGdsVXNlUHJvZ3JhbVR5cGUgdXNlUHJvZ3JhbTsKLSAgICBnbFZhbGlkYXRlUHJvZ3Jh
bVR5cGUgdmFsaWRhdGVQcm9ncmFtOwotICAgIGdsVmVydGV4QXR0cmliMWZUeXBlIHZlcnRleEF0
dHJpYjFmOwotICAgIGdsVmVydGV4QXR0cmliMWZ2VHlwZSB2ZXJ0ZXhBdHRyaWIxZnY7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWIyZlR5cGUgdmVydGV4QXR0cmliMmY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIy
ZnZUeXBlIHZlcnRleEF0dHJpYjJmdjsKLSAgICBnbFZlcnRleEF0dHJpYjNmVHlwZSB2ZXJ0ZXhB
dHRyaWIzZjsKLSAgICBnbFZlcnRleEF0dHJpYjNmdlR5cGUgdmVydGV4QXR0cmliM2Z2OwotICAg
IGdsVmVydGV4QXR0cmliNGZUeXBlIHZlcnRleEF0dHJpYjRmOwotICAgIGdsVmVydGV4QXR0cmli
NGZ2VHlwZSB2ZXJ0ZXhBdHRyaWI0ZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSB2
ZXJ0ZXhBdHRyaWJQb2ludGVyOwotCi0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
bV9hdHRyczsKLSAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7Ci0gICAgUUdMV2lkZ2V0KiBt
X2dsV2lkZ2V0OwotICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0OwotICAgIFFSZWN0
RiBtX2JvdW5kaW5nUmVjdDsKLSAgICBHTHVpbnQgbV90ZXh0dXJlOwotICAgIEdMdWludCBtX21h
aW5GYm87Ci0gICAgR0x1aW50IG1fY3VycmVudEZibzsKLSAgICBHTHVpbnQgbV9kZXB0aEJ1ZmZl
cjsKLSAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkOwotICAgIExpc3RIYXNoU2V0PHVuc2lnbmVk
IGludD4gbV9zeW50aGV0aWNFcnJvcnM7Ci0KLSAgICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+IG1f
ZXh0ZW5zaW9uczsKLQotcHJpdmF0ZToKLQotICAgIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0
IFN0cmluZyYgcHJvYyk7Ci0gICAgYm9vbCBtX2NvbnRleHRWYWxpZDsKLX07Ci0KLSNpZiBkZWZp
bmVkIChRVF9PUEVOR0xfRVNfMikgCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgUHJv
YwotI2Vsc2UKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSByZWludGVycHJldF9jYXN0
PFByb2MjI1R5cGU+KGdldFByb2NBZGRyZXNzKCNQcm9jKSk7Ci0jZW5kaWYKLQogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgZGVmaW5lZCAo
UVRfT1BFTkdMX0VTXzIpCkBAIC0zMzAsOTYgKzkzLDk2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgYWN0aXZlVGV4dHVy
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIg
PSBHRVRfUFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKLSAgICBiaW5kQXR0cmliTG9jYXRp
b24gPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKLSAgICBiaW5kQnVm
ZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZl
ciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZmZXIpOwotICAgIGJpbmRSZW5kZXJi
dWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRD
b2xvciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKLSAgICBibGVuZEVxdWF0aW9u
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24pOwotICAgIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOwotICAg
IGJsZW5kRnVuY1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRl
KTsKLSAgICBidWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOwotICAg
IGJ1ZmZlclN1YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAg
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENvbXBp
bGVTaGFkZXIpOwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRl
UHJvZ3JhbSk7Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNo
YWRlcik7Ci0gICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZm
ZXJzKTsKLSAgICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRl
RnJhbWVidWZmZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbERl
bGV0ZVByb2dyYW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNT
KGdsRGVsZXRlUmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRlU2hhZGVyID0gR0VUX1BST0NfQURE
UkVTUyhnbERlbGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVT
UyhnbERldGFjaFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BS
T0NfQUREUkVTUyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkp
OwotICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2VuRnJhbWVidWZmZXJzID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKLSAgICBnZXRBY3RpdmVBdHRyaWIg
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKLSAgICBnZXRBY3RpdmVVbmlm
b3JtID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOwotICAgIGdldEF0dGFj
aGVkU2hhZGVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpOwotICAg
IGdldEF0dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9u
KTsKLSAgICBnZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZm
ZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYp
OwotICAgIGdldFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1J
bmZvTG9nKTsKLSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3Jh
bWl2KTsKLSAgICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKLSAgICBnZXRTaGFkZXJpdiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAgZ2V0U2hhZGVyU291cmNlID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0VW5pZm9ybUxvY2F0aW9uID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgZ2V0VmVydGV4QXR0cmli
ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliZnYpOwotICAgIGdldFZlcnRl
eEF0dHJpYml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2KTsKLSAgICBn
ZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRy
aWJQb2ludGVydik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIp
OwotICAgIGlzRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7
Ci0gICAgaXNQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNS
ZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOwotICAgIGlz
U2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFn
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVD
b3ZlcmFnZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVy
U291cmNlID0gR0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1
bmNTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAg
ICBzdGVuY2lsTWFza1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2Vw
YXJhdGUpOwotICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5j
aWxPcFNlcGFyYXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTFmKTsKLSAgICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOwot
ICAgIHVuaWZvcm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOwotICAgIHVuaWZv
cm0xaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7Ci0gICAgdW5pZm9ybTJmID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3JtMmkgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm0yaXYpOwotICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2YpOwot
ICAgIHVuaWZvcm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7Ci0gICAgdW5p
Zm9ybTNpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAgICB1bmlmb3JtNGYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3JtNGZ2ID0gR0VUX1BST0NfQUREUkVT
UyhnbFVuaWZvcm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtNGkpOwotICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7
Ci0gICAgdW5pZm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4
MmZ2KTsKLSAgICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1N
YXRyaXgzZnYpOwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5p
Zm9ybU1hdHJpeDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQ
cm9ncmFtKTsKLSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVmFsaWRh
dGVQcm9ncmFtKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0
ZXhBdHRyaWIxZik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZl
cnRleEF0dHJpYjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VmVydGV4QXR0cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xWZXJ0ZXhBdHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJpYjNmID0gR0VUX1BST0NfQUREUkVT
UyhnbFZlcnRleEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZnYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsVmVydGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4QXR0cmliNGZ2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVydGV4QXR0cmliUG9pbnRlciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsKKyAgICBTRVRfUFJPQ19BRERS
RVNTKGdsQWN0aXZlVGV4dHVyZSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEF0dGFjaFNoYWRl
cik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEJpbmRBdHRyaWJMb2NhdGlvbik7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCaW5k
RnJhbWVidWZmZXIpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRDb2xvcik7CisgICAgU0VUX1BST0NfQUREUkVT
UyhnbEJsZW5kRXF1YXRpb24pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9u
U2VwYXJhdGUpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEZ1bmNTZXBhcmF0ZSk7Cisg
ICAgU0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOworICAgIFNFVF9QUk9DX0FERFJFU1Mo
Z2xCdWZmZXJTdWJEYXRhKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFkZXIpOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVQcm9ncmFtKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
Q3JlYXRlU2hhZGVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlQnVmZmVycyk7Cisg
ICAgU0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUZyYW1lYnVmZmVycyk7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbERlbGV0ZVByb2dyYW0pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVS
ZW5kZXJidWZmZXJzKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlU2hhZGVyKTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsRGV0YWNoU2hhZGVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2VuQnVmZmVycyk7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbEdlbmVyYXRlTWlwbWFwKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2VuRnJh
bWVidWZmZXJzKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2VuUmVuZGVyYnVmZmVycyk7Cisg
ICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZUF0dHJpYik7CisgICAgU0VUX1BST0NfQURE
UkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRh
Y2hlZFNoYWRlcnMpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRyaWJMb2NhdGlvbik7
CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldEJ1ZmZlclBhcmFtZXRlcml2KTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOworICAg
IFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtSW5mb0xvZyk7CisgICAgU0VUX1BST0NfQURE
UkVTUyhnbEdldFByb2dyYW1pdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0U2hhZGVySW5mb0xv
Zyk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlcml2KTsKKyAgICBTRVRfUFJPQ19B
RERSRVNTKGdsR2V0U2hhZGVyU291cmNlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0VW5p
Zm9ybWZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybWl2KTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsR2V0VmVydGV4QXR0cmliZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhB
dHRyaWJpdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2
KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOworICAgIFNFVF9QUk9DX0FERFJF
U1MoZ2xJc0ZyYW1lYnVmZmVyKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xJc1NoYWRlcik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbExpbmtQcm9ncmFtKTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSk7CisgICAgU0VUX1BS
T0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsU2hh
ZGVyU291cmNlKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSk7
CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUpOworICAgIFNFVF9Q
Uk9DX0FERFJFU1MoZ2xTdGVuY2lsT3BTZXBhcmF0ZSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm0xZik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOworICAgIFNF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtMWl2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJmKTsKKyAgICBTRVRfUFJP
Q19BRERSRVNTKGdsVW5pZm9ybTJmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0y
aSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYpOworICAgIFNFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtM2YpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsK
KyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpKTsKKyAgICBTRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTNpdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00Zik7CisgICAg
U0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00ZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtNGkpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGl2KTsKKyAgICBTRVRf
UFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDJmdik7CisgICAgU0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm1NYXRyaXgzZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4
NGZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVXNlUHJvZ3JhbSk7CisgICAgU0VUX1BST0Nf
QUREUkVTUyhnbFZhbGlkYXRlUHJvZ3JhbSk7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjFmKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMWZ2KTsKKyAg
ICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMmYpOworICAgIFNFVF9QUk9DX0FERFJF
U1MoZ2xWZXJ0ZXhBdHRyaWIyZnYpOworICAgIFNFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRy
aWIzZik7CisgICAgU0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjNmdik7CisgICAgU0VU
X1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjRmKTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGds
VmVydGV4QXR0cmliNGZ2KTsKKyAgICBTRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliUG9p
bnRlcik7CiAKICAgICBpZiAoIW1fY29udGV4dFZhbGlkKSB7CiAgICAgICAgIExPR19FUlJPUigi
R3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVkZWQgT3BlbkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBh
dmFpbGFibGUiKTsKQEAgLTQzNiwyNiArMTk5LDI2IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
CiAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgMSwgMSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAwKTsKICAgICBnbEJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAotICAgIGdlbkZyYW1lYnVmZmVycygv
KiBjb3VudCAqLyAxLCAmbV9tYWluRmJvKTsKKyAgICBfZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fbWFpbkZibyk7CiAgICAgbV9jdXJyZW50RmJvID0gbV9tYWluRmJvOwogCi0g
ICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWlu
RmJvKTsKKyAgICBfZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX21haW5GYm8pOwogCi0gICAgZ2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAm
bV9kZXB0aEJ1ZmZlcik7Ci0gICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyAgICBfZ2xHZW5SZW5kZXJidWZmZXJzKC8q
IGNvdW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKKyAgICBfZ2xCaW5kUmVuZGVyYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogI2lmIGRlZmlu
ZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYs
IC8qIHdpZHRoICovIDEsIC8qIGhlaWdodCAqLyAxKTsKKyAgICBfZ2xSZW5kZXJidWZmZXJTdG9y
YWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNiwgLyogd2lkdGggKi8gMSwgLyogaGVpZ2h0ICovIDEpOwogI2Vsc2UK
LSAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIC8qIHdpZHRoICovIDEsIC8qIGhl
aWdodCAqLyAxKTsKKyAgICBfZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIC8qIHdp
ZHRoICovIDEsIC8qIGhlaWdodCAqLyAxKTsKICNlbmRpZgogCi0gICAgYmluZFJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKLSAKLSAgICBmcmFtZWJ1ZmZl
clRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1f
dGV4dHVyZSwgMCk7Ci0gICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAgX2dsQmlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKworICAg
IF9nbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyAgICBfZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVm
ZmVyKTsKICAgICBnbENsZWFyQ29sb3IoLyogcmVkICovIDAsIC8qIGdyZWVuICovIDAsIC8qIGJs
dWUgKi8gMCwgLyogYWxwaGEgKi8gMCk7CiAKLSAgICBpZiAoY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgIGlmIChfZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0NPTVBMRVRFKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0
M0Q6IFdhc24ndCBhYmxlIHRvIGNyZWF0ZSB0aGUgbWFpbiBmcmFtZWJ1ZmZlciIpOwogICAgICAg
ICBtX2NvbnRleHRWYWxpZCA9IGZhbHNlOwogICAgIH0KQEAgLTUwNCwxMCArMjY3LDEwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNv
bnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVy
cHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX21haW5GYm8pOworICAgIF9nbEJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fbWFpbkZibyk7CiAgICAgZ2xSZWFkUGl4ZWxz
KC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1h
Z2VQaXhlbHMpOwogCi0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKKyAgICBfZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOwogCiAgICAgLy8gT3BlbkdMIGdp
dmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgYm90dG9t
IGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9QTSwgd2l0aCB0aGUgb3JpZ2lu
IGF0IHRoZSB0b3AgbGVmdC4KQEAgLTYyOSwxOSArMzkyLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIGdsVGV4SW1hZ2UyRChH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8g
MCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7
CiAgICAKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX21haW5GYm8pOwotICAgIG1faW50ZXJuYWwtPmJp
bmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5h
bC0+bV9kZXB0aEJ1ZmZlcik7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX21haW5GYm8pOworICAgIGdsQmluZFJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFsLT5tX2Rl
cHRoQnVmZmVyKTsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKICNlbHNlCiAgICAgcmVuZGVy
YnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0KTsKICNlbmRpZgotICAgIG1f
aW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgMCk7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVIsIDApOwogICAgIAotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9pbnRlcm5hbC0+bV90
ZXh0dXJlLCAwKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRB
Q0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFsLT5tX2Rl
cHRoQnVmZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9pbnRlcm5hbC0+bV90ZXh0dXJlLCAwKTsKKyAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOwogCi0gICAgR0xlbnVt
IHN0YXR1cyA9IG1faW50ZXJuYWwtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBHTGVudW0gc3RhdHVzID0gZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7CiAgICAgaWYgKHN0YXR1
cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogV2Fzbid0IGFibGUgdG8gcmVzaGFwZSB0aGUg
bWFpbiBmcmFtZWJ1ZmZlciIpOwogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNjU5LDcg
KzQyMiw3IEBAIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZm
ZXJTaXplKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0g
dGV4dHVyZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgZ2xBY3RpdmVUZXh0
dXJlKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTY2
Nyw3ICs0MzAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0p
OwogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7
CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBz
aGFkZXJzKQpAQCAtNjg1LDI2ICs0NDgsMjYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW4KIHsK
ICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5k
ZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3Jh
bSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJn
ZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+bV9jdXJy
ZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9tYWluRmJvOwotICAgIG1f
aW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZi
byk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1cnJlbnRG
Ym8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVu
ZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIo
dGFyZ2V0LCByZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
VGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTcx
NiwxOSArNDc5LDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNs
YW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRDb2xvcihyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7CisgICAgZ2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBt
b2RlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICBnbEJsZW5kRXF1YXRpb24obW9k
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShH
QzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9u
U2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVu
ZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKQEAgLTc0MCwzMSArNTAz
LDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9y
LCBHQzNEZW51bSBkZmFjdG9yKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2Vw
YXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhh
LCBHQzNEZW51bSBkc3RBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdC
LCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVu
dW0gdXNhZ2UpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1
c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2Fn
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2Up
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVm
ZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0
LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlclN1YkRh
dGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIGdsQnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNE
OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNv
bG9yKEdDM0RjbGFtcGYgciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYg
YSkKQEAgLTgwNSw3ICs1NjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
Y29tcGlsZVNoYWRlcihzaGFkZXIpOworICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQs
IEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcikK
QEAgLTg1Myw3ICs2MTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHBy
b2dyYW0pOwogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNo
YWRlcik7CisgICAgZ2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCkBAIC04NjUsNyArNjI4LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJh
d0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCkBA
IC04ODksNyArNjUyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVt
IGNhcCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdD
M0R1aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAg
IGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmaW5pc2goKQpAQCAtOTA3LDEzICs2NzAsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1
ZmZlcik7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2ht
ZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGlu
dCBsZXZlbCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTkyNSw3ICs2
ODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CisgICAgZ2xHZW5lcmF0ZU1pcG1hcCh0YXJn
ZXQpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKQEAg
LTkzOCwxNCArNzAxLDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7
Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNE
OjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJv
Z3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RN
YWxsb2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50
IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFj
dGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUs
ICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4
TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFt
ZUxlbmd0aCkgewogICAgICAgICBmYXN0RnJlZShuYW1lKTsKQEAgLTk3MCwxNCArNzMzLDE0IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+
Z2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4
dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFBy
b2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6
QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5h
bWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxl
bmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0g
ICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dy
YW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsK
KyAgICBnbEdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5k
ZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBp
ZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC05OTgsNyArNzYx
LDcgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWwtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKQEAgLTEwMzcsNyArODAwLDcgQEAgR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQog
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNCdWZmZXIoYnVmZmVy
KTsKKyAgICByZXR1cm4gZ2xJc0J1ZmZlcihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKQEAgLTEwNTIsNyArODE1LDcg
QEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCBmcmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50
ZXJuYWwtPmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAgIHJldHVybiBnbElzRnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6
aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTEwNjEsNyArODI0LDcgQEAg
R0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1By
b2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQogCiBH
QzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9i
amVjdCByZW5kZXJidWZmZXIpCkBAIC0xMDcwLDcgKzgzMyw3IEBAIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUmVuZGVyYnVm
ZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNSZW5kZXJidWZmZXIocmVuZGVyYnVm
ZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMTA3OSw3ICs4NDIsNyBAQCBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAg
IHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1NoYWRlcihzaGFkZXIpOworICAg
IHJldHVybiBnbElzU2hhZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29u
dGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtMTEwMSw3ICs4
NjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0ocHJv
Z3JhbSk7CisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQpA
QCAtMTE1MiwxMyArOTE1LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICNlbmRpZgotICAgIG1faW50ZXJuYWwtPnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
dGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBH
QzNEYm9vbGVhbiBpbnZlcnQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsK
KyAgICBnbFNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQpCkBAIC0xMTg0LDcgKzk0Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgY29uc3QgU3RyaW5n
JiBzb3VyCiAgICAgQ1N0cmluZyBzb3VyY2VDUyA9IHByZWZpeGVkU291cmNlLnV0ZjgoKTsKICAg
ICBjb25zdCBjaGFyKiBkYXRhID0gc291cmNlQ1MuZGF0YSgpOwogICAgIGludCBsZW5ndGggPSBw
cmVmaXhlZFNvdXJjZS5sZW5ndGgoKTsKLSAgICBtX2ludGVybmFsLT5zaGFkZXJTb3VyY2UoKEdM
dWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CisgICAgZ2xTaGFk
ZXJTb3VyY2UoKEdMdWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMs
IEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQpAQCAtMTE5Niw3ICs5NTksNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwg
R0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJh
dGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1h
c2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Cisg
ICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCkBAIC0xMjA4
LDcgKzk3MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50
IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0Rl
bnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2Us
IG1hc2spOworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpm
YWlsLCBHQzNEZW51bSB6cGFzcykKQEAgLTEyMjAsNyArOTgzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51
bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0Rl
bnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAg
Z2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMjM4LDExNSArMTAwMSwxMTUgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0x
ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9jYXRp
b24sIHYwKTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJy
YXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7Cisg
ICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdD
M0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwg
djEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00
Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVu
aWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAs
IHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CisgICAgZ2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYw
LCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwg
djEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZv
cm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00
aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0Mz
RGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2KGxv
Y2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRy
YW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
TWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZv
cm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsK
KyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTEzNTQsNyArMTExNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dy
YW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTM2Miw2MSArMTEyNSw2MSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZl
cnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjAp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFy
cmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsK
KyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0
dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdD
M0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAg
ICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFy
cmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBH
QzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB2
MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2Miwg
djMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBH
QzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0Rz
aXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0
PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE0MzQsNyArMTE5Nyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xNDQ2LDcgKzEyMDksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVl
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2
KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNDU4LDcgKzEyMjEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RpbnQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0pCkBAIC0xNDY2LDcgKzEyMjksNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFBy
b2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBt
X2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9f
TE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNp
emUgPSAwOwogCkBAIC0xNDc0LDcgKzEyMzcsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBpZiAoIWlu
Zm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZv
TG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGlu
Zm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTQ4NSwxNCArMTI0OCwxNCBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFs
dWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1
ZSk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCkBAIC0xNTAwLDE0ICsxMjYzLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsK
LSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJ
TkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFw
aGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkg
c2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3Ro
KTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwt
PmdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdl
dFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmlu
ZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNTIwLDE0ICsxMjgzLDE0
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNo
YWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsK
KyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VS
Q0VfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFy
KiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAg
ICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZShzaGFk
ZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwg
bGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZh
c3RGcmVlKGluZm8pOwpAQCAtMTU1MCwxMyArMTMxMywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFt
ZSwgRwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdl
dFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0K
IAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTU2NCwxOSArMTMyNywx
OSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBt
X2ludGVybmFsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdl
dFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRl
eCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCkBA
IC0xNTg0LDcgKzEzNDcsNyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lkKiBwb2ludGVy
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFy
YW1OYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwg
cGFyYW1OYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0
cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNjA1LDcg
KzEzNjgsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZm
ZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAg
R0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygvKiBjb3VudCAq
LyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7
CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIApAQCAtMTYxMywyOCArMTM3NiwyOCBAQCBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxl
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhh
bmRsZSk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAg
ICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIHJl
dHVybiBnbENyZWF0ZVByb2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJu
YWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5S
ZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7
CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihH
QzNEZW51bSB0eXBlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICByZXR1
cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQpAQCAtMTY0OCwzMSArMTQxMSwzMSBAQCBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZm
ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0
Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZmZXJzKDEsICZm
cmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMo
MSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNo
YWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRlcihzaGFkZXIp
OworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87137</attachid>
            <date>2011-03-28 06:48:20 -0700</date>
            <delta_ts>2011-03-28 12:51:36 -0700</delta_ts>
            <desc>Cleaned up symbol resolving code to have single point where used OpenGL calls can be defined</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>70855</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkM2YwN2U1Li42M2Y3ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2
IEBACisyMDExLTAzLTI4ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYXNrIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIEdMIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAorCisgICAgICAgIE1vZGlmaWVk
IE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgaW4gUXQgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgdG8gbWFzayB0aGUgdXNlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHNvIHRo
YXQgd2UgY2FuIGFkYXB0IHRvIGRpZmZlcmVudAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgZm9y
IE9wZW5HTCBjYWxscy4gQ2xlYW5lZCB1cCBzeW1ib2wgcmVzb2x2ZXIgaW4gb3JkZXIKKyAgICAg
ICAgc2ltcGxpZnkgdGhlIGRlY2xhcmF0aW9uIG9mIG5ldyBzeW1ib2xzLgorCisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsUXQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjppc0NvbnRleHRWYWxpZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpj
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJi
dWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1w
bGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcik6CisKIDIwMTEtMDMtMjYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxt
c2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggMGVmOGVkYS4uYzZjZTljMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTM0MTAsNyArMzQxMCw5IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggXAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9F
eHRlbnNpb25zM0RRdC5oCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMz
RFF0LmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRElu
dGVybmFsUXQuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMUXQuaAogCiAgICAgIXY4IHsKICAgICAgICAgU09VUkNFUyArPSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApp
bmRleCAzNTFiNDQ1Li4xMTcwNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3Mg
Q0FMYXllcjsKIGNsYXNzIFdlYkdMTGF5ZXI7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKFFUKQor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oIgogUVRfQkVHSU5fTkFNRVNQ
QUNFCiBjbGFzcyBRUGFpbnRlcjsKIGNsYXNzIFFSZWN0OwpAQCAtOTExLDYgKzkxMiwxNCBAQCBw
dWJsaWM6CiAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+IG1fc3ludGhldGljRXJyb3JzOwogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBBdHRyaWJ1dGVzIG1fYXR0cnM7CisjZGVmaW5l
IEdMX1BST0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgXAorICAgIHR5cGVkZWYgUmV0dXJu
VmFsdWUgKEFQSUVOVFJZKiBQcm9jIyNUeXBlKSBQYXJhbXM7IFwKKyAgICBQcm9jIyNUeXBlIFBy
b2M7CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oIgorI3VuZGVmIEdMX1BS
T0MKKyNlbmRpZgogICAgIC8vIEZJWE1FOiBpZGVhbGx5IHRoaXMgd291bGQgYmUgdXNlZCBvbiBh
bGwgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShRVCkKICAg
ICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWxRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU3
YmE4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEwIFRpZXRvIENvcnBvcmF0aW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgICAgCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgICAgIAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisqLworCisjaWZuZGVmIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxR
dF9oCisjZGVmaW5lIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdF9oCisKKyNpbmNsdWRlIDxR
R0xDb250ZXh0PgorI2luY2x1ZGUgPFFHcmFwaGljc09iamVjdD4KKworI2lmICFkZWZpbmVkKEdM
Y2hhcikKK3R5cGVkZWYgY2hhciBHTGNoYXI7CisjZW5kaWYKKworI2lmICFkZWZpbmVkKEdMX0RF
UFRIMjRfU1RFTkNJTDgpCisjZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCisjZW5k
aWYKKworI2lmICFkZWZpbmVkKEFQSUVOVFJZKQorI2RlZmluZSBBUElFTlRSWQorI2VuZGlmCisK
KyNpZmRlZiBRVF9PUEVOR0xfRVNfMgordHlwZWRlZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBl
OwordHlwZWRlZiBHTGludHB0ciBHTGludHB0clR5cGU7CisjZWxzZQordHlwZWRlZiBwdHJkaWZm
X3QgR0xzaXplaXB0clR5cGU7Cit0eXBlZGVmIHB0cmRpZmZfdCBHTGludHB0clR5cGU7CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBFeHRlbnNpb25zM0RRdDsKK2NsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3MgSG9zdFdpbmRvdzsKKworY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgeworcHVibGljOgorICAg
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqLCBIb3N0V2luZG93
Kik7CisgICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKKworICAgIGJvb2wgaXNDb250
ZXh0VmFsaWQoKSB7IHJldHVybiBtX2NvbnRleHRWYWxpZDsgfQorICAgIFFHTFdpZGdldCogZ2V0
Vmlld3BvcnRHTFdpZGdldCgpOworICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBRU3R5
bGVPcHRpb25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7CisgICAgUVJlY3RGIGJvdW5kaW5nUmVj
dCgpIGNvbnN0OworCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAgICBIb3N0
V2luZG93KiBtX2hvc3RXaW5kb3c7CisgICAgUUdMV2lkZ2V0KiBtX2dsV2lkZ2V0OworICAgIFFH
TFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0OworICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsK
KyAgICBHTHVpbnQgbV90ZXh0dXJlOworICAgIEdMdWludCBtX21haW5GYm87CisgICAgR0x1aW50
IG1fY3VycmVudEZibzsKKyAgICBHTHVpbnQgbV9kZXB0aEJ1ZmZlcjsKKyAgICBib29sIG1fbGF5
ZXJDb21wb3NpdGVkOworICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGludD4gbV9zeW50aGV0aWNF
cnJvcnM7CisKKyAgICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+IG1fZXh0ZW5zaW9uczsKKworcHJp
dmF0ZToKKworICAgIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7Cisg
ICAgYm9vbCBtX2NvbnRleHRWYWxpZDsKK307CisKK30KKworI2VuZGlmIC8vIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWxRdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTFF0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTFF0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAyMDQyNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
UXQuaApAQCAtMCwwICsxLDkwIEBACitHTF9QUk9DKHZvaWQsIGdsQWN0aXZlVGV4dHVyZSwgKEdM
ZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQXR0YWNoU2hhZGVyLCAoR0x1aW50LCBHTHVpbnQpKQor
R0xfUFJPQyh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgKEdMdWludCwgR0x1aW50LCBjb25z
dCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsQmluZEJ1ZmZlciwgKEdMZW51bSwgR0x1aW50KSkK
K0dMX1BST0Modm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIChHTGVudW0sIEdMdWludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsQmluZFJlbmRlcmJ1ZmZlciwgKEdMZW51bSwgR0x1aW50KSkKK0dMX1BST0Mo
dm9pZCwgZ2xCbGVuZENvbG9yLCAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFt
cGYpKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kRXF1YXRpb24sIChHTGVudW0pKQorR0xfUFJPQyh2
b2lkLCBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVtKSkKK0dMX1BST0Mo
dm9pZCwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0Is
IEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKSkKK0dMX1BST0Modm9pZCwgZ2xCdWZm
ZXJEYXRhLCAoR0xlbnVtLCBHTHNpemVpcHRyLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pKQorR0xf
UFJPQyh2b2lkLCBnbEJ1ZmZlclN1YkRhdGEsIChHTGVudW0sIEdMaW50cHRyLCBHTHNpemVpcHRy
LCBjb25zdCBHTHZvaWQqKSkKK0dMX1BST0MoR0xlbnVtLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMsIChHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbENvbXBpbGVTaGFkZXIsIChHTHVpbnQpKQor
R0xfUFJPQyhHTHVpbnQsIGdsQ3JlYXRlUHJvZ3JhbSwgKCkpCitHTF9QUk9DKEdMdWludCwgZ2xD
cmVhdGVTaGFkZXIsIChHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZUJ1ZmZlcnMsIChH
THNpemVpLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMsIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVBy
b2dyYW0sIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMsIChH
THNpemVpIG4sIGNvbnN0IEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVNoYWRlciwg
KEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRGV0YWNoU2hhZGVyLCAoR0x1aW50LCBHTHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdMdWludCkpCitH
TF9QUk9DKHZvaWQsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIChHTHVpbnQpKQorR0xfUFJP
Qyh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCAoR0xlbnVtLCBHTGVudW0sIEdMZW51
bSwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgKEdMZW51
bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEdlbkJ1
ZmZlcnMsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5lcmF0ZU1pcG1h
cCwgKEdMZW51bSB0YXJnZXQpKQorR0xfUFJPQyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVycywgKEdM
c2l6ZWksIEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbEdlblJlbmRlcmJ1ZmZlcnMsIChHTHNp
emVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRBY3RpdmVBdHRyaWIsIChHTHVpbnQs
IEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlVW5pZm9ybSwgKEdMdWludCwgR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xH
ZXRBdHRhY2hlZFNoYWRlcnMsIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTHVpbnQqKSkK
K0dMX1BST0MoR0xpbnQsIGdsR2V0QXR0cmliTG9jYXRpb24sIChHTHVpbnQsIGNvbnN0IGNoYXIq
KSkKK0dMX1BST0Modm9pZCwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVt
LCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2LCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBhcmFtcykpCitHTF9QUk9D
KHZvaWQsIGdsR2V0UHJvZ3JhbUluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBj
aGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbWl2LCAoR0x1aW50LCBHTGVudW0sIEdM
aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIChHTGVu
dW0sIEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJJbmZvTG9nLCAo
R0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNo
YWRlcml2LCAoR0x1aW50LCBHTGVudW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hh
ZGVyU291cmNlLCAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopKQorR0xfUFJPQyhH
TGludCwgZ2xHZXRVbmlmb3JtTG9jYXRpb24sIChHTHVpbnQsIGNvbnN0IGNoYXIqKSkKK0dMX1BS
T0Modm9pZCwgZ2xHZXRVbmlmb3JtZnYsIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0KikpCitHTF9Q
Uk9DKHZvaWQsIGdsR2V0VW5pZm9ybWl2LCAoR0x1aW50LCBHTGludCwgR0xpbnQqKSkKK0dMX1BS
T0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJmdiwgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kikp
CitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliaXYsIChHTHVpbnQsIEdMZW51bSwgR0xp
bnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgKEdMdWludCwg
R0xlbnVtLCBHTHZvaWQqKikpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc0J1ZmZlciwgKEdMdWlu
dCkpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc0ZyYW1lYnVmZmVyLCAoR0x1aW50KSkKK0dMX1BS
T0MoR0xib29sZWFuLCBnbElzUHJvZ3JhbSwgKEdMdWludCkpCitHTF9QUk9DKEdMYm9vbGVhbiwg
Z2xJc1JlbmRlcmJ1ZmZlciwgKEdMdWludCkpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1NoYWRl
ciwgKEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsTGlua1Byb2dyYW0sIChHTHVpbnQpKQorR0xf
UFJPQyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIChHTGVudW0sIEdMZW51bSwgR0xzaXpl
aSwgR0xzaXplaSkpCitHTF9QUk9DKHZvaWQsIGdsU2FtcGxlQ292ZXJhZ2UsIChHTGNsYW1wZiwg
R0xib29sZWFuKSkKK0dMX1BST0Modm9pZCwgZ2xTaGFkZXJTb3VyY2UsIChHTHVpbnQsIEdMc2l6
ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2ls
RnVuY1NlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0sIEdMaW50LCBHTHVpbnQpKQorR0xfUFJPQyh2
b2lkLCBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUsIChHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZv
aWQsIGdsU3RlbmNpbE9wU2VwYXJhdGUsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0p
KQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0xZiwgKEdMaW50LCBHTGZsb2F0KSkKK0dMX1BST0Mo
dm9pZCwgZ2xVbmlmb3JtMWZ2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKSkKK0dM
X1BST0Modm9pZCwgZ2xVbmlmb3JtMWksIChHTGludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBn
bFVuaWZvcm0xaXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9p
ZCwgZ2xVbmlmb3JtMmYsIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQs
IGdsVW5pZm9ybTJmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9D
KHZvaWQsIGdsVW5pZm9ybTJpLCAoR0xpbnQsIEdMaW50LCBHTGludCkpCitHTF9QUk9DKHZvaWQs
IGdsVW5pZm9ybTJpdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopKQorR0xfUFJPQyh2
b2lkLCBnbFVuaWZvcm0zZiwgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KSkKK0dM
X1BST0Modm9pZCwgZ2xVbmlmb3JtM2Z2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQq
KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtM2ksIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGlu
dCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNpdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBH
TGludCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm00ZiwgKEdMaW50LCBHTGZsb2F0LCBHTGZs
b2F0LCBHTGZsb2F0LCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGZ2LCAoR0xp
bnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGks
IChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVu
aWZvcm00aXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwg
Z2xVbmlmb3JtTWF0cml4MmZ2LCAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xm
bG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXgzZnYsIChHTGludCwgR0xzaXpl
aSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybU1h
dHJpeDRmdiwgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKSkKK0dM
X1BST0Modm9pZCwgZ2xVc2VQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xWYWxp
ZGF0ZVByb2dyYW0sIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjFmLCAo
R0x1aW50LCBjb25zdCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIxZnYs
IChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIy
ZiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQs
IGdsVmVydGV4QXR0cmliMmZ2LCAoR0x1aW50LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZv
aWQsIGdsVmVydGV4QXR0cmliM2YsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxv
YXQsIGNvbnN0IEdMZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjNmdiwgKEdM
dWludCwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjRmLCAo
R0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25z
dCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWI0ZnYsIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyLCAoR0x1
aW50LCBHTGludCwgR0xlbnVtLCBHTGJvb2xlYW4sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCopKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAxNjE1Mzk3Li5kYWRmM2FkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oIgogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCkBAIC00MiwyNDQgKzQzLDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0jaWYgIWRlZmluZWQoR0xjaGFyKQotdHlwZWRlZiBjaGFyIEdMY2hhcjsKLSNl
bmRpZgotCi0jaWYgIWRlZmluZWQoR0xfREVQVEgyNF9TVEVOQ0lMOCkKLSNkZWZpbmUgR0xfREVQ
VEgyNF9TVEVOQ0lMOCAweDg4RjAKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVBJRU5UUlkpCi0j
ZGVmaW5lIEFQSUVOVFJZCi0jZW5kaWYKLQotI2lmZGVmIFFUX09QRU5HTF9FU18yCi10eXBlZGVm
IEdMc2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIEdMaW50cHRyIEdMaW50cHRyVHlw
ZTsKLSNlbHNlCi10eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYgcHRy
ZGlmZl90IEdMaW50cHRyVHlwZTsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEFjdGl2ZVRleHR1cmVUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
QXR0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBjb25zdCBjaGFy
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAoR0xlbnVtLCBH
THVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZmZXJUeXBlKSAo
R0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kUmVuZGVyYnVm
ZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxl
bmRDb2xvclR5cGUpIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xlbnVtKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSkoR0xlbnVt
LCBHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5
cGUpKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVt
IGRzdEFscGhhKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0YVR5cGUpIChH
TGVudW0sIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xpbnRwdHJUeXBl
LCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKik7Ci10eXBlZGVmIEdMZW51bSAoQVBJRU5U
UlkqIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xDb21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMdWlu
dCAoQVBJRU5UUlkqIGdsQ3JlYXRlUHJvZ3JhbVR5cGUpICgpOwotdHlwZWRlZiBHTHVpbnQgKEFQ
SUVOVFJZKiBnbENyZWF0ZVNoYWRlclR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xEZWxldGVCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSBu
LCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUHJvZ3Jh
bVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVSZW5kZXJi
dWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbERlbGV0ZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xEZXRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJU
eXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51
bSwgR0x1aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkJ1ZmZlcnNU
eXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbmVy
YXRlTWlwbWFwVHlwZSkgKEdMZW51bSB0YXJnZXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZW5GcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChHTHVpbnQsIEdM
dWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1aW50LCBHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1aW50LCBHTHNp
emVpLCBHTHNpemVpKiwgR0x1aW50Kik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRB
dHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdM
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJhbXMp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUpIChHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEdldFByb2dyYW1pdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBH
TGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlckluZm9M
b2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwg
R0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBnbEdl
dFVuaWZvcm1Mb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZmxvYXQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkgKEdMdWludCwg
R0xpbnQsIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJp
YmZ2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEdldFZlcnRleEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUpIChH
THVpbnQsIEdMZW51bSwgR0x2b2lkKiopOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBn
bElzQnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGds
SXNGcmFtZWJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZ
KiBnbElzUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZ
KiBnbElzUmVuZGVyYnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJ
RU5UUlkqIGdsSXNTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsTGlua1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
UmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXpl
aSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlwZSkgKEdMY2xh
bXBmLCBHTGJvb2xlYW4pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFkZXJTb3VyY2VU
eXBlKSAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBH
TGVudW0sIEdMaW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2ls
TWFza1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xl
bnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkgKEdMaW50LCBH
TGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5cGUpIChHTGlu
dCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xV
bmlmb3JtMWlUeXBlKSAoR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VW5pZm9ybTFpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChHTGludCwgR0xz
aXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3Jt
MmlUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm0yaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9h
dCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZnZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTNpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3Qg
R0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlwZSkgKEdMaW50
LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xpbnQsIEdMaW50
LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bTRpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29s
ZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1N
YXRyaXgzZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSkgKEdMaW50
LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVXNlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xWYWxpZGF0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVmVydGV4QXR0cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUp
IChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkgKEdMdWludCwg
Y29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxv
YXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZUeXBlKSAoR0x1
aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBH
TGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZ2VHlwZSkg
KEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBH
THNpemVpLCBjb25zdCBHTHZvaWQqKTsKLQotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCA6IHB1YmxpYyBRR3JhcGhpY3NPYmplY3QgewotcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpOwotICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7Ci0KLSAg
ICBib29sIGlzQ29udGV4dFZhbGlkKCkgeyByZXR1cm4gbV9jb250ZXh0VmFsaWQ7IH0KLSAgICBR
R0xXaWRnZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKLSAgICB2b2lkIHBhaW50KFFQYWludGVy
KiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwotICAgIFFSZWN0
RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKLQotICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0aXZl
VGV4dHVyZTsKLSAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwotICAgIGdsQmlu
ZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247Ci0gICAgZ2xCaW5kQnVmZmVy
VHlwZSBiaW5kQnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyVHlwZSBiaW5kRnJhbWVidWZm
ZXI7Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVyOwotICAgIGds
QmxlbmRDb2xvclR5cGUgYmxlbmRDb2xvcjsKLSAgICBnbEJsZW5kRXF1YXRpb25UeXBlIGJsZW5k
RXF1YXRpb247Ci0gICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZTsKLSAgICBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNTZXBhcmF0ZTsK
LSAgICBnbEJ1ZmZlckRhdGFUeXBlIGJ1ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhVHlw
ZSBidWZmZXJTdWJEYXRhOwotICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUgY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1czsKLSAgICBnbENvbXBpbGVTaGFkZXJUeXBlIGNvbXBpbGVTaGFkZXI7
Ci0gICAgZ2xDcmVhdGVQcm9ncmFtVHlwZSBjcmVhdGVQcm9ncmFtOwotICAgIGdsQ3JlYXRlU2hh
ZGVyVHlwZSBjcmVhdGVTaGFkZXI7Ci0gICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBkZWxldGVCdWZm
ZXJzOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1ZmZlcnM7Ci0g
ICAgZ2xEZWxldGVQcm9ncmFtVHlwZSBkZWxldGVQcm9ncmFtOwotICAgIGdsRGVsZXRlUmVuZGVy
YnVmZmVyc1R5cGUgZGVsZXRlUmVuZGVyYnVmZmVyczsKLSAgICBnbERlbGV0ZVNoYWRlclR5cGUg
ZGVsZXRlU2hhZGVyOwotICAgIGdsRGV0YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFkZXI7Ci0gICAg
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheTsK
LSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcjsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZlclRleHR1cmUy
RDsKLSAgICBnbEdlbkJ1ZmZlcnNUeXBlIGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1h
cFR5cGUgZ2VuZXJhdGVNaXBtYXA7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlIGdlbkZyYW1l
YnVmZmVyczsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1ZmZlcnM7Ci0g
ICAgZ2xHZXRBY3RpdmVBdHRyaWJUeXBlIGdldEFjdGl2ZUF0dHJpYjsKLSAgICBnbEdldEFjdGl2
ZVVuaWZvcm1UeXBlIGdldEFjdGl2ZVVuaWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnNU
eXBlIGdldEF0dGFjaGVkU2hhZGVyczsKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSBnZXRB
dHRyaWJMb2NhdGlvbjsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRCdWZmZXJQ
YXJhbWV0ZXJpdjsKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2VHlw
ZSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFByb2dyYW1J
bmZvTG9nVHlwZSBnZXRQcm9ncmFtSW5mb0xvZzsKLSAgICBnbEdldFByb2dyYW1pdlR5cGUgZ2V0
UHJvZ3JhbWl2OwotICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUgZ2V0U2hhZGVy
SW5mb0xvZzsKLSAgICBnbEdldFNoYWRlcml2VHlwZSBnZXRTaGFkZXJpdjsKLSAgICBnbEdldFNo
YWRlclNvdXJjZVR5cGUgZ2V0U2hhZGVyU291cmNlOwotICAgIGdsR2V0VW5pZm9ybWZ2VHlwZSBn
ZXRVbmlmb3JtZnY7Ci0gICAgZ2xHZXRVbmlmb3JtaXZUeXBlIGdldFVuaWZvcm1pdjsKLSAgICBn
bEdldFVuaWZvcm1Mb2NhdGlvblR5cGUgZ2V0VW5pZm9ybUxvY2F0aW9uOwotICAgIGdsR2V0VmVy
dGV4QXR0cmliZnZUeXBlIGdldFZlcnRleEF0dHJpYmZ2OwotICAgIGdsR2V0VmVydGV4QXR0cmli
aXZUeXBlIGdldFZlcnRleEF0dHJpYml2OwotICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZU
eXBlIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBlIGlzQnVmZmVy
OwotICAgIGdsSXNGcmFtZWJ1ZmZlclR5cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBnbElzUHJvZ3Jh
bVR5cGUgaXNQcm9ncmFtOwotICAgIGdsSXNSZW5kZXJidWZmZXJUeXBlIGlzUmVuZGVyYnVmZmVy
OwotICAgIGdsSXNTaGFkZXJUeXBlIGlzU2hhZGVyOwotICAgIGdsTGlua1Byb2dyYW1UeXBlIGxp
bmtQcm9ncmFtOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVyYnVmZmVyU3Rv
cmFnZTsKLSAgICBnbFNhbXBsZUNvdmVyYWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsKLSAgICBnbFNo
YWRlclNvdXJjZVR5cGUgc2hhZGVyU291cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5
cGUgc3RlbmNpbEZ1bmNTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlIHN0
ZW5jaWxNYXNrU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUgc3RlbmNpbE9w
U2VwYXJhdGU7Ci0gICAgZ2xVbmlmb3JtMWZUeXBlIHVuaWZvcm0xZjsKLSAgICBnbFVuaWZvcm0x
ZnZUeXBlIHVuaWZvcm0xZnY7Ci0gICAgZ2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0xaTsKLSAgICBn
bFVuaWZvcm0xaXZUeXBlIHVuaWZvcm0xaXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBlIHVuaWZvcm0y
ZjsKLSAgICBnbFVuaWZvcm0yZnZUeXBlIHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlmb3JtMmlUeXBl
IHVuaWZvcm0yaTsKLSAgICBnbFVuaWZvcm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0gICAgZ2xVbmlm
b3JtM2ZUeXBlIHVuaWZvcm0zZjsKLSAgICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZvcm0zZnY7Ci0g
ICAgZ2xVbmlmb3JtM2lUeXBlIHVuaWZvcm0zaTsKLSAgICBnbFVuaWZvcm0zaXZUeXBlIHVuaWZv
cm0zaXY7Ci0gICAgZ2xVbmlmb3JtNGZUeXBlIHVuaWZvcm00ZjsKLSAgICBnbFVuaWZvcm00ZnZU
eXBlIHVuaWZvcm00ZnY7Ci0gICAgZ2xVbmlmb3JtNGlUeXBlIHVuaWZvcm00aTsKLSAgICBnbFVu
aWZvcm00aXZUeXBlIHVuaWZvcm00aXY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSB1bmlm
b3JtTWF0cml4MmZ2OwotICAgIGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9ybU1hdHJpeDNm
djsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7Ci0gICAgZ2xV
c2VQcm9ncmFtVHlwZSB1c2VQcm9ncmFtOwotICAgIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSB2YWxp
ZGF0ZVByb2dyYW07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0cmliMWY7Ci0g
ICAgZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlIHZlcnRleEF0dHJpYjFmdjsKLSAgICBnbFZlcnRleEF0
dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRyaWIyZjsKLSAgICBnbFZlcnRleEF0dHJpYjJmdlR5cGUgdmVy
dGV4QXR0cmliMmZ2OwotICAgIGdsVmVydGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0dHJpYjNmOwot
ICAgIGdsVmVydGV4QXR0cmliM2Z2VHlwZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAgZ2xWZXJ0ZXhB
dHRyaWI0ZlR5cGUgdmVydGV4QXR0cmliNGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlIHZl
cnRleEF0dHJpYjRmdjsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlIHZlcnRleEF0dHJp
YlBvaW50ZXI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOwot
ICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKLSAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7
Ci0gICAgUUdMV2lkZ2V0KiBtX3ZpZXdwb3J0R0xXaWRnZXQ7Ci0gICAgUVJlY3RGIG1fYm91bmRp
bmdSZWN0OwotICAgIEdMdWludCBtX3RleHR1cmU7Ci0gICAgR0x1aW50IG1fbWFpbkZibzsKLSAg
ICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAgIGJv
b2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5
bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25z
OwotCi1wcml2YXRlOgotCi0gICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBw
cm9jKTsKLSAgICBib29sIG1fY29udGV4dFZhbGlkOwotfTsKLQotI2lmIGRlZmluZWQgKFFUX09Q
RU5HTF9FU18yKSAKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSBQcm9jCi0jZWxzZQot
I2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIHJlaW50ZXJwcmV0X2Nhc3Q8UHJvYyMjVHlw
ZT4oZ2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKLSNlbmRpZgotCiBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKICNpZiBkZWZpbmVkIChRVF9PUEVOR0xf
RVNfMikKQEAgLTI4OSw4ICs1Miw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJD
b21wbGlhbnQoKSBjb25zdAogI2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi0gICAgOiBtX2F0dHJzKGF0dHJzKQorR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICA6IG1fY29u
dGV4dChjb250ZXh0KQogICAgICwgbV9ob3N0V2luZG93KGhvc3RXaW5kb3cpCiAgICAgLCBtX2ds
V2lkZ2V0KDApCiAgICAgLCBtX3ZpZXdwb3J0R0xXaWRnZXQoMCkKQEAgLTMyMiwxMDQgKzg1LDIx
IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwo
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAgCiAgICAgUUdMRm9ybWF0IGZvcm1hdCA9IG1f
Z2xXaWRnZXQtPmZvcm1hdCgpOwogCi0gICAgbV9hdHRycy5hbHBoYSA9IGZvcm1hdC5hbHBoYSgp
OwotICAgIG1fYXR0cnMuZGVwdGggPSBmb3JtYXQuZGVwdGgoKTsKLSAgICBtX2F0dHJzLnN0ZW5j
aWwgPSBmb3JtYXQuc3RlbmNpbCgpOwotICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0g
ICAgbV9hdHRycy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOworICAgIG1fY29udGV4dC0+bV9h
dHRycy5hbHBoYSA9IGZvcm1hdC5hbHBoYSgpOworICAgIG1fY29udGV4dC0+bV9hdHRycy5kZXB0
aCA9IGZvcm1hdC5kZXB0aCgpOworICAgIG1fY29udGV4dC0+bV9hdHRycy5zdGVuY2lsID0gZm9y
bWF0LnN0ZW5jaWwoKTsKKyAgICBtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7
CisgICAgbV9jb250ZXh0LT5tX2F0dHJzLnByZW11bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAKICAg
ICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgYWN0aXZlVGV4dHVyZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKLSAgICBiaW5kQXR0cmliTG9jYXRpb24gPSBHRVRf
UFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKLSAgICBiaW5kQnVmZmVyID0gR0VU
X1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIgPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xvciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKLSAgICBibGVuZEVxdWF0aW9uID0gR0VUX1BS
T0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24pOwotICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOwotICAgIGJsZW5kRnVu
Y1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKLSAgICBi
dWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1ZmZlclN1
YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFkZXIp
OwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJvZ3JhbSk7
Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7Ci0g
ICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKLSAg
ICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZm
ZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVByb2dy
YW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRl
UmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERl
bGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERldGFj
aFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVT
UyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2VuRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVT
UyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKLSAgICBnZXRBY3RpdmVBdHRyaWIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKLSAgICBnZXRBY3RpdmVVbmlmb3JtID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOwotICAgIGdldEF0dGFjaGVkU2hhZGVy
cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpOwotICAgIGdldEF0dHJp
YkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKLSAgICBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQYXJhbWV0
ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOwotICAgIGdl
dFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsK
LSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2KTsKLSAg
ICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKLSAgICBnZXRTaGFkZXJpdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAgZ2V0U2hhZGVyU291cmNlID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BST0NfQUREUkVT
UyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliZnYpOwotICAgIGdldFZlcnRleEF0dHJpYml2
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2KTsKLSAgICBnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOwotICAgIGlz
RnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0gICAgaXNQ
cm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5kZXJidWZm
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOwotICAgIGlzU2hhZGVyID0g
R0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVDb3ZlcmFnZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291cmNlID0g
R0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNTZXBhcmF0
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAgICBzdGVuY2ls
TWFza1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUpOwot
ICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNlcGFy
YXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmKTsKLSAg
ICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOwotICAgIHVuaWZv
cm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOwotICAgIHVuaWZvcm0xaXYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7Ci0gICAgdW5pZm9ybTJmID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3JtMmkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYpOwot
ICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2YpOwotICAgIHVuaWZv
cm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7Ci0gICAgdW5pZm9ybTNpID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAgICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3JtNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGkpOwot
ICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7Ci0gICAgdW5p
Zm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKLSAg
ICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgzZnYp
OwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJp
eDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsK
LSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQcm9ncmFt
KTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIx
Zik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJp
YjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0
cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJpYjNmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4QXR0cmliNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVydGV4QXR0cmliUG9pbnRlciA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsKKyNpZiBkZWZpbmVkIChRVF9PUEVOR0xfRVNf
MikKKyNkZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBtX2NvbnRleHQt
PlByb2MgPSBQcm9jOworI2Vsc2UKKyNkZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywg
UGFyYW1zKSBtX2NvbnRleHQtPlByb2MgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4
dDNEOjpQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpOworI2VuZGlmCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oIgorI3VuZGVmIEdMX1BST0MKIAogICAgIGlm
ICghbV9jb250ZXh0VmFsaWQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQz
RDogQWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2YWlsYWJsZSIpOwpAQCAt
NDM2LDI2ICsxMTYsMjYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICBnbFRleEltYWdl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCAxLCAxLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIDApOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDApOwogCi0gICAgZ2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZt
X21haW5GYm8pOworICAgIG1fY29udGV4dC0+Z2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8g
MSwgJm1fbWFpbkZibyk7CiAgICAgbV9jdXJyZW50RmJvID0gbV9tYWluRmJvOwogCi0gICAgYmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9tYWluRmJvKTsK
KyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9tYWluRmJvKTsKIAotICAgIGdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8g
MSwgJm1fZGVwdGhCdWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAgbV9jb250ZXh0LT5nbEdlblJl
bmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhCdWZmZXIpOworICAgIG1fY29udGV4
dC0+Z2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1f
ZGVwdGhCdWZmZXIpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgcmVuZGVyYnVm
ZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIC8qIHdpZHRoICovIDEsIC8qIGhlaWdodCAqLyAxKTsK
KyAgICBtX2NvbnRleHQtPmdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIC8qIHdp
ZHRoICovIDEsIC8qIGhlaWdodCAqLyAxKTsKICNlbHNlCi0gICAgcmVuZGVyYnVmZmVyU3RvcmFn
ZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfQ09NUE9ORU5ULCAvKiB3aWR0aCAqLyAxLCAvKiBoZWlnaHQgKi8gMSk7CisgICAgbV9jb250
ZXh0LT5nbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgLyogd2lkdGggKi8gMSwgLyog
aGVpZ2h0ICovIDEpOwogI2VuZGlmCiAKLSAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwotIAotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsK
LSAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKKyAgICBtX2NvbnRleHQtPmdsQmluZFJl
bmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKworICAgIG1f
Y29udGV4dC0+Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CisgICAgbV9jb250ZXh0LT5nbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogICAgIGdsQ2xlYXJDb2xvcigvKiByZWQgKi8gMCwgLyog
Z3JlZW4gKi8gMCwgLyogYmx1ZSAqLyAwLCAvKiBhbHBoYSAqLyAwKTsKIAotICAgIGlmIChjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgIT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgaWYgKG1fY29udGV4
dC0+Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UikgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CiAgICAgICAg
IExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFdhc24ndCBhYmxlIHRvIGNyZWF0ZSB0aGUg
bWFpbiBmcmFtZWJ1ZmZlciIpOwogICAgICAgICBtX2NvbnRleHRWYWxpZCA9IGZhbHNlOwogICAg
IH0KQEAgLTUwNCwxMCArMTg0LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgcXVp
bnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5J
bWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX21haW5GYm8pOwor
ICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX21haW5GYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8g
MCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAotICAgIGJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZi
byk7CisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMgQUJH
UiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdAogICAg
IC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIHRv
cCBsZWZ0LgpAQCAtNTY3LDcgKzI0Nyw4IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpCiB9CiAK
IEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCkKLSAgICA6IG1f
aW50ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMsIGhvc3RXaW5kb3cp
KQorICAgIDogbV9hdHRycyhhdHRycykKKyAgICAsIG1faW50ZXJuYWwobmV3IEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwodGhpcywgaG9zdFdpbmRvdykpCiB7CiAgICAgaWYgKCFtX2ludGVybmFs
LT5pc0NvbnRleHRWYWxpZCgpKSAKICAgICAgICAgbV9pbnRlcm5hbCA9IDA7CkBAIC02MjksMTkg
KzMxMCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAv
KiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNE
OjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogICAgCi0gICAgbV9pbnRlcm5hbC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9pbnRlcm5hbC0+bV9t
YWluRmJvKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9pbnRlcm5hbC0+
bV9tYWluRmJvKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJF
TkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CiAjaWYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikKICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgd2lkdGgs
IGhlaWdodCk7CiAjZWxzZQogICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lk
dGgsIGhlaWdodCk7CiAjZW5kaWYKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworICAgIGdsQmluZFJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKICAgICAKLSAgICBtX2ludGVy
bmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSwgMCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJF
TkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CisgICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1f
aW50ZXJuYWwtPm1fdGV4dHVyZSwgMCk7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9B
VFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFsLT5t
X2RlcHRoQnVmZmVyKTsKIAotICAgIEdMZW51bSBzdGF0dXMgPSBtX2ludGVybmFsLT5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7CisgICAgR0xl
bnVtIHN0YXR1cyA9IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIpOwogICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSX0NPTVBMRVRFKSB7CiAgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6
IFdhc24ndCBhYmxlIHRvIHJlc2hhcGUgdGhlIG1haW4gZnJhbWVidWZmZXIiKTsKICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTY1OSw3ICszNDAsNyBAQCBJbnRTaXplIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5hY3RpdmVUZXh0dXJl
KHRleHR1cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC02NjcsNyArMzQ4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0z
RE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmF0
dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0s
IHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVy
cyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVp
KiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykKQEAgLTY4NSwyNiArMzY2LDI2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEdDM0R1aW50IGluCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Ymlu
ZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
IGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kQnVmZmVyKHRhcmdldCwgYnVm
ZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1f
aW50ZXJuYWwtPm1fbWFpbkZibzsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIodGFy
Z2V0LCBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKHRh
cmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
cmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZl
cik7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC03MTYsMTkgKzM5NywxOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
dGV4dHVyZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiBy
ZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGdsQmxlbmRD
b2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb24obW9k
ZSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uKG1vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9k
ZUFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7
CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0Rl
bnVtIGRmYWN0b3IpCkBAIC03NDAsMzEgKzQyMSwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVu
dW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5i
bGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAg
ICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJn
ZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0
IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNp
emUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1
c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRh
KTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOwogfQog
CiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNE
ZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQp
OworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYg
ZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBAIC04MDUsNyArNDg2LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
IHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICBn
bENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC04NTMsNyArNTM0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxh
dGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKHBy
b2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0Mz
RGVudW0gY2FwKQpAQCAtODY1LDcgKzU0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRp
c2FibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGlu
dCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtODg5LDcgKzU3MCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGlu
ZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkKQEAgLTkwNywxMyAr
NTg4LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNo
bWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRl
eHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwor
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQs
IHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNl
KEdDM0RlbnVtIG1vZGUpCkBAIC05MjUsNyArNjA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5l
cmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQp
OworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQg
aW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC05MzgsMTQgKzYxOSwxNCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEdWludCBpbmRleAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1p
dihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
LCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRl
eHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAogICAgIEdM
Y2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAgR0xzaXpl
aSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9
IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1h
eExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRBY3Rp
dmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAm
dHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZyZWUo
bmFtZSk7CkBAIC05NzAsMTQgKzY1MSwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZQogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBtYXhM
ZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVp
bnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdU
SCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihw
cm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZt
YXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RNYWxsb2MobWF4
TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAw
OwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFjdGl2ZVVuaWZv
cm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVM
ZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHN0YXRp
Y19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAm
c2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAgICAgIGZh
c3RGcmVlKG5hbWUpOwpAQCAtOTk4LDEyICs2NzksMTIgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldEF0dHJpYkxvY2F0aW9u
KHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkK
IHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9hdHRyczsKKyAgICByZXR1cm4gbV9hdHRyczsK
IH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKQEAgLTEwMzcsNyAr
NzE4LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5h
bC0+aXNCdWZmZXIoYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0J1ZmZlcihidWZmZXIpOwogfQog
CiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkK
QEAgLTEwNTIsNyArNzMzLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJh
bWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdM
X0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAg
IHJldHVybiBnbElzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBH
cmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAg
LTEwNjEsNyArNzQyLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAg
ICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVy
biBtX2ludGVybmFsLT5pc1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIGdsSXNQcm9ncmFt
KHByb2dyYW0pOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJi
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCkBAIC0xMDcwLDcgKzc1MSw3IEBA
IEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50
ZXJuYWwtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNSZW5k
ZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMTA3OSw3ICs3NjAsNyBA
QCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1No
YWRlcihzaGFkZXIpOworICAgIHJldHVybiBnbElzU2hhZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlKQpAQCAtMTEwMSw3ICs3ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJv
Z3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEaW50IHBhcmFtKQpAQCAtMTE1MiwxMyArODMzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRl
cm5hbGZvCiAgICAgICAgIGJyZWFrOwogICAgIH0KICNlbmRpZgotICAgIG1faW50ZXJuYWwtPnJl
bmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShH
QzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZlcnQpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zYW1wbGVDb3ZlcmFn
ZSh2YWx1ZSwgaW52ZXJ0KTsKKyAgICBnbFNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCkBAIC0xMTg0LDcgKzg2NSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlciwgY29uc3QgU3RyaW5nJiBzb3VyCiAgICAgQ1N0cmluZyBzb3VyY2VDUyA9IHByZWZpeGVk
U291cmNlLnV0ZjgoKTsKICAgICBjb25zdCBjaGFyKiBkYXRhID0gc291cmNlQ1MuZGF0YSgpOwog
ICAgIGludCBsZW5ndGggPSBwcmVmaXhlZFNvdXJjZS5sZW5ndGgoKTsKLSAgICBtX2ludGVybmFs
LT5zaGFkZXJTb3VyY2UoKEdMdWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxl
bmd0aCk7CisgICAgZ2xTaGFkZXJTb3VyY2UoKEdMdWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAx
LCAmZGF0YSwgJmxlbmd0aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxG
dW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQpAQCAtMTE5Niw3
ICs4NzcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBm
dW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGlu
dCByZWYsIEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1
bmMsIHJlZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJl
ZiwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1
aW50IG1hc2spCkBAIC0xMjA4LDcgKzg4OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0
ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2ls
TWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNl
LCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVt
IGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKQEAgLTEyMjAsNyArOTAxLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0Rl
bnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5j
aWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWls
LCBHQzNEZW51bSB6cGFzcykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpm
YWlsLCB6cGFzcyk7CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwg
enBhc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMjM4
LDExNSArOTE5LDExNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWZ2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yZihsb2Nh
dGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
M2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwg
djEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZv
cm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0zZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIs
IEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
OworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlmb3JtMWko
bG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWl2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0y
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9y
bTJpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaXYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0RpbnQgdjIpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
M2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwg
djEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
M2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShHQzNE
aW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50
IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xV
bmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xl
YW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVu
aWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwg
dHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTM1NCw3ICsxMDM1LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAg
ICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBn
bFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlk
YXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMzYyLDYxICsxMDQzLDYx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmFsaWRhdGVQcm9n
cmFtKHByb2dyYW0pOworICAgIGdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0
dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjFmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0
dHJpYjFmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJm
KGluZGV4LCB2MCwgdjEpOworICAgIGdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkp
OworICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAs
IEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2YoaW5kZXgs
IHYwLCB2MSwgdjIpOworICAgIGdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5
KTsKKyAgICBnbFZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYw
LCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4
QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFZlcnRleEF0dHJpYjRmKGlu
ZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRl
eEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIo
R0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4g
bm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52
ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUs
IHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkp
KTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6
ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJf
dD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAt
MTQzNCw3ICsxMTE1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFt
TmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQs
IHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBw
YXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2
KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKQEAgLTE0NDYsNyArMTEyNyw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RmbG9hdCogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1l
bnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwg
dmFsdWUpOworICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0
LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAg
LTE0NTgsNyArMTEzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFt
ZSwgdmFsdWUpOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUp
OwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTE0NjYsNyArMTE0Nyw3IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBs
ZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGlj
c0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1p
dihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsK
IAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAKQEAgLTE0NzQsNyArMTE1NSw3IEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5h
bC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAg
Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAg
IFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNDg1LDE0ICsx
MTY2LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBw
YXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNo
YWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rp
bnQqIHZhbHVlKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVy
LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1l
LCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xv
ZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTE1MDAsMTQgKzExODEsMTQgQEAgU3RyaW5n
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBH
TGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3Jh
cGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRTaGFk
ZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgp
OwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikg
ZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwog
Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUs
IGluZm8pOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGlu
Zm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAg
LTE1MjAsMTQgKzEyMDEsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJT
b3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9M
RU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRl
eHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXpl
ID0gMDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwog
ICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0
U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFk
ZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1
bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNTUwLDEzICsxMjMxLDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gcGFyYW1OYW1lLCBHCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3Jt
ZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQq
IHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7Cisg
ICAgZ2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtaXYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2Nh
dGlvbiwgdmFsdWUpOwogfQogCiBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3Jt
TG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBA
IC0xNTY0LDE5ICsxMjQ1LDE5IEBAIEdDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZv
cm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0CiAgICAgQVNTRVJU
KHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBu
YW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
ZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwg
dmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWlu
dCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZl
cnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0
dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogR0MzRHNpemVpcHRyIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0Rl
bnVtIHBhcmFtTmFtZSkKQEAgLTE1ODQsNyArMTI2NSw3IEBAIEdDM0RzaXplaXB0ciBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51
bSBwCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICAKICAg
ICBHTHZvaWQqIHBvaW50ZXIgPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVyKTsKKyAgICBnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVyKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0MzRHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7
CiB9CiAKQEAgLTE2MDUsNyArMTI4Niw3IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5C
dWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuQnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCkBAIC0xNjEzLDI4ICsx
Mjk0LDI4IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1l
YnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwog
ICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJuYWwtPmdlbkZyYW1lYnVmZmVycygv
KiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAq
LyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5jcmVhdGVQ
cm9ncmFtKCk7CisgICAgcmV0dXJuIGdsQ3JlYXRlUHJvZ3JhbSgpOwogfQogCiBQbGF0Zm9ybTNE
T2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9
IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFu
ZGxlKTsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAg
ICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlU2hhZGVy
KHR5cGUpOworICAgIHJldHVybiBnbENyZWF0ZVNoYWRlcih0eXBlKTsKIH0KIAogUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCkBAIC0xNjQ4LDMxICsx
MzI5LDMxIEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1
cmUoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmpl
Y3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKKyAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9n
cmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVByb2dyYW0ocHJvZ3Jh
bSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOworICAgIGdsRGVs
ZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVs
ZXRlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87182</attachid>
            <date>2011-03-28 12:51:36 -0700</date>
            <delta_ts>2011-03-29 12:41:35 -0700</delta_ts>
            <desc>Adapted to upstream changes</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>76238</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZWU0NWZlLi4wNThhNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE2
IEBACisyMDExLTAzLTI4ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNaWdyYXRlIHRvIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcxNTQKKworICAgICAgICBNb2Rp
ZmllZCBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRvIGJlIHRyYW5zcGFyZW50IGFuZCBlYXNpZXIg
dG8KKyAgICAgICAgbWFpbnRhaW4uCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTFF0Lmg6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEF0dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRS
ZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5k
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5j
U2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmlzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
aWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0
ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVy
dGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVy
KToKKwogMjAxMS0wMy0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgyMDk5LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCA0MjUxZDczLi5hZDg1OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzQxNCw3ICszNDE0
LDkgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0
LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaCBcCisgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oIFwK
KyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5o
CiAKICAgICAhdjggewogICAgICAgICBTT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDM1MWI0NDUu
LjExNzA3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBDQUxheWVyOwogY2xh
c3MgV2ViR0xMYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmgiCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFQ
YWludGVyOwogY2xhc3MgUVJlY3Q7CkBAIC05MTEsNiArOTEyLDE0IEBAIHB1YmxpYzoKICAgICBM
aXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50aGV0aWNFcnJvcnM7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFFUKQorICAgIEF0dHJpYnV0ZXMgbV9hdHRyczsKKyNkZWZpbmUgR0xfUFJPQyhSZXR1
cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBcCisgICAgdHlwZWRlZiBSZXR1cm5WYWx1ZSAoQVBJRU5U
UlkqIFByb2MjI1R5cGUpIFBhcmFtczsgXAorICAgIFByb2MjI1R5cGUgUHJvYzsKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRE9wZW5HTFF0LmgiCisjdW5kZWYgR0xfUFJPQworI2VuZGlmCiAg
ICAgLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMu
CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKFFUKQogICAgIGZyaWVuZCBjbGFz
cyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREludGVybmFs
UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWQ0NDdmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbFF0LmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTAgVGlldG8gQ29ycG9yYXRpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICAgICAKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICAgCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyovCisKKyNpZm5kZWYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0X2gKKyNkZWZpbmUg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0X2gKKworI2luY2x1ZGUgPFFHTENvbnRleHQ+Cisj
aW5jbHVkZSA8UUdyYXBoaWNzT2JqZWN0PgorCisjaWYgIWRlZmluZWQoR0xjaGFyKQordHlwZWRl
ZiBjaGFyIEdMY2hhcjsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoR0xfREVQVEgyNF9TVEVOQ0lM
OCkKKyNkZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOCAweDg4RjAKKyNlbmRpZgorCisjaWYgIWRl
ZmluZWQoQVBJRU5UUlkpCisjZGVmaW5lIEFQSUVOVFJZCisjZW5kaWYKKworI2lmZGVmIFFUX09Q
RU5HTF9FU18yCit0eXBlZGVmIEdMc2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Cit0eXBlZGVmIEdM
aW50cHRyIEdMaW50cHRyVHlwZTsKKyNlbHNlCit0eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRy
VHlwZTsKK3R5cGVkZWYgcHRyZGlmZl90IEdMaW50cHRyVHlwZTsKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEV4dGVuc2lvbnMzRFF0OworY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0Q7CitjbGFzcyBIb3N0V2luZG93OworCitjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsIDogcHVibGljIFFHcmFwaGljc09iamVjdCB7CitwdWJsaWM6CisgICAgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRCosIEhvc3RXaW5kb3cqKTsKKyAgICB+R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOworCisgICAgUUdMV2lkZ2V0KiBnZXRWaWV3cG9ydEdM
V2lkZ2V0KCk7CisgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdy
YXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKKyAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7
CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIEhvc3RXaW5kb3cqIG1f
aG9zdFdpbmRvdzsKKyAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7CisgICAgUUdMV2lkZ2V0KiBt
X3ZpZXdwb3J0R0xXaWRnZXQ7CisgICAgR0x1aW50IG1fdGV4dHVyZTsKKyAgICBHTHVpbnQgbV9j
YW52YXNGYm87CisgICAgR0x1aW50IG1fY3VycmVudEZibzsKKyAgICBHTHVpbnQgbV9kZXB0aEJ1
ZmZlcjsKKyAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkOworICAgIGludCBtX3Byb2NzQXJlVmFs
aWQ7CisgICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5bnRoZXRpY0Vycm9yczsKKyAg
ICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+IG1fZXh0ZW5zaW9uczsKKworICAgIHZvaWQqIGdldFBy
b2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7Cit9OworCit9CisKKyNlbmRpZiAvLyBHcmFw
aGljc0NvbnRleHQzREludGVybmFsUXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjA0MjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTFF0LmgKQEAgLTAsMCArMSw5MCBAQAorR0xfUFJPQyh2b2lkLCBnbEFjdGl2ZVRleHR1
cmUsIChHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRlciwgKEdMdWludCwgR0x1
aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChHTHVpbnQsIEdMdWlu
dCwgY29uc3QgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRCdWZmZXIsIChHTGVudW0sIEdM
dWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyLCAoR0xlbnVtLCBHTHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIChHTGVudW0sIEdMdWludCkpCitH
TF9QUk9DKHZvaWQsIGdsQmxlbmRDb2xvciwgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYs
IEdMY2xhbXBmKSkKK0dMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAoR0xlbnVtKSkKK0dM
X1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHTGVudW0sIEdMZW51bSkpCitH
TF9QUk9DKHZvaWQsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIChHTGVudW0gc3JjUkdCLCBHTGVudW0g
ZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkpCitHTF9QUk9DKHZvaWQs
IGdsQnVmZmVyRGF0YSwgKEdMZW51bSwgR0xzaXplaXB0ciwgY29uc3QgR0x2b2lkKiwgR0xlbnVt
KSkKK0dMX1BST0Modm9pZCwgZ2xCdWZmZXJTdWJEYXRhLCAoR0xlbnVtLCBHTGludHB0ciwgR0xz
aXplaXB0ciwgY29uc3QgR0x2b2lkKikpCitHTF9QUk9DKEdMZW51bSwgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzLCAoR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xDb21waWxlU2hhZGVyLCAoR0x1
aW50KSkKK0dMX1BST0MoR0x1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQorR0xfUFJPQyhHTHVp
bnQsIGdsQ3JlYXRlU2hhZGVyLCAoR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVCdWZm
ZXJzLCAoR0xzaXplaSwgY29uc3QgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJh
bWVidWZmZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xE
ZWxldGVQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVT
aGFkZXIsIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERldGFjaFNoYWRlciwgKEdMdWludCwg
R0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIChHTHVp
bnQpKQorR0xfUFJPQyh2b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0x1aW50KSkK
K0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgKEdMZW51bSwgR0xlbnVt
LCBHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQs
IChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwg
Z2xHZW5CdWZmZXJzLCAoR0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2VuZXJh
dGVNaXBtYXAsIChHTGVudW0gdGFyZ2V0KSkKK0dMX1BST0Modm9pZCwgZ2xHZW5GcmFtZWJ1ZmZl
cnMsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJz
LCAoR0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlQXR0cmliLCAo
R0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hh
ciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZVVuaWZvcm0sIChHTHVpbnQsIEdMdWludCwg
R0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKikpCitHTF9QUk9DKHZv
aWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0x1
aW50KikpCitHTF9QUk9DKEdMaW50LCBnbEdldEF0dHJpYkxvY2F0aW9uLCAoR0x1aW50LCBjb25z
dCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYsIChHTGVudW0s
IEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJhbXMpKQor
R0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1JbmZvTG9nLCAoR0x1aW50LCBHTHNpemVpLCBHTHNp
emVpKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1pdiwgKEdMdWludCwgR0xl
bnVtLCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
LCAoR0xlbnVtLCBHTGVudW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVySW5m
b0xvZywgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKK0dMX1BST0Modm9pZCwg
Z2xHZXRTaGFkZXJpdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBn
bEdldFNoYWRlclNvdXJjZSwgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKK0dM
X1BST0MoR0xpbnQsIGdsR2V0VW5pZm9ybUxvY2F0aW9uLCAoR0x1aW50LCBjb25zdCBjaGFyKikp
CitHTF9QUk9DKHZvaWQsIGdsR2V0VW5pZm9ybWZ2LCAoR0x1aW50LCBHTGludCwgR0xmbG9hdCop
KQorR0xfUFJPQyh2b2lkLCBnbEdldFVuaWZvcm1pdiwgKEdMdWludCwgR0xpbnQsIEdMaW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliZnYsIChHTHVpbnQsIEdMZW51bSwgR0xm
bG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYml2LCAoR0x1aW50LCBHTGVu
dW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYsIChH
THVpbnQsIEdMZW51bSwgR0x2b2lkKiopKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNCdWZmZXIs
IChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNGcmFtZWJ1ZmZlciwgKEdMdWludCkp
CitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1Byb2dyYW0sIChHTHVpbnQpKQorR0xfUFJPQyhHTGJv
b2xlYW4sIGdsSXNSZW5kZXJidWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGds
SXNTaGFkZXIsIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbExpbmtQcm9ncmFtLCAoR0x1aW50
KSkKK0dMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCAoR0xlbnVtLCBHTGVudW0s
IEdMc2l6ZWksIEdMc2l6ZWkpKQorR0xfUFJPQyh2b2lkLCBnbFNhbXBsZUNvdmVyYWdlLCAoR0xj
bGFtcGYsIEdMYm9vbGVhbikpCitHTF9QUk9DKHZvaWQsIGdsU2hhZGVyU291cmNlLCAoR0x1aW50
LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGds
U3RlbmNpbEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KSkKK0dM
X1BST0Modm9pZCwgZ2xTdGVuY2lsTWFza1NlcGFyYXRlLCAoR0xlbnVtLCBHTHVpbnQpKQorR0xf
UFJPQyh2b2lkLCBnbFN0ZW5jaWxPcFNlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwg
R0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMWYsIChHTGludCwgR0xmbG9hdCkpCitH
TF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0
KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpLCAoR0xpbnQsIEdMaW50KSkKK0dMX1BST0Mo
dm9pZCwgZ2xVbmlmb3JtMWl2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitHTF9Q
Uk9DKHZvaWQsIGdsVW5pZm9ybTJmLCAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQpKQorR0xfUFJP
Qyh2b2lkLCBnbFVuaWZvcm0yZnYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopKQor
R0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yaSwgKEdMaW50LCBHTGludCwgR0xpbnQpKQorR0xfUFJP
Qyh2b2lkLCBnbFVuaWZvcm0yaXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkKK0dM
X1BST0Modm9pZCwgZ2xVbmlmb3JtM2YsIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h
dCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBH
TGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNpLCAoR0xpbnQsIEdMaW50LCBHTGlu
dCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0zaXYsIChHTGludCwgR0xzaXplaSwg
Y29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGYsIChHTGludCwgR0xmbG9h
dCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRm
diwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5p
Zm9ybTRpLCAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KSkKK0dMX1BST0Modm9p
ZCwgZ2xVbmlmb3JtNGl2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitHTF9QUk9D
KHZvaWQsIGdsVW5pZm9ybU1hdHJpeDJmdiwgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNv
bnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4M2Z2LCAoR0xpbnQs
IEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVu
aWZvcm1NYXRyaXg0ZnYsIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0
KikpCitHTF9QUk9DKHZvaWQsIGdsVXNlUHJvZ3JhbSwgKEdMdWludCkpCitHTF9QUk9DKHZvaWQs
IGdsVmFsaWRhdGVQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRy
aWIxZiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0
cmliMWZ2LCAoR0x1aW50LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4
QXR0cmliMmYsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpKQorR0xfUFJP
Qyh2b2lkLCBnbFZlcnRleEF0dHJpYjJmdiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCopKQorR0xf
UFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjNmLCAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25z
dCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIz
ZnYsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRy
aWI0ZiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9h
dCwgY29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliNGZ2LCAoR0x1
aW50LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRl
ciwgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNpemVpLCBjb25zdCBHTHZv
aWQqKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNGRhYTRkYy4uNjYzYTc1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzREludGVybmFsUXQu
aCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtNDIsMjQ2ICs0Myw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotI2lmICFkZWZpbmVkKEdMY2hhcikKLXR5cGVkZWYgY2hhciBHTGNo
YXI7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEdMX0RFUFRIMjRfU1RFTkNJTDgpCi0jZGVmaW5l
IEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFQSUVO
VFJZKQotI2RlZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xfRVNfMgot
dHlwZWRlZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0ciBHTGlu
dHB0clR5cGU7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Ci10eXBl
ZGVmIHB0cmRpZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xBY3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEF0dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwgY29u
c3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkgKEdM
ZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVmZmVy
VHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZFJl
bmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEJsZW5kQ29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFt
cGYpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdMZW51
bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUp
KEdMZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5jU2Vw
YXJhdGVUeXBlKShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEs
IEdMZW51bSBkc3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRhdGFU
eXBlKSAoR0xlbnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdMaW50
cHRyVHlwZSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBHTGVudW0g
KEFQSUVOVFJZKiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRl
ZiBHTHVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVkZWYgR0x1
aW50IChBUElFTlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkgKEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0
ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRl
UmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlw
ZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVt
LCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5C
dWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZW5lcmF0ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAoR0x1
aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdMdWlu
dCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdMdWlu
dCwgR0xzaXplaSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkq
IGdsR2V0QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xl
bnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCog
cGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBl
KSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xHZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdM
ZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFk
ZXJJbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdM
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUpIChH
THVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRS
WSogZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50LCBH
TGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUpIChH
THVpbnQsIEdMaW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0
ZXhBdHRyaWJmdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xp
bnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZU
eXBlKSAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElF
TlRSWSogZ2xJc0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVO
VFJZKiBnbElzRnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChB
UElFTlRSWSogZ2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChB
UElFTlRSWSogZ2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xl
YW4gKEFQSUVOVFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWks
IEdMc2l6ZWkpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5cGUp
IChHTGNsYW1wZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hhZGVy
U291cmNlVHlwZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGludCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkgKEdM
ZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
U3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVu
dW0sIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUpIChH
TGludCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVW5pZm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9hdCwg
R0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAoR0xp
bnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VW5pZm9ybTJpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxvYXQs
IEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2Z2
VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5cGUp
IChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdM
ZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdMaW50
LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm00aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xV
bmlmb3JtTWF0cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdM
ZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUp
IChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVpbnQs
IGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmli
MmZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xm
bG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUpIChH
THVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBjb25z
dCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlw
ZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwg
Y29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRm
dlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9v
bGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKik7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWwgOiBwdWJsaWMgUUdyYXBoaWNzT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBI
b3N0V2luZG93KiBob3N0V2luZG93KTsKLSAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgp
OwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV92YWxpZDsgfQotCi0gICAgUUdMV2lk
Z2V0KiBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwg
aW50IGhlaWdodCk7Ci0gICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlv
bkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKLSAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29u
c3Q7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmVUeXBlIGFjdGl2ZVRleHR1cmU7Ci0gICAgZ2xBdHRh
Y2hTaGFkZXJUeXBlIGF0dGFjaFNoYWRlcjsKLSAgICBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUg
YmluZEF0dHJpYkxvY2F0aW9uOwotICAgIGdsQmluZEJ1ZmZlclR5cGUgYmluZEJ1ZmZlcjsKLSAg
ICBnbEJpbmRGcmFtZWJ1ZmZlclR5cGUgYmluZEZyYW1lYnVmZmVyOwotICAgIGdsQmluZFJlbmRl
cmJ1ZmZlclR5cGUgYmluZFJlbmRlcmJ1ZmZlcjsKLSAgICBnbEJsZW5kQ29sb3JUeXBlIGJsZW5k
Q29sb3I7Ci0gICAgZ2xCbGVuZEVxdWF0aW9uVHlwZSBibGVuZEVxdWF0aW9uOwotICAgIGdsQmxl
bmRFcXVhdGlvblNlcGFyYXRlVHlwZSBibGVuZEVxdWF0aW9uU2VwYXJhdGU7Ci0gICAgZ2xCbGVu
ZEZ1bmNTZXBhcmF0ZVR5cGUgYmxlbmRGdW5jU2VwYXJhdGU7Ci0gICAgZ2xCdWZmZXJEYXRhVHlw
ZSBidWZmZXJEYXRhOwotICAgIGdsQnVmZmVyU3ViRGF0YVR5cGUgYnVmZmVyU3ViRGF0YTsKLSAg
ICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlIGNoZWNrRnJhbWVidWZmZXJTdGF0dXM7Ci0g
ICAgZ2xDb21waWxlU2hhZGVyVHlwZSBjb21waWxlU2hhZGVyOwotICAgIGdsQ3JlYXRlUHJvZ3Jh
bVR5cGUgY3JlYXRlUHJvZ3JhbTsKLSAgICBnbENyZWF0ZVNoYWRlclR5cGUgY3JlYXRlU2hhZGVy
OwotICAgIGdsRGVsZXRlQnVmZmVyc1R5cGUgZGVsZXRlQnVmZmVyczsKLSAgICBnbERlbGV0ZUZy
YW1lYnVmZmVyc1R5cGUgZGVsZXRlRnJhbWVidWZmZXJzOwotICAgIGdsRGVsZXRlUHJvZ3JhbVR5
cGUgZGVsZXRlUHJvZ3JhbTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlIGRlbGV0ZVJl
bmRlcmJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVTaGFkZXJUeXBlIGRlbGV0ZVNoYWRlcjsKLSAgICBn
bERldGFjaFNoYWRlclR5cGUgZGV0YWNoU2hhZGVyOwotICAgIGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5VHlwZSBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheVR5cGUgZW5hYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlclR5cGUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXI7Ci0gICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRFR5cGUgZnJhbWVidWZmZXJUZXh0dXJlMkQ7Ci0gICAgZ2xHZW5CdWZmZXJz
VHlwZSBnZW5CdWZmZXJzOwotICAgIGdsR2VuZXJhdGVNaXBtYXBUeXBlIGdlbmVyYXRlTWlwbWFw
OwotICAgIGdsR2VuRnJhbWVidWZmZXJzVHlwZSBnZW5GcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xHZW5S
ZW5kZXJidWZmZXJzVHlwZSBnZW5SZW5kZXJidWZmZXJzOwotICAgIGdsR2V0QWN0aXZlQXR0cmli
VHlwZSBnZXRBY3RpdmVBdHRyaWI7Ci0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSBnZXRBY3Rp
dmVVbmlmb3JtOwotICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSBnZXRBdHRhY2hlZFNoYWRl
cnM7Ci0gICAgZ2xHZXRBdHRyaWJMb2NhdGlvblR5cGUgZ2V0QXR0cmliTG9jYXRpb247Ci0gICAg
Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0QnVmZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUgZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUgZ2V0UHJvZ3Jh
bUluZm9Mb2c7Ci0gICAgZ2xHZXRQcm9ncmFtaXZUeXBlIGdldFByb2dyYW1pdjsKLSAgICBnbEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdjsK
LSAgICBnbEdldFNoYWRlckluZm9Mb2dUeXBlIGdldFNoYWRlckluZm9Mb2c7Ci0gICAgZ2xHZXRT
aGFkZXJpdlR5cGUgZ2V0U2hhZGVyaXY7Ci0gICAgZ2xHZXRTaGFkZXJTb3VyY2VUeXBlIGdldFNo
YWRlclNvdXJjZTsKLSAgICBnbEdldFVuaWZvcm1mdlR5cGUgZ2V0VW5pZm9ybWZ2OwotICAgIGds
R2V0VW5pZm9ybWl2VHlwZSBnZXRVbmlmb3JtaXY7Ci0gICAgZ2xHZXRVbmlmb3JtTG9jYXRpb25U
eXBlIGdldFVuaWZvcm1Mb2NhdGlvbjsKLSAgICBnbEdldFZlcnRleEF0dHJpYmZ2VHlwZSBnZXRW
ZXJ0ZXhBdHRyaWJmdjsKLSAgICBnbEdldFZlcnRleEF0dHJpYml2VHlwZSBnZXRWZXJ0ZXhBdHRy
aWJpdjsKLSAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJQ
b2ludGVydjsKLSAgICBnbElzQnVmZmVyVHlwZSBpc0J1ZmZlcjsKLSAgICBnbElzRnJhbWVidWZm
ZXJUeXBlIGlzRnJhbWVidWZmZXI7Ci0gICAgZ2xJc1Byb2dyYW1UeXBlIGlzUHJvZ3JhbTsKLSAg
ICBnbElzUmVuZGVyYnVmZmVyVHlwZSBpc1JlbmRlcmJ1ZmZlcjsKLSAgICBnbElzU2hhZGVyVHlw
ZSBpc1NoYWRlcjsKLSAgICBnbExpbmtQcm9ncmFtVHlwZSBsaW5rUHJvZ3JhbTsKLSAgICBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VUeXBlIHJlbmRlcmJ1ZmZlclN0b3JhZ2U7Ci0gICAgZ2xTYW1wbGVD
b3ZlcmFnZVR5cGUgc2FtcGxlQ292ZXJhZ2U7Ci0gICAgZ2xTaGFkZXJTb3VyY2VUeXBlIHNoYWRl
clNvdXJjZTsKLSAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlIHN0ZW5jaWxGdW5jU2VwYXJh
dGU7Ci0gICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlVHlwZSBzdGVuY2lsTWFza1NlcGFyYXRlOwot
ICAgIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlIHN0ZW5jaWxPcFNlcGFyYXRlOwotICAgIGdsVW5p
Zm9ybTFmVHlwZSB1bmlmb3JtMWY7Ci0gICAgZ2xVbmlmb3JtMWZ2VHlwZSB1bmlmb3JtMWZ2Owot
ICAgIGdsVW5pZm9ybTFpVHlwZSB1bmlmb3JtMWk7Ci0gICAgZ2xVbmlmb3JtMWl2VHlwZSB1bmlm
b3JtMWl2OwotICAgIGdsVW5pZm9ybTJmVHlwZSB1bmlmb3JtMmY7Ci0gICAgZ2xVbmlmb3JtMmZ2
VHlwZSB1bmlmb3JtMmZ2OwotICAgIGdsVW5pZm9ybTJpVHlwZSB1bmlmb3JtMmk7Ci0gICAgZ2xV
bmlmb3JtMml2VHlwZSB1bmlmb3JtMml2OwotICAgIGdsVW5pZm9ybTNmVHlwZSB1bmlmb3JtM2Y7
Ci0gICAgZ2xVbmlmb3JtM2Z2VHlwZSB1bmlmb3JtM2Z2OwotICAgIGdsVW5pZm9ybTNpVHlwZSB1
bmlmb3JtM2k7Ci0gICAgZ2xVbmlmb3JtM2l2VHlwZSB1bmlmb3JtM2l2OwotICAgIGdsVW5pZm9y
bTRmVHlwZSB1bmlmb3JtNGY7Ci0gICAgZ2xVbmlmb3JtNGZ2VHlwZSB1bmlmb3JtNGZ2OwotICAg
IGdsVW5pZm9ybTRpVHlwZSB1bmlmb3JtNGk7Ci0gICAgZ2xVbmlmb3JtNGl2VHlwZSB1bmlmb3Jt
NGl2OwotICAgIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUgdW5pZm9ybU1hdHJpeDJmdjsKLSAgICBn
bFVuaWZvcm1NYXRyaXgzZnZUeXBlIHVuaWZvcm1NYXRyaXgzZnY7Ci0gICAgZ2xVbmlmb3JtTWF0
cml4NGZ2VHlwZSB1bmlmb3JtTWF0cml4NGZ2OwotICAgIGdsVXNlUHJvZ3JhbVR5cGUgdXNlUHJv
Z3JhbTsKLSAgICBnbFZhbGlkYXRlUHJvZ3JhbVR5cGUgdmFsaWRhdGVQcm9ncmFtOwotICAgIGds
VmVydGV4QXR0cmliMWZUeXBlIHZlcnRleEF0dHJpYjFmOwotICAgIGdsVmVydGV4QXR0cmliMWZ2
VHlwZSB2ZXJ0ZXhBdHRyaWIxZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUgdmVydGV4QXR0
cmliMmY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlIHZlcnRleEF0dHJpYjJmdjsKLSAgICBn
bFZlcnRleEF0dHJpYjNmVHlwZSB2ZXJ0ZXhBdHRyaWIzZjsKLSAgICBnbFZlcnRleEF0dHJpYjNm
dlR5cGUgdmVydGV4QXR0cmliM2Z2OwotICAgIGdsVmVydGV4QXR0cmliNGZUeXBlIHZlcnRleEF0
dHJpYjRmOwotICAgIGdsVmVydGV4QXR0cmliNGZ2VHlwZSB2ZXJ0ZXhBdHRyaWI0ZnY7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyOwotCi0gICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyczsKLSAgICBIb3N0V2luZG93KiBtX2hv
c3RXaW5kb3c7Ci0gICAgUUdMV2lkZ2V0KiBtX2dsV2lkZ2V0OwotICAgIFFHTFdpZGdldCogbV92
aWV3cG9ydEdMV2lkZ2V0OwotICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsKLSAgICBHTHVpbnQg
bV90ZXh0dXJlOwotICAgIEdMdWludCBtX2NhbnZhc0ZibzsKLSAgICBHTHVpbnQgbV9jdXJyZW50
RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAgIGJvb2wgbV9sYXllckNvbXBvc2l0
ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5bnRoZXRpY0Vycm9yczsKLQot
ICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOwotCi1wcml2YXRlOgotCi0g
ICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKTsKLSAgICBib29sIG1f
dmFsaWQ7Ci19OwotCi0jaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpIAotI2RlZmluZSBHRVRf
UFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNlCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1Mo
UHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykp
OwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBj
b25zdAogewogI2lmIGRlZmluZWQgKFFUX09QRU5HTF9FU18yKQpAQCAtMjkxLDggKzUyLDggQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAjZW5kaWYK
IH0KIAotR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKLSAgICA6IG1fYXR0cnMoYXR0cnMpCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBIb3N0
V2luZG93KiBob3N0V2luZG93KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2hv
c3RXaW5kb3coaG9zdFdpbmRvdykKICAgICAsIG1fZ2xXaWRnZXQoMCkKICAgICAsIG1fdmlld3Bv
cnRHTFdpZGdldCgwKQpAQCAtMzAxLDcgKzYyLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQK
ICAgICAsIG1fY3VycmVudEZibygwKQogICAgICwgbV9kZXB0aEJ1ZmZlcigwKQogICAgICwgbV9s
YXllckNvbXBvc2l0ZWQoZmFsc2UpCi0gICAgLCBtX3ZhbGlkKHRydWUpCisgICAgLCBtX3Byb2Nz
QXJlVmFsaWQodHJ1ZSkKIHsKICAgICBtX3ZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9ydEdM
V2lkZ2V0KCk7CiAKQEAgLTMxMCwxMzkgKzcxLDggQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQK
ICAgICBlbHNlCiAgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KCk7CiAKLSAgICBp
ZiAoIW1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNz
Q29udGV4dDNEOiBRR0xXaWRnZXQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICBt
X3ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBHZW9tZXRy
eSBjYW4gYmUgc2V0IHRvIHplcm8gYmVjYXVzZSBtX2dsV2lkZ2V0IGlzIHVzZWQgb25seSBmb3Ig
aXRzIFFHTENvbnRleHQuCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7
Ci0KLSNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZh
bHNlOwotI2Vsc2UKLSAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICBtX2F0dHJzLmRl
cHRoID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0KICAg
ICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0gICAgYWN0aXZlVGV4dHVyZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKLSAgICBiaW5kQXR0cmliTG9jYXRpb24gPSBHRVRf
UFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKLSAgICBiaW5kQnVmZmVyID0gR0VU
X1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIgPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xvciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKLSAgICBibGVuZEVxdWF0aW9uID0gR0VUX1BS
T0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24pOwotICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOwotICAgIGJsZW5kRnVu
Y1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKLSAgICBi
dWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1ZmZlclN1
YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFkZXIp
OwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJvZ3JhbSk7
Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7Ci0g
ICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKLSAg
ICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZm
ZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVByb2dy
YW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRl
UmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERl
bGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERldGFj
aFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVT
UyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2VuRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVT
UyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKLSAgICBnZXRBY3RpdmVBdHRyaWIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKLSAgICBnZXRBY3RpdmVVbmlmb3JtID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOwotICAgIGdldEF0dGFjaGVkU2hhZGVy
cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpOwotICAgIGdldEF0dHJp
YkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKLSAgICBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQYXJhbWV0
ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOwotICAgIGdl
dFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsK
LSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2KTsKLSAg
ICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKLSAgICBnZXRTaGFkZXJpdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAgZ2V0U2hhZGVyU291cmNlID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BST0NfQUREUkVT
UyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliZnYpOwotICAgIGdldFZlcnRleEF0dHJpYml2
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2KTsKLSAgICBnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOwotICAgIGlz
RnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0gICAgaXNQ
cm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5kZXJidWZm
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOwotICAgIGlzU2hhZGVyID0g
R0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVDb3ZlcmFnZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291cmNlID0g
R0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNTZXBhcmF0
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAgICBzdGVuY2ls
TWFza1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUpOwot
ICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNlcGFy
YXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmKTsKLSAg
ICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOwotICAgIHVuaWZv
cm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOwotICAgIHVuaWZvcm0xaXYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7Ci0gICAgdW5pZm9ybTJmID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3JtMmkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYpOwot
ICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2YpOwotICAgIHVuaWZv
cm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7Ci0gICAgdW5pZm9ybTNpID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAgICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3JtNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGkpOwot
ICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7Ci0gICAgdW5p
Zm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKLSAg
ICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgzZnYp
OwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJp
eDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsK
LSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQcm9ncmFt
KTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIx
Zik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJp
YjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0
cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJpYjNmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4QXR0cmliNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVydGV4QXR0cmliUG9pbnRlciA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsKLQotICAgIGlmICghbV92YWxpZCkgewotICAg
ICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBleHRl
bnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCi0gICAgZ2VuRnJhbWVidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX2NhbnZhc0Zibyk7Ci0KLSAgICBnbEdlblRleHR1cmVzKDEs
ICZtX3RleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9T
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlmIChtX2F0
dHJzLmRlcHRoKQotICAgICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Rl
cHRoQnVmZmVyKTsKLQotICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xl
YXIgY29sb3IgdG8gYmxhY2suCi0gICAgbV9jdXJyZW50RmJvID0gbV9jYW52YXNGYm87Ci0gICAg
YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNG
Ym8pOwotICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCiBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCkBAIC00Njks
NjMgKzk5LDYgQEAgc3RhdGljIGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBp
eGVsKQogICAgIHJldHVybiAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4g
MTYpICYgMHhmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBp
ZiAod2lkdGggPT0gbV9ib3VuZGluZ1JlY3Qud2lkdGgoKSAmJiBoZWlnaHQgPT0gbV9ib3VuZGlu
Z1JlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYm91bmRpbmdSZWN0ID0g
UVJlY3RGKFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBtX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0gICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgotICAg
IGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7
Ci0gICAgaWYgKG1fYXR0cnMuYWxwaGEpCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7Ci0gICAg
ZWxzZQotICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8q
IGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7Ci0g
ICAgICAgIC8vIENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgotICAgICAgICBiaW5k
UmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZm
ZXIpOwotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgICAgIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKLSNlbHNlCi0gICAgICAgIGlmICht
X2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWln
aHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01Q
T05FTlQsIHdpZHRoLCBoZWlnaHQpOwotI2VuZGlmCi0gICAgICAgIGJpbmRSZW5kZXJidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gICAgfQotCi0gICAgLy8gQ29u
c3RydWN0IGNhbnZhcyBGQk8uCi0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsK
LSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZl
cik7Ci0jaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNp
bCkKLSAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSNlbmRpZgotCi0gICAg
R0xlbnVtIHN0YXR1cyA9IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUl9DT01QTEVURSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBDYW52YXMgRkJPIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGludCBjbGVhckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JV
RkZFUl9CSVQ7Ci0gICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGNsZWFyRmxhZ3MgfD0g
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAgaWYgKG1fYXR0cnMuc3Rl
bmNpbCkKLSAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9C
VUZGRVJfQklUOwotCi0gICAgZ2xDbGVhcihjbGVhckZsYWdzKTsKLSAgICBnbEZsdXNoKCk7Ci19
Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50
ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRn
ZXQpCiB7CiAgICAgUV9VTlVTRUQod2lkZ2V0KTsKQEAgLTU0NSwxMCArMTE4LDEwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0
IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJl
dF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKICAgICBn
bFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCBpbWFnZVBpeGVscyk7CiAKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOworICAgIG1fY29udGV4dC0+Z2xCaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8p
OwogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhl
IG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0Iz
Ml9QTSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTU3OCw3ICsxNTEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVy
LCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogCiBRUmVjdEYgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Ym91bmRpbmdSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9ib3VuZGluZ1JlY3Q7
CisgICAgcmV0dXJuIFFSZWN0RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYobV9jb250ZXh0LT5tX2N1
cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpKTsKIH0KIAogdm9pZCogR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9j
KQpAQCAtNTg4LDEzICsxNjEsMTMgQEAgdm9pZCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgMzsgaSsrKSB7CiAgICAgICAgIFN0cmluZyBuYW1lV2l0aEV4dCA9IHByb2MgKyBleHRbaV07
CiAKLSAgICAgICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+Z2V0UHJvY0Fk
ZHJlc3MobmFtZVdpdGhFeHQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHZvaWQqIGFkZHIgPSBt
X2dsV2lkZ2V0LT5jb250ZXh0KCktPmdldFByb2NBZGRyZXNzKFFTdHJpbmc6OmZyb21Bc2NpaShu
YW1lV2l0aEV4dC51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGlmIChhZGRyKSAKICAgICAgICAg
ICAgIHJldHVybiBhZGRyOwogICAgIH0KIAogICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0
M0Q6IERpZCBub3QgZmluZCBHTCBmdW5jdGlvbiAlcyIsIHByb2MudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgbV92YWxpZCA9IGZhbHNlOworICAgIG1fcHJvY3NBcmVWYWxpZCA9IGZhbHNlOwogICAgIHJl
dHVybiAwOwogfQogCkBAIC02MDgsMTAgKzE4MSw1NSBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aQogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wpCi0g
ICAgOiBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKGF0dHJzLCBob3N0
V2luZG93KSkKKyAgICA6IG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX2ludGVybmFsKG5ldyBHcmFw
aGljc0NvbnRleHQzREludGVybmFsKHRoaXMsIGhvc3RXaW5kb3cpKQogewotICAgIGlmICghbV9p
bnRlcm5hbC0+aXNWYWxpZCgpKQorI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgbV9h
dHRycy5zdGVuY2lsID0gZmFsc2U7CisjZWxzZQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisg
ICAgICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOworI2VuZGlmCisgICAgbV9hdHRycy5hbnRpYWxp
YXMgPSBmYWxzZTsKKworICAgIGlmICghbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgp
KSB7CisgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0
aWFsaXphdGlvbiBmYWlsZWQuIik7CiAgICAgICAgIG1faW50ZXJuYWwgPSAwOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisjaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpCisjZGVmaW5lIEdM
X1BST0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgUHJvYyA9IDo6UHJvYzsKKyNlbHNlCisj
ZGVmaW5lIEdMX1BST0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgUHJvYyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0M0Q6OlByb2MjI1R5cGU+KG1faW50ZXJuYWwtPmdldFBy
b2NBZGRyZXNzKCNQcm9jKSk7CisjZW5kaWYKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRE9w
ZW5HTFF0LmgiCisjdW5kZWYgR0xfUFJPQworCisgICAgaWYgKCFtX2ludGVybmFsLT5tX3Byb2Nz
QXJlVmFsaWQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQWxsIG5l
ZWRlZCBPcGVuR0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2YWlsYWJsZSIpOworICAgICAgICBtX2lu
dGVybmFsID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENyZWF0ZSBidWZm
ZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KKyAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAq
LyAxLCAmbV9pbnRlcm5hbC0+bV9jYW52YXNGYm8pOworCisgICAgZ2xHZW5UZXh0dXJlcygxLCAm
bV9pbnRlcm5hbC0+bV90ZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFsLT5tX3RleHR1cmUpOworICAgIGdsVGV4UGFyYW1l
dGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
OworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCk7CisKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX2ludGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKKworICAgIC8v
IEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCisg
ICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvID0gbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Cisg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2lu
dGVybmFsLT5tX2NhbnZhc0Zibyk7CisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAu
MCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQpAQCAtNjU2
LDEzICsyNzQsNjAgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpw
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIGlmICh3aWR0aCA9PSBt
X2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0IHx8ICghbV9pbnRlcm5h
bCkpCisgICAgaWYgKCh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJy
ZW50SGVpZ2h0KSB8fCAoIW1faW50ZXJuYWwpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1
cnJlbnRXaWR0aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKIAotICAg
IG1faW50ZXJuYWwtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKworICAgIC8vIENyZWF0ZSBjb2xvciBidWZmZXIKKyAg
ICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2ludGVybmFs
LT5tX3RleHR1cmUpOworICAgIGlmIChtX2F0dHJzLmFscGhhKQorICAgICAgICBnbFRleEltYWdl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRh
ICovIDApOworICAgIGVsc2UKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCB3aWR0
aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZ2xCaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAobV9hdHRy
cy5kZXB0aCkgeworICAgICAgICAvLyBDcmVhdGUgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4K
KyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIpOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VT
XzIpCisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBo
ZWlnaHQpOworI2Vsc2UKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAg
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBH
TF9ERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwor
I2VuZGlmCisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCAwKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1faW50
ZXJuYWwtPm1fY2FudmFzRmJvKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9pbnRlcm5hbC0+bV90ZXh0dXJl
LCAwKTsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2lu
dGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKKyNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAg
ICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5h
bC0+bV9kZXB0aEJ1ZmZlcik7CisjZW5kaWYKKworICAgIEdMZW51bSBzdGF0dXMgPSBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBp
ZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewor
ICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMgRkJPIGluaXRpYWxp
emF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBjbGVh
ckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1f
YXR0cnMuZGVwdGgpCisgICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgY2xlYXJG
bGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworCisgICAgZ2xD
bGVhcihjbGVhckZsYWdzKTsKKyAgICBnbEZsdXNoKCk7CiB9CiAKIEludFNpemUgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkKQEAgLTY3Myw3ICszMzgsNyBA
QCBJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0
dXJlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC02ODEsNyArMzQ2
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBB
U1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGds
QXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXpl
aSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykK
QEAgLTY5MiwzMyArMzU3LDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVk
U2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtCiAgICAgfQogCiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBnZXRBdHRhY2hl
ZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKKyAgICBnbEdldEF0
dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFT
U0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRl
eCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKHRhcmdldCwgYnVm
ZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8g
PSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX2NhbnZhc0ZibzsKLSAgICBtX2ludGVy
bmFsLT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8pOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1
ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdl
dCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1
cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC03MzAsMTkg
KzM5NSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYg
Ymx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOworICAgIGdsQmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJsZW5kRXF1YXRpb24obW9kZSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uKG1vZGUpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVu
dW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVhdGlvblNlcGFy
YXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9k
ZVJHQiwgbW9kZUFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5j
KEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCkBAIC03NTQsMzEgKzQxOSwzMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0Mz
RGVudW0gZGZhY3RvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRl
KEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0Mz
RGVudW0gZHN0QWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwg
c3JjQWxwaGEsIGRzdEFscGhhKTsKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
dWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVz
YWdlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2Up
OworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwg
R0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRh
dGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0Mz
RHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZmZXJTdWJEYXRhKHRh
cmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBv
ZmZzZXQsIHNpemUsIGRhdGEpOwogfQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXModGFyZ2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihH
QzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBA
IC04MTksNyArNDg0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmNvbXBp
bGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC04
NjcsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIp
OworICAgIGdsRGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQpAQCAtODc5LDcgKzU0NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJh
eXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtOTAz
LDcgKzU2OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXAp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWlu
dCBpbmRleCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZmluaXNoKCkKQEAgLTkyMSwxMyArNTg2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmZsdXNoKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIp
OworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwg
R0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2
ZWwpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRh
cmdldCwgdGV4dHVyZSwgbGV2ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0
LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC05MzksNyArNjA0LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsK
IH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC05NTIs
MTQgKzYxNywxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleAogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAg
IG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNU
SVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1p
dihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
LCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9j
KG1heExlbmd0aCk7CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXpl
ID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVB
dHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlw
ZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0
aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5n
dGgpIHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC05ODQsMTQgKzY0OSwxNCBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgR0MzRHVpbnQgaW5kZQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6
QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFt
aXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElW
RV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0g
KEdMY2hhciopIGZhc3RNYWxsb2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGgg
PSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1f
aW50ZXJuYWwtPmdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwg
aW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAg
Z2xHZXRBY3RpdmVVbmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBt
YXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFu
YW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTAxMiwxMiArNjc3LDEy
IEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2lu
dGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRDb250ZXh0QXR0cmlidXRlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fYXR0
cnM7CisgICAgcmV0dXJuIG1fYXR0cnM7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRFcnJvcigpCkBAIC0xMDUxLDcgKzcxNiw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29u
dGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1ZmZlcik7CisgICAgcmV0dXJu
IGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6
OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC0xMDY2LDcgKzczMSw3IEBAIEdDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVi
dWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0ZyYW1l
YnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMDc1LDcgKzc0MCw3IEBAIEdDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQcm9ncmFtKHByb2dyYW0p
OworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVm
ZmVyKQpAQCAtMTA4NCw3ICs3NDksNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6
aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiAgICAgICAgIHJl
dHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZm
ZXIpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdD
M0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKQEAgLTEwOTMsNyArNzU4LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6
OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xfRkFM
U0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gZ2xJc1No
YWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0
dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTExMTUsNyArNzgwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQog
ewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGds
TGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVs
U3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTExNjYsMTMgKzgz
MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBicmVhazsKICAgICB9CiAj
ZW5kaWYKLSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJu
YWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52
ZXJ0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CisgICAgZ2xTYW1wbGVD
b3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Np
c3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0KQpAQCAtMTE5OCw3ICs4NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJT
b3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogICAgIENT
dHJpbmcgc291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hhciog
ZGF0YSA9IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVuZ3RoID0gcHJlZml4ZWRTb3VyY2Uu
bGVuZ3RoKCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwg
LyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAgIGdsU2hhZGVyU291cmNlKChHTHVp
bnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwg
R0MzRHVpbnQgbWFzaykKQEAgLTEyMTAsNyArODc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2sp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZh
Y2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3Rl
bmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3RlbmNpbEZ1
bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTIyMiw3ICs4ODcsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNE
dWludCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICBn
bFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0g
enBhc3MpCkBAIC0xMjM0LDcgKzg5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5j
aWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNE
ZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2ls
T3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGZsb2F0IHZhbHVlKQpAQCAtMTI1MiwxMTUgKzkxNywxMTUgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9jYXRpb24sIHYwKTsKKyAgICBn
bFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBz
aXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5p
Zm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQg
djEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3JtMmYo
bG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0y
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMmZ2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0Mz
RGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBn
bFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdD
M0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGYo
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaShsb2NhdGlv
biwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXks
IEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwg
R0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVu
aWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlm
b3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBH
QzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBn
bFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAg
IGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGlu
dCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aShsb2NhdGlvbiwg
djAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2
Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwg
R0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUs
IHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZs
b2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5z
cG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0
cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAg
LTEzNjgsNyArMTAzMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVz
ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQpAQCAtMTM3Niw2MSArMTA0MSw2MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxp
ZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFZhbGlkYXRlUHJv
Z3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGlu
ZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9h
dCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZl
cnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQg
djEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKKyAgICBnbFZlcnRleEF0
dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0
ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAgICBnbFZlcnRleEF0dHJp
YjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVy
dGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgs
IGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdD
M0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7
CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdD
M0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdD
M0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwg
dHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRp
Y19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGlu
ZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2
b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0
aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE0NDgsNyArMTExMyw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZh
bHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1
ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCog
dmFsdWUpCkBAIC0xNDYwLDcgKzExMjUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRG
bG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0
LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFt
TmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNDcyLDcgKzExMzcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFByb2dyYW1pdihw
cm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xNDgwLDcg
KzExNDUsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxl
bmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklO
Rk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogCkBAIC0x
NDg4LDcgKzExNTMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZv
TG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJl
dHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxl
bmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVu
Z3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RG
cmVlKGluZm8pOwpAQCAtMTQ5OSwxNCArMTE2NCwxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwg
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVy
KTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRT
aGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0x
NTE0LDE0ICsxMTc5LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5m
b0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFs
LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgs
ICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6
SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAg
R0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWlu
Zm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlckluZm9M
b2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2co
c2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7
CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNTM0LDE0ICsxMTk5LDE0IEBAIFN0cmluZyBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBs
ZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3ND
b250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFNoYWRl
cml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVu
Z3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hh
ciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAi
IjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNp
emUsIGluZm8pOworICAgIGdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwg
aW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpA
QCAtMTU2NCwxMyArMTIyOSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgRwogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0
aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xH
ZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTU3OCwxOSArMTI0MywxOSBAQCBHQzNEaW50IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4g
Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0
dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2
KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2
YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zm
c2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCkBAIC0xNTk4LDcgKzEyNjMs
NyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNl
dChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBtX2lu
dGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRl
cik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9p
bnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4ocmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNjE5LDcgKzEyODQsNyBAQCBQbGF0
Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIoKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9
IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsK
KyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhh
bmRsZTsKIH0KIApAQCAtMTYyNywyOCArMTI5MiwyOCBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2lu
dGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xH
ZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRs
ZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3Jh
bSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIHJldHVybiBnbENyZWF0ZVBy
b2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
UmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1
ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8q
IGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKIFBsYXRmb3Jt
M0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJu
IG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICByZXR1cm4gZ2xDcmVhdGVTaGFk
ZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVRleHR1cmUoKQpAQCAtMTY2MiwzMSArMTMyNywzMSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRl
bGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMo
MSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZy
YW1lYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7Cisg
ICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFt
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAm
cmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZl
cik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgIGdsRGVsZXRl
U2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1
cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87396</attachid>
            <date>2011-03-29 12:41:35 -0700</date>
            <delta_ts>2011-03-30 00:22:29 -0700</delta_ts>
            <desc>Clean up based on experiences with GraphicsContext3DOpenGL. Fixed ChangeLog entry.</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>80391</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZWU0NWZlLi5jZjRkZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0
IEBACisyMDExLTAzLTI5ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTU0CisKKyAgICAgICAgTW9k
aWZpZWQgT3BlbkdMIHN5bWJvbCByZXNvbHZlciB0byBiZSB0cmFuc3BhcmVudCBhbmQgZWFzaWVy
IHRvCisgICAgICAgIG1haW50YWluLgorCisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREVTMlByb2NzLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5o
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFByb2NzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRF
cXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVy
U3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29t
cGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNo
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmlzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVy
YnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1h
dHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
aWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0
ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVy
dGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFya0xheWVyQ29tcG9z
aXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFya0NvbnRleHRD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBv
c2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lv
bnMpOgorCiAyMDExLTAzLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODIwOTkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IDQyNTFkNzMuLjkwNmIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNDE0LDcgKzM0
MTQsMTQgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0Ry
YXdpbmdCdWZmZXIuaCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMz
RFF0LmgKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaCBcCisg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5o
CisKKyAgICBjb250YWlucyhERUZJTkVTLCBRVF9PUEVOR0xfRVNfMikgeworICAgICAgICBIRUFE
RVJTICs9IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNERVMyUHJvY3MuaAor
ICAgIH0gZWxzZSB7CisgICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RQcm9jcy5oCisgICAgfQogCiAgICAgIXY4IHsKICAgICAgICAgU09VUkNF
UyArPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAppbmRleCAzNTFiNDQ1Li45MTllOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTU1LDYg
KzU1LDcgQEAgY2xhc3MgQ0FMYXllcjsKIGNsYXNzIFdlYkdMTGF5ZXI7CiAjZW5kaWYKICNlbGlm
IFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oIgog
UVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRUGFpbnRlcjsKIGNsYXNzIFFSZWN0OwpAQCAtODcz
LDcgKzg3NCw3IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oUVQpCiAgICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBTdHJpbmcgc291cmNlOwogICAg
ICAgICBTdHJpbmcgbG9nOwpAQCAtODgxLDE2ICs4ODIsMjIgQEAgcHVibGljOgogICAgIH0gU2hh
ZGVyU291cmNlRW50cnk7CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3Vy
Y2VFbnRyeT4gbV9zaGFkZXJTb3VyY2VNYXA7CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBmcmll
bmQgY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CisgICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4
dGVuc2lvbnM7CisjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7CiAg
ICAgQU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKLQogICAgIE93blB0cjxFeHRlbnNpb25z
M0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgogCiAgICAgQXR0cmlidXRlcyBtX2F0dHJz
OwogICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+ID4gbV92ZXJ0ZXhBcnJheTsKIAorI2lmIFBMQVRG
T1JNKE1BQykKICAgICBDR0xDb250ZXh0T2JqIG1fY29udGV4dE9iajsKICAgICBSZXRhaW5QdHI8
V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCiAgICAgR0MzRHVpbnQgbV90ZXh0dXJl
LCBtX2NvbXBvc2l0b3JUZXh0dXJlOwogICAgIEdDM0R1aW50IG1fZmJvOwogICAgIEdDM0R1aW50
IG1fZGVwdGhTdGVuY2lsQnVmZmVyOwpAQCAtOTExLDYgKzkxOCwxNiBAQCBwdWJsaWM6CiAgICAg
TGlzdEhhc2hTZXQ8R0MzRGVudW0+IG1fc3ludGhldGljRXJyb3JzOwogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShRVCkKKyNkZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBc
CisgICAgdHlwZWRlZiBSZXR1cm5WYWx1ZSAoQVBJRU5UUlkqIFByb2MjI1R5cGUpIFBhcmFtczsg
XAorICAgIFByb2MjI1R5cGUgUHJvYzsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNERVMyUHJvY3MuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNEUHJvY3MuaCIKKyN1bmRlZiBHTF9QUk9DCisjZW5kaWYKICAgICAvLyBG
SVhNRTogaWRlYWxseSB0aGlzIHdvdWxkIGJlIHVzZWQgb24gYWxsIHBsYXRmb3Jtcy4KICNpZiBQ
TEFURk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oUVQpCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREVTMlByb2NzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREVTMlByb2NzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
REludGVybmFsUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTFkNmM3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTAgVGlldG8gQ29ycG9yYXRpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICAgICAKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAgICAgCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyovCisKKyNpZm5kZWYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0X2gK
KyNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0X2gKKworI2luY2x1ZGUgPFFHTENv
bnRleHQ+CisjaW5jbHVkZSA8UUdyYXBoaWNzT2JqZWN0PgorCisjaWYgIWRlZmluZWQoR0xjaGFy
KQordHlwZWRlZiBjaGFyIEdMY2hhcjsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoR0xfREVQVEgy
NF9TVEVOQ0lMOCkKKyNkZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOCAweDg4RjAKKyNlbmRpZgor
CisjaWYgIWRlZmluZWQoQVBJRU5UUlkpCisjZGVmaW5lIEFQSUVOVFJZCisjZW5kaWYKKworI2lm
ZGVmIFFUX09QRU5HTF9FU18yCit0eXBlZGVmIEdMc2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Cit0
eXBlZGVmIEdMaW50cHRyIEdMaW50cHRyVHlwZTsKKyNlbHNlCit0eXBlZGVmIHB0cmRpZmZfdCBH
THNpemVpcHRyVHlwZTsKK3R5cGVkZWYgcHRyZGlmZl90IEdMaW50cHRyVHlwZTsKKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEV4dGVuc2lvbnMzRFF0OworY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7CitjbGFzcyBIb3N0V2luZG93OworCitjbGFzcyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsIDogcHVibGljIFFHcmFwaGljc09iamVjdCB7CitwdWJsaWM6CisgICAgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRCosIEhvc3RXaW5kb3cqKTsK
KyAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOworCisgICAgUUdMV2lkZ2V0KiBnZXRW
aWV3cG9ydEdMV2lkZ2V0KCk7CisgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHls
ZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKKyAgICBRUmVjdEYgYm91bmRpbmdSZWN0
KCkgY29uc3Q7CisKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIEhvc3RX
aW5kb3cqIG1faG9zdFdpbmRvdzsKKyAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7CisgICAgUUdM
V2lkZ2V0KiBtX3ZpZXdwb3J0R0xXaWRnZXQ7CisgICAgaW50IG1fcHJvY3NBcmVWYWxpZDsKKwor
ICAgIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7Cit9OworCit9CisK
KyNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzREludGVybmFsUXRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQ
cm9jcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjA0MjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFByb2NzLmgKQEAgLTAsMCArMSw5MCBAQAorR0xfUFJPQyh2b2lkLCBnbEFjdGl2
ZVRleHR1cmUsIChHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRlciwgKEdMdWlu
dCwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChHTHVpbnQs
IEdMdWludCwgY29uc3QgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRCdWZmZXIsIChHTGVu
dW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyLCAoR0xlbnVtLCBH
THVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIChHTGVudW0sIEdMdWlu
dCkpCitHTF9QUk9DKHZvaWQsIGdsQmxlbmRDb2xvciwgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xj
bGFtcGYsIEdMY2xhbXBmKSkKK0dMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAoR0xlbnVt
KSkKK0dMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHTGVudW0sIEdMZW51
bSkpCitHTF9QUk9DKHZvaWQsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIChHTGVudW0gc3JjUkdCLCBH
TGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkpCitHTF9QUk9D
KHZvaWQsIGdsQnVmZmVyRGF0YSwgKEdMZW51bSwgR0xzaXplaXB0ciwgY29uc3QgR0x2b2lkKiwg
R0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xCdWZmZXJTdWJEYXRhLCAoR0xlbnVtLCBHTGludHB0
ciwgR0xzaXplaXB0ciwgY29uc3QgR0x2b2lkKikpCitHTF9QUk9DKEdMZW51bSwgZ2xDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzLCAoR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xDb21waWxlU2hhZGVy
LCAoR0x1aW50KSkKK0dMX1BST0MoR0x1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQorR0xfUFJP
QyhHTHVpbnQsIGdsQ3JlYXRlU2hhZGVyLCAoR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxl
dGVCdWZmZXJzLCAoR0xzaXplaSwgY29uc3QgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVs
ZXRlRnJhbWVidWZmZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9p
ZCwgZ2xEZWxldGVQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVSZW5k
ZXJidWZmZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xE
ZWxldGVTaGFkZXIsIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERldGFjaFNoYWRlciwgKEdM
dWludCwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXks
IChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0x1
aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgKEdMZW51bSwg
R0xlbnVtLCBHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50KSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZW5CdWZmZXJzLCAoR0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGds
R2VuZXJhdGVNaXBtYXAsIChHTGVudW0gdGFyZ2V0KSkKK0dMX1BST0Modm9pZCwgZ2xHZW5GcmFt
ZWJ1ZmZlcnMsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5SZW5kZXJi
dWZmZXJzLCAoR0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlQXR0
cmliLCAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSos
IEdMY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZVVuaWZvcm0sIChHTHVpbnQsIEdM
dWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKikpCitHTF9Q
Uk9DKHZvaWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVp
KiwgR0x1aW50KikpCitHTF9QUk9DKEdMaW50LCBnbEdldEF0dHJpYkxvY2F0aW9uLCAoR0x1aW50
LCBjb25zdCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYsIChH
TGVudW0sIEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJh
bXMpKQorR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1JbmZvTG9nLCAoR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1pdiwgKEdMdWlu
dCwgR0xlbnVtLCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2LCAoR0xlbnVtLCBHTGVudW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hh
ZGVySW5mb0xvZywgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZXRTaGFkZXJpdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQorR0xfUFJPQyh2
b2lkLCBnbEdldFNoYWRlclNvdXJjZSwgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIq
KSkKK0dMX1BST0MoR0xpbnQsIGdsR2V0VW5pZm9ybUxvY2F0aW9uLCAoR0x1aW50LCBjb25zdCBj
aGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VW5pZm9ybWZ2LCAoR0x1aW50LCBHTGludCwgR0xm
bG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFVuaWZvcm1pdiwgKEdMdWludCwgR0xpbnQsIEdM
aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliZnYsIChHTHVpbnQsIEdMZW51
bSwgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYml2LCAoR0x1aW50
LCBHTGVudW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl
cnYsIChHTHVpbnQsIEdMZW51bSwgR0x2b2lkKiopKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNC
dWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNGcmFtZWJ1ZmZlciwgKEdM
dWludCkpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1Byb2dyYW0sIChHTHVpbnQpKQorR0xfUFJP
QyhHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xl
YW4sIGdsSXNTaGFkZXIsIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbExpbmtQcm9ncmFtLCAo
R0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCAoR0xlbnVtLCBH
TGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpKQorR0xfUFJPQyh2b2lkLCBnbFNhbXBsZUNvdmVyYWdl
LCAoR0xjbGFtcGYsIEdMYm9vbGVhbikpCitHTF9QUk9DKHZvaWQsIGdsU2hhZGVyU291cmNlLCAo
R0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50KikpCitHTF9QUk9DKHZv
aWQsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50
KSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2lsTWFza1NlcGFyYXRlLCAoR0xlbnVtLCBHTHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxPcFNlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0sIEdM
ZW51bSwgR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMWYsIChHTGludCwgR0xmbG9h
dCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBH
TGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpLCAoR0xpbnQsIEdMaW50KSkKK0dM
X1BST0Modm9pZCwgZ2xVbmlmb3JtMWl2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTJmLCAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQpKQor
R0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yZnYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9h
dCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yaSwgKEdMaW50LCBHTGludCwgR0xpbnQpKQor
R0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yaXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQq
KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtM2YsIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwg
R0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNmdiwgKEdMaW50LCBHTHNpemVpLCBj
b25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNpLCAoR0xpbnQsIEdMaW50
LCBHTGludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0zaXYsIChHTGludCwgR0xz
aXplaSwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGYsIChHTGludCwg
R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5p
Zm9ybTRmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQs
IGdsVW5pZm9ybTRpLCAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KSkKK0dMX1BS
T0Modm9pZCwgZ2xVbmlmb3JtNGl2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsVW5pZm9ybU1hdHJpeDJmdiwgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xl
YW4sIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4M2Z2LCAo
R0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lk
LCBnbFVuaWZvcm1NYXRyaXg0ZnYsIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBH
TGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVXNlUHJvZ3JhbSwgKEdMdWludCkpCitHTF9QUk9D
KHZvaWQsIGdsVmFsaWRhdGVQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0
ZXhBdHRyaWIxZiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVy
dGV4QXR0cmliMWZ2LCAoR0x1aW50LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGds
VmVydGV4QXR0cmliMmYsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpKQor
R0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjJmdiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCop
KQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjNmLCAoR0x1aW50LCBjb25zdCBHTGZsb2F0
LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhB
dHRyaWIzZnYsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0
ZXhBdHRyaWI0ZiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3Qg
R0xmbG9hdCwgY29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliNGZ2
LCAoR0x1aW50LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmli
UG9pbnRlciwgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNpemVpLCBjb25z
dCBHTHZvaWQqKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNGRhYTRkYy4uMTUxNjNlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzREludGVy
bmFsUXQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgpAQCAtNDIsMjQ2ICs0Myw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2lmICFkZWZpbmVkKEdMY2hhcikKLXR5cGVkZWYgY2hh
ciBHTGNoYXI7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEdMX0RFUFRIMjRfU1RFTkNJTDgpCi0j
ZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCi0jZW5kaWYKLQotI2lmICFkZWZpbmVk
KEFQSUVOVFJZKQotI2RlZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xf
RVNfMgotdHlwZWRlZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0
ciBHTGludHB0clR5cGU7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7
Ci10eXBlZGVmIHB0cmRpZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xBY3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEF0dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWlu
dCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlw
ZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1l
YnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
QmluZFJlbmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEJsZW5kQ29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwg
R0xjbGFtcGYpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkg
KEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0
ZVR5cGUpKEdMZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRG
dW5jU2VwYXJhdGVUeXBlKShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3Jj
QWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZl
ckRhdGFUeXBlKSAoR0xlbnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVt
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0s
IEdMaW50cHRyVHlwZSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBH
TGVudW0gKEFQSUVOVFJZKiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwot
dHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVk
ZWYgR0x1aW50IChBUElFTlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBH
THVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlw
ZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bERlbGV0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
RGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkg
KEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwg
R0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZW5CdWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xHZW5lcmF0ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWks
IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBl
KSAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdM
Y2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkg
KEdMdWludCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNo
YXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkg
KEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJ
RU5UUlkqIGdsR2V0QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51
bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBH
TGludCogcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9M
b2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlw
ZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRTaGFkZXJJbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVu
dW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5
cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChB
UElFTlRSWSogZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdM
aW50LCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5
cGUpIChHTHVpbnQsIEdMaW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRWZXJ0ZXhBdHRyaWJmdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51
bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9p
bnRlcnZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFu
IChBUElFTlRSWSogZ2xJc0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4g
KEFQSUVOVFJZKiBnbElzRnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29s
ZWFuIChBUElFTlRSWSogZ2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29s
ZWFuIChBUElFTlRSWSogZ2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBH
TGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdM
c2l6ZWksIEdMc2l6ZWkpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFn
ZVR5cGUpIChHTGNsYW1wZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
U2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBH
TGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlw
ZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVt
LCBHTGVudW0sIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5
cGUpIChHTGludCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0x
ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFVuaWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xm
bG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVW5pZm9ybTJpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xVbmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdM
ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlm
b3JtM2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdM
c2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00
ZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNv
bnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkg
KEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm00aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdM
c2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xVbmlmb3JtTWF0cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNv
bnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRm
dlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xm
bG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChH
THVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4
QXR0cmliMmZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29u
c3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5
cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50
LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJp
YjRmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xm
bG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0
dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0s
IEdMYm9vbGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKik7Ci0KLWNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwgOiBwdWJsaWMgUUdyYXBoaWNzT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBH
cmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKLSAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbCgpOwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV92YWxpZDsgfQotCi0gICAg
UUdMV2lkZ2V0KiBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHls
ZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKLSAgICBRUmVjdEYgYm91bmRpbmdSZWN0
KCkgY29uc3Q7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmVUeXBlIGFjdGl2ZVRleHR1cmU7Ci0gICAg
Z2xBdHRhY2hTaGFkZXJUeXBlIGF0dGFjaFNoYWRlcjsKLSAgICBnbEJpbmRBdHRyaWJMb2NhdGlv
blR5cGUgYmluZEF0dHJpYkxvY2F0aW9uOwotICAgIGdsQmluZEJ1ZmZlclR5cGUgYmluZEJ1ZmZl
cjsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlclR5cGUgYmluZEZyYW1lYnVmZmVyOwotICAgIGdsQmlu
ZFJlbmRlcmJ1ZmZlclR5cGUgYmluZFJlbmRlcmJ1ZmZlcjsKLSAgICBnbEJsZW5kQ29sb3JUeXBl
IGJsZW5kQ29sb3I7Ci0gICAgZ2xCbGVuZEVxdWF0aW9uVHlwZSBibGVuZEVxdWF0aW9uOwotICAg
IGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSBibGVuZEVxdWF0aW9uU2VwYXJhdGU7Ci0gICAg
Z2xCbGVuZEZ1bmNTZXBhcmF0ZVR5cGUgYmxlbmRGdW5jU2VwYXJhdGU7Ci0gICAgZ2xCdWZmZXJE
YXRhVHlwZSBidWZmZXJEYXRhOwotICAgIGdsQnVmZmVyU3ViRGF0YVR5cGUgYnVmZmVyU3ViRGF0
YTsKLSAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlIGNoZWNrRnJhbWVidWZmZXJTdGF0
dXM7Ci0gICAgZ2xDb21waWxlU2hhZGVyVHlwZSBjb21waWxlU2hhZGVyOwotICAgIGdsQ3JlYXRl
UHJvZ3JhbVR5cGUgY3JlYXRlUHJvZ3JhbTsKLSAgICBnbENyZWF0ZVNoYWRlclR5cGUgY3JlYXRl
U2hhZGVyOwotICAgIGdsRGVsZXRlQnVmZmVyc1R5cGUgZGVsZXRlQnVmZmVyczsKLSAgICBnbERl
bGV0ZUZyYW1lYnVmZmVyc1R5cGUgZGVsZXRlRnJhbWVidWZmZXJzOwotICAgIGdsRGVsZXRlUHJv
Z3JhbVR5cGUgZGVsZXRlUHJvZ3JhbTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlIGRl
bGV0ZVJlbmRlcmJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVTaGFkZXJUeXBlIGRlbGV0ZVNoYWRlcjsK
LSAgICBnbERldGFjaFNoYWRlclR5cGUgZGV0YWNoU2hhZGVyOwotICAgIGdsRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5VHlwZSBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheVR5cGUgZW5hYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5cGUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXI7Ci0gICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRFR5cGUgZnJhbWVidWZmZXJUZXh0dXJlMkQ7Ci0gICAgZ2xHZW5C
dWZmZXJzVHlwZSBnZW5CdWZmZXJzOwotICAgIGdsR2VuZXJhdGVNaXBtYXBUeXBlIGdlbmVyYXRl
TWlwbWFwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzVHlwZSBnZW5GcmFtZWJ1ZmZlcnM7Ci0gICAg
Z2xHZW5SZW5kZXJidWZmZXJzVHlwZSBnZW5SZW5kZXJidWZmZXJzOwotICAgIGdsR2V0QWN0aXZl
QXR0cmliVHlwZSBnZXRBY3RpdmVBdHRyaWI7Ci0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSBn
ZXRBY3RpdmVVbmlmb3JtOwotICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSBnZXRBdHRhY2hl
ZFNoYWRlcnM7Ci0gICAgZ2xHZXRBdHRyaWJMb2NhdGlvblR5cGUgZ2V0QXR0cmliTG9jYXRpb247
Ci0gICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0QnVmZmVyUGFyYW1ldGVyaXY7Ci0g
ICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUgZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUgZ2V0
UHJvZ3JhbUluZm9Mb2c7Ci0gICAgZ2xHZXRQcm9ncmFtaXZUeXBlIGdldFByb2dyYW1pdjsKLSAg
ICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdjsKLSAgICBnbEdldFNoYWRlckluZm9Mb2dUeXBlIGdldFNoYWRlckluZm9Mb2c7Ci0gICAg
Z2xHZXRTaGFkZXJpdlR5cGUgZ2V0U2hhZGVyaXY7Ci0gICAgZ2xHZXRTaGFkZXJTb3VyY2VUeXBl
IGdldFNoYWRlclNvdXJjZTsKLSAgICBnbEdldFVuaWZvcm1mdlR5cGUgZ2V0VW5pZm9ybWZ2Owot
ICAgIGdsR2V0VW5pZm9ybWl2VHlwZSBnZXRVbmlmb3JtaXY7Ci0gICAgZ2xHZXRVbmlmb3JtTG9j
YXRpb25UeXBlIGdldFVuaWZvcm1Mb2NhdGlvbjsKLSAgICBnbEdldFZlcnRleEF0dHJpYmZ2VHlw
ZSBnZXRWZXJ0ZXhBdHRyaWJmdjsKLSAgICBnbEdldFZlcnRleEF0dHJpYml2VHlwZSBnZXRWZXJ0
ZXhBdHRyaWJpdjsKLSAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2VHlwZSBnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydjsKLSAgICBnbElzQnVmZmVyVHlwZSBpc0J1ZmZlcjsKLSAgICBnbElzRnJh
bWVidWZmZXJUeXBlIGlzRnJhbWVidWZmZXI7Ci0gICAgZ2xJc1Byb2dyYW1UeXBlIGlzUHJvZ3Jh
bTsKLSAgICBnbElzUmVuZGVyYnVmZmVyVHlwZSBpc1JlbmRlcmJ1ZmZlcjsKLSAgICBnbElzU2hh
ZGVyVHlwZSBpc1NoYWRlcjsKLSAgICBnbExpbmtQcm9ncmFtVHlwZSBsaW5rUHJvZ3JhbTsKLSAg
ICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlIHJlbmRlcmJ1ZmZlclN0b3JhZ2U7Ci0gICAgZ2xT
YW1wbGVDb3ZlcmFnZVR5cGUgc2FtcGxlQ292ZXJhZ2U7Ci0gICAgZ2xTaGFkZXJTb3VyY2VUeXBl
IHNoYWRlclNvdXJjZTsKLSAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlIHN0ZW5jaWxGdW5j
U2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlVHlwZSBzdGVuY2lsTWFza1NlcGFy
YXRlOwotICAgIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlIHN0ZW5jaWxPcFNlcGFyYXRlOwotICAg
IGdsVW5pZm9ybTFmVHlwZSB1bmlmb3JtMWY7Ci0gICAgZ2xVbmlmb3JtMWZ2VHlwZSB1bmlmb3Jt
MWZ2OwotICAgIGdsVW5pZm9ybTFpVHlwZSB1bmlmb3JtMWk7Ci0gICAgZ2xVbmlmb3JtMWl2VHlw
ZSB1bmlmb3JtMWl2OwotICAgIGdsVW5pZm9ybTJmVHlwZSB1bmlmb3JtMmY7Ci0gICAgZ2xVbmlm
b3JtMmZ2VHlwZSB1bmlmb3JtMmZ2OwotICAgIGdsVW5pZm9ybTJpVHlwZSB1bmlmb3JtMmk7Ci0g
ICAgZ2xVbmlmb3JtMml2VHlwZSB1bmlmb3JtMml2OwotICAgIGdsVW5pZm9ybTNmVHlwZSB1bmlm
b3JtM2Y7Ci0gICAgZ2xVbmlmb3JtM2Z2VHlwZSB1bmlmb3JtM2Z2OwotICAgIGdsVW5pZm9ybTNp
VHlwZSB1bmlmb3JtM2k7Ci0gICAgZ2xVbmlmb3JtM2l2VHlwZSB1bmlmb3JtM2l2OwotICAgIGds
VW5pZm9ybTRmVHlwZSB1bmlmb3JtNGY7Ci0gICAgZ2xVbmlmb3JtNGZ2VHlwZSB1bmlmb3JtNGZ2
OwotICAgIGdsVW5pZm9ybTRpVHlwZSB1bmlmb3JtNGk7Ci0gICAgZ2xVbmlmb3JtNGl2VHlwZSB1
bmlmb3JtNGl2OwotICAgIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUgdW5pZm9ybU1hdHJpeDJmdjsK
LSAgICBnbFVuaWZvcm1NYXRyaXgzZnZUeXBlIHVuaWZvcm1NYXRyaXgzZnY7Ci0gICAgZ2xVbmlm
b3JtTWF0cml4NGZ2VHlwZSB1bmlmb3JtTWF0cml4NGZ2OwotICAgIGdsVXNlUHJvZ3JhbVR5cGUg
dXNlUHJvZ3JhbTsKLSAgICBnbFZhbGlkYXRlUHJvZ3JhbVR5cGUgdmFsaWRhdGVQcm9ncmFtOwot
ICAgIGdsVmVydGV4QXR0cmliMWZUeXBlIHZlcnRleEF0dHJpYjFmOwotICAgIGdsVmVydGV4QXR0
cmliMWZ2VHlwZSB2ZXJ0ZXhBdHRyaWIxZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUgdmVy
dGV4QXR0cmliMmY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlIHZlcnRleEF0dHJpYjJmdjsK
LSAgICBnbFZlcnRleEF0dHJpYjNmVHlwZSB2ZXJ0ZXhBdHRyaWIzZjsKLSAgICBnbFZlcnRleEF0
dHJpYjNmdlR5cGUgdmVydGV4QXR0cmliM2Z2OwotICAgIGdsVmVydGV4QXR0cmliNGZUeXBlIHZl
cnRleEF0dHJpYjRmOwotICAgIGdsVmVydGV4QXR0cmliNGZ2VHlwZSB2ZXJ0ZXhBdHRyaWI0ZnY7
Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyOwotCi0g
ICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyczsKLSAgICBIb3N0V2luZG93
KiBtX2hvc3RXaW5kb3c7Ci0gICAgUUdMV2lkZ2V0KiBtX2dsV2lkZ2V0OwotICAgIFFHTFdpZGdl
dCogbV92aWV3cG9ydEdMV2lkZ2V0OwotICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsKLSAgICBH
THVpbnQgbV90ZXh0dXJlOwotICAgIEdMdWludCBtX2NhbnZhc0ZibzsKLSAgICBHTHVpbnQgbV9j
dXJyZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAgIGJvb2wgbV9sYXllckNv
bXBvc2l0ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5bnRoZXRpY0Vycm9y
czsKLQotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOwotCi1wcml2YXRl
OgotCi0gICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKTsKLSAgICBi
b29sIG1fdmFsaWQ7Ci19OwotCi0jaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpIAotI2RlZmlu
ZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNlCi0jZGVmaW5lIEdFVF9QUk9DX0FE
RFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygj
UHJvYykpOwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlh
bnQoKSBjb25zdAogewogI2lmIGRlZmluZWQgKFFUX09QRU5HTF9FU18yKQpAQCAtMjkxLDE3ICs1
MiwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
ICNlbmRpZgogfQogCi1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQz
REludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93
KiBob3N0V2luZG93KQotICAgIDogbV9hdHRycyhhdHRycykKK0dyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93KQogICAgICwgbV9nbFdpZGdldCgwKQogICAgICwg
bV92aWV3cG9ydEdMV2lkZ2V0KDApCi0gICAgLCBtX3RleHR1cmUoMCkKLSAgICAsIG1fY2FudmFz
RmJvKDApCi0gICAgLCBtX2N1cnJlbnRGYm8oMCkKLSAgICAsIG1fZGVwdGhCdWZmZXIoMCkKLSAg
ICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQotICAgICwgbV92YWxpZCh0cnVlKQorICAgICwg
bV9wcm9jc0FyZVZhbGlkKHRydWUpCiB7CiAgICAgbV92aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmll
d3BvcnRHTFdpZGdldCgpOwogCkBAIC0zMTAsMTM5ICs2Niw4IEBAIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0CiAgICAgZWxzZQogICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldCgpOwog
Ci0gICAgaWYgKCFtX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJH
cmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAg
ICAgICAgbV92YWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
R2VvbWV0cnkgY2FuIGJlIHNldCB0byB6ZXJvIGJlY2F1c2UgbV9nbFdpZGdldCBpcyB1c2VkIG9u
bHkgZm9yIGl0cyBRR0xDb250ZXh0LgogICAgIG1fZ2xXaWRnZXQtPnNldEdlb21ldHJ5KDAsIDAs
IDAsIDApOwotCi0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICBtX2F0dHJzLnN0ZW5j
aWwgPSBmYWxzZTsKLSNlbHNlCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgbV9h
dHRycy5kZXB0aCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNl
OwotCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLQotICAgIGFjdGl2ZVRleHR1cmUg
PSBHRVRfUFJPQ19BRERSRVNTKGdsQWN0aXZlVGV4dHVyZSk7Ci0gICAgYXR0YWNoU2hhZGVyID0g
R0VUX1BST0NfQUREUkVTUyhnbEF0dGFjaFNoYWRlcik7Ci0gICAgYmluZEF0dHJpYkxvY2F0aW9u
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRBdHRyaWJMb2NhdGlvbik7Ci0gICAgYmluZEJ1ZmZl
ciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kQnVmZmVyKTsKLSAgICBiaW5kRnJhbWVidWZmZXIg
PSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEZyYW1lYnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVm
ZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRSZW5kZXJidWZmZXIpOwotICAgIGJsZW5kQ29s
b3IgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRDb2xvcik7Ci0gICAgYmxlbmRFcXVhdGlvbiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uKTsKLSAgICBibGVuZEVxdWF0aW9uU2Vw
YXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKTsKLSAgICBi
bGVuZEZ1bmNTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEZ1bmNTZXBhcmF0ZSk7
Ci0gICAgYnVmZmVyRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJEYXRhKTsKLSAgICBi
dWZmZXJTdWJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlclN1YkRhdGEpOwotICAgIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyk7Ci0gICAgY29tcGlsZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDb21waWxl
U2hhZGVyKTsKLSAgICBjcmVhdGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVBy
b2dyYW0pOwotICAgIGNyZWF0ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVTaGFk
ZXIpOwotICAgIGRlbGV0ZUJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlQnVmZmVy
cyk7Ci0gICAgZGVsZXRlRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUZy
YW1lYnVmZmVycyk7Ci0gICAgZGVsZXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxl
dGVQcm9ncmFtKTsKLSAgICBkZWxldGVSZW5kZXJidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhn
bERlbGV0ZVJlbmRlcmJ1ZmZlcnMpOwotICAgIGRlbGV0ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xEZWxldGVTaGFkZXIpOwotICAgIGRldGFjaFNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xEZXRhY2hTaGFkZXIpOwotICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGVuYWJsZVZlcnRleEF0
dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVTUyhnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KTsK
LSAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcik7Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJlMkQgPSBHRVRfUFJPQ19B
RERSRVNTKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQpOwotICAgIGdlbkJ1ZmZlcnMgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2VuQnVmZmVycyk7Ci0gICAgZ2VuZXJhdGVNaXBtYXAgPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2VuZXJhdGVNaXBtYXApOwotICAgIGdlbkZyYW1lYnVmZmVycyA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZW5GcmFtZWJ1ZmZlcnMpOwotICAgIGdlblJlbmRlcmJ1ZmZlcnMgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2VuUmVuZGVyYnVmZmVycyk7Ci0gICAgZ2V0QWN0aXZlQXR0cmliID0g
R0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZUF0dHJpYik7Ci0gICAgZ2V0QWN0aXZlVW5pZm9y
bSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVVbmlmb3JtKTsKLSAgICBnZXRBdHRhY2hl
ZFNoYWRlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0YWNoZWRTaGFkZXJzKTsKLSAgICBn
ZXRBdHRyaWJMb2NhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRyaWJMb2NhdGlvbik7
Ci0gICAgZ2V0QnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYpOwotICAgIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2ID0g
R0VUX1BST0NfQUREUkVTUyhnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTsK
LSAgICBnZXRQcm9ncmFtSW5mb0xvZyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtSW5m
b0xvZyk7Ci0gICAgZ2V0UHJvZ3JhbWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1p
dik7Ci0gICAgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGds
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOwotICAgIGdldFNoYWRlckluZm9Mb2cgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0U2hhZGVySW5mb0xvZyk7Ci0gICAgZ2V0U2hhZGVyaXYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyaXYpOwotICAgIGdldFNoYWRlclNvdXJjZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJTb3VyY2UpOwotICAgIGdldFVuaWZvcm1mdiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtZnYpOwotICAgIGdldFVuaWZvcm1pdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZXRVbmlmb3JtaXYpOwotICAgIGdldFVuaWZvcm1Mb2NhdGlvbiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtTG9jYXRpb24pOwotICAgIGdldFZlcnRleEF0dHJpYmZ2
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYmZ2KTsKLSAgICBnZXRWZXJ0ZXhB
dHRyaWJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJpdik7Ci0gICAgZ2V0
VmVydGV4QXR0cmliUG9pbnRlcnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmli
UG9pbnRlcnYpOwotICAgIGlzQnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzQnVmZmVyKTsK
LSAgICBpc0ZyYW1lYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzRnJhbWVidWZmZXIpOwot
ICAgIGlzUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1Byb2dyYW0pOwotICAgIGlzUmVu
ZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzUmVuZGVyYnVmZmVyKTsKLSAgICBpc1No
YWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1NoYWRlcik7Ci0gICAgbGlua1Byb2dyYW0gPSBH
RVRfUFJPQ19BRERSRVNTKGdsTGlua1Byb2dyYW0pOwotICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2Ug
PSBHRVRfUFJPQ19BRERSRVNTKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSk7Ci0gICAgc2FtcGxlQ292
ZXJhZ2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsU2FtcGxlQ292ZXJhZ2UpOwotICAgIHNoYWRlclNv
dXJjZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTaGFkZXJTb3VyY2UpOwotICAgIHN0ZW5jaWxGdW5j
U2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSk7Ci0gICAg
c3RlbmNpbE1hc2tTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsTWFza1NlcGFy
YXRlKTsKLSAgICBzdGVuY2lsT3BTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2ls
T3BTZXBhcmF0ZSk7Ci0gICAgdW5pZm9ybTFmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0x
Zik7Ci0gICAgdW5pZm9ybTFmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWZ2KTsKLSAg
ICB1bmlmb3JtMWkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpKTsKLSAgICB1bmlmb3Jt
MWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaXYpOwotICAgIHVuaWZvcm0yZiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmYpOwotICAgIHVuaWZvcm0yZnYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVW5pZm9ybTJmdik7Ci0gICAgdW5pZm9ybTJpID0gR0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm0yaSk7Ci0gICAgdW5pZm9ybTJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
Mml2KTsKLSAgICB1bmlmb3JtM2YgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmKTsKLSAg
ICB1bmlmb3JtM2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZnYpOwotICAgIHVuaWZv
cm0zaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2kpOwotICAgIHVuaWZvcm0zaXYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpdik7Ci0gICAgdW5pZm9ybTRmID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm00Zik7Ci0gICAgdW5pZm9ybTRmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtNGZ2KTsKLSAgICB1bmlmb3JtNGkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTRpKTsKLSAgICB1bmlmb3JtNGl2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aXYpOwot
ICAgIHVuaWZvcm1NYXRyaXgyZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDJm
dik7Ci0gICAgdW5pZm9ybU1hdHJpeDNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0
cml4M2Z2KTsKLSAgICB1bmlmb3JtTWF0cml4NGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm1NYXRyaXg0ZnYpOwotICAgIHVzZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVXNlUHJv
Z3JhbSk7Ci0gICAgdmFsaWRhdGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFZhbGlkYXRl
UHJvZ3JhbSk7Ci0gICAgdmVydGV4QXR0cmliMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliMWYpOwotICAgIHZlcnRleEF0dHJpYjFmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0
ZXhBdHRyaWIxZnYpOwotICAgIHZlcnRleEF0dHJpYjJmID0gR0VUX1BST0NfQUREUkVTUyhnbFZl
cnRleEF0dHJpYjJmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VmVydGV4QXR0cmliMmZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xWZXJ0ZXhBdHRyaWIzZik7Ci0gICAgdmVydGV4QXR0cmliM2Z2ID0gR0VUX1BST0NfQUREUkVT
UyhnbFZlcnRleEF0dHJpYjNmdik7Ci0gICAgdmVydGV4QXR0cmliNGYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsVmVydGV4QXR0cmliNGYpOwotICAgIHZlcnRleEF0dHJpYjRmdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0ZnYpOwotICAgIHZlcnRleEF0dHJpYlBvaW50ZXIgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliUG9pbnRlcik7Ci0KLSAgICBpZiAoIW1fdmFsaWQp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQWxsIG5lZWRlZCBPcGVu
R0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2YWlsYWJsZSIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgotICAgIGdlbkZy
YW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9jYW52YXNGYm8pOwotCi0gICAgZ2xHZW5UZXh0
dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBtX3RleHR1cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAg
Z2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBp
ZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgZ2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAx
LCAmbV9kZXB0aEJ1ZmZlcik7Ci0KLSAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0
aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgotICAgIG1fY3VycmVudEZibyA9IG1fY2FudmFzRmJv
OwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y2FudmFzRmJvKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIAog
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQpA
QCAtNDY5LDYzICs5NCw2IEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVp
bnQzMiBwaXhlbCkKICAgICByZXR1cm4gKChwaXhlbCA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBp
eGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17
Ci0gICAgaWYgKHdpZHRoID09IG1fYm91bmRpbmdSZWN0LndpZHRoKCkgJiYgaGVpZ2h0ID09IG1f
Ym91bmRpbmdSZWN0LmhlaWdodCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2JvdW5kaW5n
UmVjdCA9IFFSZWN0RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYod2lkdGgsIGhlaWdodCkpOwotCi0g
ICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLQotICAgIC8vIENyZWF0ZSBjb2xvciBidWZm
ZXIKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3Rl
eHR1cmUpOwotICAgIGlmIChtX2F0dHJzLmFscGhhKQotICAgICAgICBnbFRleEltYWdlMkQoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDAp
OwotICAgIGVsc2UKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCB3aWR0aCwgaGVp
Z2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBpZiAobV9hdHRycy5kZXB0
aCkgewotICAgICAgICAvLyBDcmVhdGUgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4KLSAgICAg
ICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2Rl
cHRoQnVmZmVyKTsKLSNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgICAgICByZW5kZXJi
dWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Ci0jZWxzZQotICAgICAg
ICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShH
cmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCB3aWR0
aCwgaGVpZ2h0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFn
ZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0KTsKLSNlbmRpZgotICAgICAgICBiaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwotICAgIH0KLQotICAg
IC8vIENvbnN0cnVjdCBjYW52YXMgRkJPLgotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVy
ZSwgMCk7Ci0gICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVw
dGhCdWZmZXIpOwotI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0jZW5kaWYK
LQotICAgIEdMZW51bSBzdGF0dXMgPSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUik7Ci0gICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0Nv
bnRleHQzRDogQ2FudmFzIEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpbnQgY2xlYXJGbGFncyA9IEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9CVUZGRVJfQklUOwotICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBjbGVhckZs
YWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOwotICAgIGlmIChtX2F0
dHJzLnN0ZW5jaWwpCi0gICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQlVGRkVSX0JJVDsKLQotICAgIGdsQ2xlYXIoY2xlYXJGbGFncyk7Ci0gICAgZ2xGbHVz
aCgpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVy
KiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qIG9wdGlvbiwgUVdpZGdl
dCogd2lkZ2V0KQogewogICAgIFFfVU5VU0VEKHdpZGdldCk7CkBAIC01MzYsNyArMTA0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICAvLyB3aXRoIGJyb3dzZXJzIE9wZW5HTCBjb250
ZXh0LgogICAgIFFHTFdpZGdldCogdmlld3BvcnRHTFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRn
ZXQoKTsKICAgICBpZiAodmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IG1f
dmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IHBhaW50ZXItPmRldmljZSgp
KSB7Ci0gICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fdGV4dHVy
ZSk7CisgICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fY29udGV4
dC0+bV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU0
NSwxMCArMTEzLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBh
aW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgcXVpbnQzMiogaW1h
Z2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRz
KCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisjaWYgZGVm
aW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOworI2Vsc2UKKyAgICBtX2NvbnRl
eHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9j
b250ZXh0LT5tX2Zibyk7CisjZW5kaWYKICAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5
ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7Ci0KLSAg
ICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJl
bnRGYm8pOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGYm8p
OworI2Vsc2UKKyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKKyNlbmRpZgogCiAgICAg
Ly8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBh
dCB0aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9QTSwgd2l0
aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTU3OCw3ICsxNTMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBR
U3R5bGVPcHRpb25HcmFwaAogCiBRUmVjdEYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Ym91
bmRpbmdSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9ib3VuZGluZ1JlY3Q7CisgICAgcmV0
dXJuIFFSZWN0RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0
aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpKTsKIH0KIAogdm9pZCogR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQpAQCAtNTg4
LDEzICsxNjMsMTMgQEAgdm9pZCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0Fk
ZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsr
KSB7CiAgICAgICAgIFN0cmluZyBuYW1lV2l0aEV4dCA9IHByb2MgKyBleHRbaV07CiAKLSAgICAg
ICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+Z2V0UHJvY0FkZHJlc3MobmFt
ZVdpdGhFeHQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHZvaWQqIGFkZHIgPSBtX2dsV2lkZ2V0
LT5jb250ZXh0KCktPmdldFByb2NBZGRyZXNzKFFTdHJpbmc6OmZyb21Bc2NpaShuYW1lV2l0aEV4
dC51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIGlmIChhZGRyKSAKICAgICAgICAgICAgIHJldHVy
biBhZGRyOwogICAgIH0KIAogICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IERpZCBu
b3QgZmluZCBHTCBmdW5jdGlvbiAlcyIsIHByb2MudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV92YWxp
ZCA9IGZhbHNlOworICAgIG1fcHJvY3NBcmVWYWxpZCA9IGZhbHNlOwogICAgIHJldHVybiAwOwog
fQogCkBAIC02MDgsMTAgKzE4Myw2OCBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaQogfQogCiBH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wpCi0gICAgOiBtX2lu
dGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKGF0dHJzLCBob3N0V2luZG93KSkK
KyAgICA6IG1fY3VycmVudFdpZHRoKDApCisgICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKKyAgICAs
IG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX3RleHR1cmUoMCkKKyAgICAsIG1fY29tcG9zaXRvclRl
eHR1cmUoMCkKKyAgICAsIG1fZmJvKDApCisgICAgLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQor
ICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCisgICAgLCBtX2ludGVybmFsQ29sb3JGb3Jt
YXQoMCkKKyAgICAsIG1fYm91bmRGQk8oMCkKKyAgICAsIG1fYWN0aXZlVGV4dHVyZSgwKQorICAg
ICwgbV9ib3VuZFRleHR1cmUwKDApCisgICAgLCBtX211bHRpc2FtcGxlRkJPKDApCisgICAgLCBt
X211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCisgICAgLCBtX211bHRpc2FtcGxlQ29s
b3JCdWZmZXIoMCkKKyAgICAsIG1faW50ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwodGhpcywgaG9zdFdpbmRvdykpCiB7Ci0gICAgaWYgKCFtX2ludGVybmFsLT5pc1ZhbGlkKCkp
CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxz
ZTsKKyNlbHNlCisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgbV9hdHRycy5kZXB0
aCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworCisgICAg
aWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgTE9HX0VS
Uk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4i
KTsKKyAgICAgICAgbV9pbnRlcm5hbCA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNk
ZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBQcm9jID0gcmVpbnRlcnBy
ZXRfY2FzdDxHcmFwaGljc0NvbnRleHQzRDo6UHJvYyMjVHlwZT4obV9pbnRlcm5hbC0+Z2V0UHJv
Y0FkZHJlc3MoI1Byb2MpKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNERVMyUHJvY3MuaCIKKyNlbmRpZgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNEUHJvY3MuaCIKKyN1bmRlZiBHTF9QUk9DCisKKyAgICBpZiAoIW1faW50ZXJuYWwt
Pm1fcHJvY3NBcmVWYWxpZCkgeworICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBBbGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7CiAgICAg
ICAgIG1faW50ZXJuYWwgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3Jl
YXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgorICAgIGdsR2VuRnJhbWVidWZmZXJzKC8q
IGNvdW50ICovIDEsICZtX2Zibyk7CisKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX2NvbXBvc2l0
b3JUZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlO
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAg
IGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCisgICAg
aWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAq
LyAxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworCisgICAgLy8gQmluZCBjYW52YXMgRkJPIGFu
ZCBzZXQgaW5pdGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KKyAgICBtX2JvdW5kRkJPID0gbV9m
Ym87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2Zibyk7CisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQpAQCAtNjI1LDcgKzI1OCw3IEBA
IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QoKQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpw
bGF0Zm9ybVRleHR1cmUoKSBjb25zdAogewotICAgIHJldHVybiBtX2ludGVybmFsLT5tX3RleHR1
cmU7CisgICAgcmV0dXJuIG1fY29tcG9zaXRvclRleHR1cmU7CiB9CiAKIFBsYXRmb3JtTGF5ZXIq
IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKQEAgLTY1NiwxMyArMjg5
LDYwIEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNo
YXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBpZiAod2lkdGggPT0gbV9jdXJyZW50
V2lkdGggJiYgaGVpZ2h0ID09IG1fY3VycmVudEhlaWdodCB8fCAoIW1faW50ZXJuYWwpKQorICAg
IGlmICgod2lkdGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0ID09IG1fY3VycmVudEhlaWdo
dCkgfHwgKCFtX2ludGVybmFsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jdXJyZW50V2lk
dGggPSB3aWR0aDsKICAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBtX2ludGVy
bmFsLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOworICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CisKKyAgICAvLyBDcmVhdGUgY29sb3IgYnVmZmVyCisgICAgZ2xCaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVy
ZSk7CisgICAgaWYgKG1fYXR0cnMuYWxwaGEpCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7Cisg
ICAgZWxzZQorICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQs
IC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKKworICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7
CisgICAgICAgIC8vIENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgorICAgICAgICBn
bEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0
aFN0ZW5jaWxCdWZmZXIpOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgICAgIGds
UmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworI2Vsc2UK
KyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5D
SUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOworI2VuZGlmCisgICAgICAg
IGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsK
KyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV9jb21wb3NpdG9yVGV4dHVyZSwgMCk7CisgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAg
ICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2lmICFkZWZpbmVkKFFU
X09QRU5HTF9FU18yKQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjZW5kaWYKKworICAgIEdMZW51bSBzdGF0
dXMgPSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSKTsKKyAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkgeworICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMg
RkJPIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGludCBjbGVhckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7
CisgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAg
ICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklU
OworCisgICAgZ2xDbGVhcihjbGVhckZsYWdzKTsKKyAgICBnbEZsdXNoKCk7CiB9CiAKIEludFNp
emUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkKQEAgLTY3
Myw3ICszNTMsNyBAQCBJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0Rl
bnVtIHRleHR1cmUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIGdsQWN0aXZl
VGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBA
IC02ODEsNyArMzYxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9n
cmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVj
dCogc2hhZGVycykKQEAgLTY5MiwzMyArMzcyLDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBt
CiAgICAgfQogCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBnZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsK
KyAgICBnbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRl
cnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVm
ZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVy
KHRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1l
YnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5t
X2N1cnJlbnRGYm8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX2NhbnZhc0ZibzsK
LSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1
cnJlbnRGYm8pOworICAgIG1fYm91bmRGQk8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ZibzsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1fYm91bmRGQk8pOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVu
ZGVyYnVmZmVyKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJn
ZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTczMCwxOSArNDEwLDE5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcihHQzNE
Y2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBm
IGFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAg
Z2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVh
dGlvbihtb2RlKTsKKyAgICBnbEJsZW5kRXF1YXRpb24obW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNE
ZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9k
ZUFscGhhKTsKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3Rv
ciwgR0MzRGVudW0gZGZhY3RvcikKQEAgLTc1NCwzMSArNDM0LDMxIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdC
LCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBk
c3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZm
ZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJE
YXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZmZXJEYXRhKHRh
cmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUs
IGRhdGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0
YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNp
emUsIGRhdGEpOworICAgIGdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0
YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKEdDM0RjbGFtcGYgciwgR0Mz
RGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkKQEAgLTgxOSw3ICs0OTksNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Y29tcGlsZVNoYWRlcihzaGFkZXIp
OworICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKQEAgLTg2Nyw3ICs1NDcsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIEFTU0VSVChz
aGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgZ2xEZXRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlz
YWJsZShHQzNEZW51bSBjYXApCkBAIC04NzksNyArNTU5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2Rl
LCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCkBAIC05MDMsNyArNTgzLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmaW5pc2goKQpAQCAt
OTIxLDEzICs2MDEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRm
b3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0
LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
YnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJn
ZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBs
ZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRl
eHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpm
cm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTkzOSw3ICs2MTksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdlbmVyYXRlTWlwbWFw
KHRhcmdldCk7CisgICAgZ2xHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOwogfQogCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKQEAgLTk1MiwxNCArNjMyLDE0IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0R1aW50IGluZGV4CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01B
WF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBo
aWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwog
CiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RNYWxsb2MobWF4TGVuZ3RoKTsKICAg
ICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51
bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBp
bmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBn
bEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwg
JnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFtZUxlbmd0aCkgewogICAgICAgICBm
YXN0RnJlZShuYW1lKTsKQEAgLTk4NCwxNCArNjY0LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBp
bmRlCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdM
aW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHN0YXRpY19j
YXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9N
QVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxH
THVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1h
bGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQg
c2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0
aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRleCwgbWF4TGVuZ3Ro
LCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZVVuaWZv
cm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVM
ZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAg
ICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC0xMDEyLDIwICs2OTIsMjAgQEAgaW50IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldEF0dHJp
YkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdsR2V0
QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRy
aWJ1dGVzKCkKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9hdHRyczsKKyAgICByZXR1cm4g
bV9hdHRyczsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKIHsK
LSAgICBpZiAobV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkgewotICAg
ICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0ZXIgPSBtX2ludGVybmFsLT5t
X3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOworICAgIGlmIChtX3N5bnRoZXRpY0Vycm9ycy5zaXpl
KCkgPiAwKSB7CisgICAgICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9
IG1fc3ludGhldGljRXJyb3JzLmJlZ2luKCk7CiAgICAgICAgIEdDM0RlbnVtIGVyciA9ICppdGVy
OwotICAgICAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRlcik7Cisg
ICAgICAgIG1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKICAgICAgICAgcmV0dXJuIGVy
cjsKICAgICB9CiAKQEAgLTEwNTEsNyArNzMxLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogICAgICAgICByZXR1cm4g
R0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNCdWZmZXIoYnVmZmVyKTsKKyAgICByZXR1cm4g
Z2xJc0J1ZmZlcihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6
aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKQEAgLTEwNjYsNyArNzQ2LDcgQEAgR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzRnJhbWVi
dWZmZXIoZnJhbWVidWZmZXIpOworICAgIHJldHVybiBnbElzRnJhbWVidWZmZXIoZnJhbWVidWZm
ZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTEwNzUsNyArNzU1LDcgQEAgR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAg
ICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1Byb2dyYW0ocHJvZ3JhbSk7
CisgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQogCiBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZm
ZXIpCkBAIC0xMDg0LDcgKzc2NCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZl
cik7CisgICAgcmV0dXJuIGdsSXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKIH0KIAogR0Mz
RGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQpAQCAtMTA5Myw3ICs3NzMsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6
aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxT
RTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IHJldHVybiBtX2ludGVybmFsLT5pc1NoYWRlcihzaGFkZXIpOworICAgIHJldHVybiBnbElzU2hh
ZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1
cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtMTExNSw3ICs3OTUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xM
aW5rUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxT
dG9yZWkoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQpAQCAtMTE2NiwxMyArODQ2
LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAgICAgICAgIGJyZWFrOwogICAgIH0KICNl
bmRpZgotICAgIG1faW50ZXJuYWwtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5h
bGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdl
dCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVhbiBpbnZl
cnQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5zYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKKyAgICBnbFNhbXBsZUNv
dmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzY2lz
c29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQpCkBAIC0xMTk4LDcgKzg3OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNoYWRlclNv
dXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgY29uc3QgU3RyaW5nJiBzb3VyCiAgICAgQ1N0
cmluZyBzb3VyY2VDUyA9IHByZWZpeGVkU291cmNlLnV0ZjgoKTsKICAgICBjb25zdCBjaGFyKiBk
YXRhID0gc291cmNlQ1MuZGF0YSgpOwogICAgIGludCBsZW5ndGggPSBwcmVmaXhlZFNvdXJjZS5s
ZW5ndGgoKTsKLSAgICBtX2ludGVybmFsLT5zaGFkZXJTb3VyY2UoKEdMdWludCkgc2hhZGVyLCAv
KiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CisgICAgZ2xTaGFkZXJTb3VyY2UoKEdMdWlu
dCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBH
QzNEdWludCBtYXNrKQpAQCAtMTIxMCw3ICs4OTAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVu
Y2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVu
Y1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCkBAIC0xMjIyLDcgKzkwMiw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1
aW50IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5zdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOworICAgIGds
U3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6
cGFzcykKQEAgLTEyMzQsNyArOTE0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0Rl
bnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxP
cFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgZ2xTdGVuY2lsT3BTZXBh
cmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEZmxvYXQgdmFsdWUpCkBAIC0xMjUyLDExNSArOTMyLDExNSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgIGds
VW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlm
b3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2
MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yZihs
b2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNE
ZmxvYXQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT51bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGds
VW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0Mz
RGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00Zihs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwg
djEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0x
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpKGxvY2F0aW9u
LCB2MCk7CisgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwg
R0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CisgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBH
QzNEaW50IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5p
Zm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZv
cm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdD
M0RpbnQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT51bmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGds
VW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNp
emVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT51bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAg
Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50
IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYz
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGl2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwg
dHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1N
YXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxv
YXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRp
b24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihsb2Nh
dGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNw
b3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAt
MTM2OCw3ICsxMDQ4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dXNl
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0pCkBAIC0xMzc2LDYxICsxMDU2LDYxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlk
YXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0p
OwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsVmFsaWRhdGVQcm9n
cmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIx
ZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWYoaW5k
ZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVy
dGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2
MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOworICAgIGdsVmVydGV4QXR0
cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRl
eEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAgIGdsVmVydGV4QXR0cmli
M2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0
ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjNmdihpbmRleCwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0Mz
RGZsb2F0IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsK
KyAgICBnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGds
VmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0Mz
RGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0Mz
RGludHB0ciBvZmZzZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0
eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTQ0OCw3ICsxMTI4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiogdmFs
dWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRC
dWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0QnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2
YWx1ZSkKQEAgLTE0NjAsNyArMTE0MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCog
dmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQs
IGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1O
YW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE0NzIsNyArMTE1Miw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJv
Z3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0UHJvZ3JhbWl2KHBy
b2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTE0ODAsNyAr
MTE2MCw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVu
Z3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5G
T19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAKQEAgLTE0
ODgsNyArMTE2OCw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9M
b2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0
dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVu
Z3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5n
dGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZy
ZWUoaW5mbyk7CkBAIC0xNDk5LDE0ICsxMTc5LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBH
QzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIEFTU0VSVChzaGFkZXIp
OwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFNo
YWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTE1
MTQsMTQgKzExOTQsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZv
TG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwt
PmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwg
Jmxlbmd0aCk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJ
TkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBH
TGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5m
bykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVySW5mb0xv
ZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhz
aGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsK
ICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE1MzQsMTQgKzEyMTQsMTQgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxl
bmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0Nv
bnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVy
aXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5n
dGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFy
KikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIi
OwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6
ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgsICZzaXplLCBp
bmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBA
IC0xNTY0LDEzICsxMjQ0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFt
ZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
aW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWZ2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdl
dFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBHQzNEaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNTc4LDE5ICsxMjU4LDE5IEBAIEdDM0RpbnQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIGNvbnN0IFN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBn
bEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRleCwg
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0
cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliZnYo
aW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZh
bHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsK
IH0KIAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKQEAgLTE1OTgsNyArMTI3OCw3
IEBAIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKICAgICAKICAgICBHTHZvaWQqIHBvaW50ZXIgPSAwOwotICAgIG1faW50
ZXJuYWwtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVy
KTsKKyAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2lu
dGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihyZWludGVycHJldF9j
YXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTE2MTksNyArMTI5OSw3IEBAIFBsYXRm
b3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0g
MDsKLSAgICBtX2ludGVybmFsLT5nZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwor
ICAgIGdsR2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFu
ZGxlOwogfQogCkBAIC0xNjI3LDI4ICsxMzA3LDI4IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50
ZXJuYWwtPmdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdl
bkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxl
OwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFt
KCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJl
dHVybiBtX2ludGVybmFsLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0dXJuIGdsQ3JlYXRlUHJv
Z3JhbSgpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVS
ZW5kZXJidWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuUmVuZGVyYnVm
ZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyog
Y291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4g
bV9pbnRlcm5hbC0+Y3JlYXRlU2hhZGVyKHR5cGUpOworICAgIHJldHVybiBnbENyZWF0ZVNoYWRl
cih0eXBlKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
VGV4dHVyZSgpCkBAIC0xNjYyLDMxICsxMzQyLDMxIEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlQnVmZmVycygx
LCAmYnVmZmVyKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJh
bWVidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5kZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAg
ICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0p
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZv
cm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZy
ZW5kZXJidWZmZXIpOworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVy
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xEZWxldGVT
aGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVy
ZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC0xNjk3LDMwICsxMzc3LDMwIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBl
cnJvcikKIHsKLSAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOwor
ICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewotICAgIG1faW50ZXJuYWwtPm1fbGF5ZXJD
b21wb3NpdGVkID0gdHJ1ZTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAgICAgLy8gRklY
TUU6IEFueSBhY2NlbGVyYXRlZCBjb21wb3NpdG9yIG5lZWRzIHRvIGJlIHRvbGQgdG8gcmUtcmVh
ZCBmcm9tIGhlcmUuCi0gICAgbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsK
KyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ludGVybmFsLT5t
X2xheWVyQ29tcG9zaXRlZDsKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKIEV4
dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewotICAgIGlm
ICghbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zKQotICAgICAgICBtX2ludGVybmFsLT5tX2V4dGVu
c2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNEUXQpOwotICAgIHJldHVybiBtX2ludGVy
bmFsLT5tX2V4dGVuc2lvbnMuZ2V0KCk7CisgICAgaWYgKCFtX2V4dGVuc2lvbnMpCisgICAgICAg
IG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7CisgICAgcmV0dXJu
IG1fZXh0ZW5zaW9ucy5nZXQoKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1h
Z2VEYXRhKEltYWdlKiBpbWFnZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87475</attachid>
            <date>2011-03-30 00:22:29 -0700</date>
            <delta_ts>2011-03-30 03:46:25 -0700</delta_ts>
            <desc>some more cleanup</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>79703</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZWU0NWZlLi44ODIxYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIz
IEBACisyMDExLTAzLTMwICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTU0CisKKyAgICAgICAgTW9k
aWZpZWQgT3BlbkdMIHN5bWJvbCByZXNvbHZlciB0byBiZSB0cmFuc3BhcmVudCBhbmQgZWFzaWVy
IHRvCisgICAgICAgIG1haW50YWluLgorCisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREludGVybmFsUXQuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6Ym91bmRpbmdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6cGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjph
dHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0
dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJh
bWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5k
ZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29s
b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBh
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2Vw
YXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
NGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9n
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hh
ZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcklu
Zm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKwogMjAx
MS0wMy0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgyMDk5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0
MjUxZDczLi5kMjFjZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzQxNCw3ICszNDE0LDggQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIu
aCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaCBcCisgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCiAKICAgICAhdjgg
ewogICAgICAgICBTT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDM1MWI0NDUuLjhhYzYzZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBDQUxheWVyOwogY2xhc3MgV2ViR0xMYXll
cjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbFF0LmgiCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFQYWludGVyOwogY2xh
c3MgUVJlY3Q7CkBAIC04NzEsOSArODcyLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRSZW5k
ZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIqIHBpeGVscywgaW50IHBpeGVsc1NpemUpOwogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShRVCkKKyNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyNk
ZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBcCisgICAgdHlwZWRlZiBS
ZXR1cm5WYWx1ZSAoQVBJRU5UUlkqIFByb2MjI1R5cGUpIFBhcmFtczsgXAorICAgIFByb2MjI1R5
cGUgUHJvYzsKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByb2NzLmgiCisjdW5kZWYgR0xf
UFJPQworI2VuZGlmCisgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRFF0OworICAgIE93blB0
cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOworICAgIGludCBtX3Byb2NzQXJlVmFsaWQ7
CisjZW5kaWYKKwogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0OwogCi0j
aWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCiAgICAg
dHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBTdHJpbmcgc291cmNlOwogICAgICAgICBTdHJpbmcg
bG9nOwpAQCAtODgxLDE2ICs4OTUsMjAgQEAgcHVibGljOgogICAgIH0gU2hhZGVyU291cmNlRW50
cnk7CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9z
aGFkZXJTb3VyY2VNYXA7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgZnJpZW5kIGNsYXNzIEV4
dGVuc2lvbnMzRE9wZW5HTDsKICAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogCiAg
ICAgT3duUHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gbV9leHRlbnNpb25zOworI2VuZGlmCiAKICAg
ICBBdHRyaWJ1dGVzIG1fYXR0cnM7CiAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRl
eEFycmF5OwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIENHTENvbnRleHRPYmogbV9jb250ZXh0
T2JqOwogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisjZW5kaWYKICAg
ICBHQzNEdWludCBtX3RleHR1cmUsIG1fY29tcG9zaXRvclRleHR1cmU7CiAgICAgR0MzRHVpbnQg
bV9mYm87CiAgICAgR0MzRHVpbnQgbV9kZXB0aFN0ZW5jaWxCdWZmZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzREludGVy
bmFsUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWxRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUx
YzViOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzREludGVybmFsUXQuaApAQCAtMCwwICsxLDcwIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMCBUaWV0byBDb3Jwb3JhdGlvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgICAgIAorICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICAgICAKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQorKi8KKworI2lmbmRlZiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
UXRfaAorI2RlZmluZSBHcmFwaGljc0NvbnRleHQzREludGVybmFsUXRfaAorCisjaW5jbHVkZSA8
UUdMQ29udGV4dD4KKyNpbmNsdWRlIDxRR3JhcGhpY3NPYmplY3Q+CisKKyNpZiAhZGVmaW5lZChH
TGNoYXIpCit0eXBlZGVmIGNoYXIgR0xjaGFyOworI2VuZGlmCisKKyNpZiAhZGVmaW5lZChHTF9E
RVBUSDI0X1NURU5DSUw4KQorI2RlZmluZSBHTF9ERVBUSDI0X1NURU5DSUw4IDB4ODhGMAorI2Vu
ZGlmCisKKyNpZiAhZGVmaW5lZChBUElFTlRSWSkKKyNkZWZpbmUgQVBJRU5UUlkKKyNlbmRpZgor
CisjaWZkZWYgUVRfT1BFTkdMX0VTXzIKK3R5cGVkZWYgR0xzaXplaXB0ciBHTHNpemVpcHRyVHlw
ZTsKK3R5cGVkZWYgR0xpbnRwdHIgR0xpbnRwdHJUeXBlOworI2Vsc2UKK3R5cGVkZWYgcHRyZGlm
Zl90IEdMc2l6ZWlwdHJUeXBlOwordHlwZWRlZiBwdHJkaWZmX3QgR0xpbnRwdHJUeXBlOworI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CitjbGFz
cyBHcmFwaGljc0NvbnRleHQzRDsKK2NsYXNzIEhvc3RXaW5kb3c7CisKK2NsYXNzIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwgOiBwdWJsaWMgUUdyYXBoaWNzT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEKiwgSG9zdFdpbmRv
dyopOworICAgIH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CisKKyAgICBRR0xXaWRnZXQq
IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKKyAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3Qg
UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOworICAgIFFSZWN0RiBib3VuZGlu
Z1JlY3QoKSBjb25zdDsKKworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAg
SG9zdFdpbmRvdyogbV9ob3N0V2luZG93OworICAgIFFHTFdpZGdldCogbV9nbFdpZGdldDsKKyAg
ICBRR0xXaWRnZXQqIG1fdmlld3BvcnRHTFdpZGdldDsKKworICAgIHZvaWQqIGdldFByb2NBZGRy
ZXNzKGNvbnN0IFN0cmluZyYgcHJvYyk7Cit9OworCit9CisKKyNlbmRpZiAvLyBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsUXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjA0MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFByb2NzLmgKQEAg
LTAsMCArMSw5MCBAQAorR0xfUFJPQyh2b2lkLCBnbEFjdGl2ZVRleHR1cmUsIChHTGVudW0pKQor
R0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRlciwgKEdMdWludCwgR0x1aW50KSkKK0dMX1BST0Mo
dm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChHTHVpbnQsIEdMdWludCwgY29uc3QgY2hhciop
KQorR0xfUFJPQyh2b2lkLCBnbEJpbmRCdWZmZXIsIChHTGVudW0sIEdMdWludCkpCitHTF9QUk9D
KHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyLCAoR0xlbnVtLCBHTHVpbnQpKQorR0xfUFJPQyh2b2lk
LCBnbEJpbmRSZW5kZXJidWZmZXIsIChHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGds
QmxlbmRDb2xvciwgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmKSkKK0dM
X1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAoR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xC
bGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHTGVudW0sIEdMZW51bSkpCitHTF9QUk9DKHZvaWQsIGds
QmxlbmRGdW5jU2VwYXJhdGUsIChHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0g
c3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkpCitHTF9QUk9DKHZvaWQsIGdsQnVmZmVyRGF0YSwg
KEdMZW51bSwgR0xzaXplaXB0ciwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKSkKK0dMX1BST0Modm9p
ZCwgZ2xCdWZmZXJTdWJEYXRhLCAoR0xlbnVtLCBHTGludHB0ciwgR0xzaXplaXB0ciwgY29uc3Qg
R0x2b2lkKikpCitHTF9QUk9DKEdMZW51bSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzLCAoR0xl
bnVtKSkKK0dMX1BST0Modm9pZCwgZ2xDb21waWxlU2hhZGVyLCAoR0x1aW50KSkKK0dMX1BST0Mo
R0x1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQorR0xfUFJPQyhHTHVpbnQsIGdsQ3JlYXRlU2hh
ZGVyLCAoR0xlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVCdWZmZXJzLCAoR0xzaXplaSwg
Y29uc3QgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJhbWVidWZmZXJzLCAoR0xz
aXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVQcm9ncmFtLCAo
R0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzLCAoR0xzaXplaSBu
LCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVTaGFkZXIsIChHTHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbERldGFjaFNoYWRlciwgKEdMdWludCwgR0x1aW50KSkKK0dMX1BS
T0Modm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIChHTHVpbnQpKQorR0xfUFJPQyh2
b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWlu
dCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQsIChHTGVudW0sIEdMZW51
bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwgZ2xHZW5CdWZmZXJzLCAo
R0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIChHTGVu
dW0gdGFyZ2V0KSkKK0dMX1BST0Modm9pZCwgZ2xHZW5GcmFtZWJ1ZmZlcnMsIChHTHNpemVpLCBH
THVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCAoR0xzaXplaSwgR0x1
aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlQXR0cmliLCAoR0x1aW50LCBHTHVpbnQs
IEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopKQorR0xfUFJPQyh2
b2lkLCBnbEdldEFjdGl2ZVVuaWZvcm0sIChHTHVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXpl
aSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QXR0YWNo
ZWRTaGFkZXJzLCAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0x1aW50KikpCitHTF9QUk9D
KEdMaW50LCBnbEdldEF0dHJpYkxvY2F0aW9uLCAoR0x1aW50LCBjb25zdCBjaGFyKikpCitHTF9Q
Uk9DKHZvaWQsIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYsIChHTGVudW0sIEdMZW51bSwgR0xpbnQq
KSkKK0dMX1BST0Modm9pZCwgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwg
KEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJhbXMpKQorR0xfUFJPQyh2b2lkLCBn
bEdldFByb2dyYW1JbmZvTG9nLCAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopKQor
R0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1pdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQor
R0xfUFJPQyh2b2lkLCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2LCAoR0xlbnVtLCBHTGVu
dW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVySW5mb0xvZywgKEdMdWludCwg
R0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJpdiwg
KEdMdWludCwgR0xlbnVtLCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRlclNvdXJj
ZSwgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKK0dMX1BST0MoR0xpbnQsIGds
R2V0VW5pZm9ybUxvY2F0aW9uLCAoR0x1aW50LCBjb25zdCBjaGFyKikpCitHTF9QUk9DKHZvaWQs
IGdsR2V0VW5pZm9ybWZ2LCAoR0x1aW50LCBHTGludCwgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lk
LCBnbEdldFVuaWZvcm1pdiwgKEdMdWludCwgR0xpbnQsIEdMaW50KikpCitHTF9QUk9DKHZvaWQs
IGdsR2V0VmVydGV4QXR0cmliZnYsIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopKQorR0xfUFJP
Qyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYml2LCAoR0x1aW50LCBHTGVudW0sIEdMaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYsIChHTHVpbnQsIEdMZW51bSwg
R0x2b2lkKiopKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNCdWZmZXIsIChHTHVpbnQpKQorR0xf
UFJPQyhHTGJvb2xlYW4sIGdsSXNGcmFtZWJ1ZmZlciwgKEdMdWludCkpCitHTF9QUk9DKEdMYm9v
bGVhbiwgZ2xJc1Byb2dyYW0sIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNSZW5k
ZXJidWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNTaGFkZXIsIChHTHVp
bnQpKQorR0xfUFJPQyh2b2lkLCBnbExpbmtQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9p
ZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6
ZWkpKQorR0xfUFJPQyh2b2lkLCBnbFNhbXBsZUNvdmVyYWdlLCAoR0xjbGFtcGYsIEdMYm9vbGVh
bikpCitHTF9QUk9DKHZvaWQsIGdsU2hhZGVyU291cmNlLCAoR0x1aW50LCBHTHNpemVpLCBjb25z
dCBjaGFyKiosIGNvbnN0IEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsU3RlbmNpbEZ1bmNTZXBh
cmF0ZSwgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xT
dGVuY2lsTWFza1NlcGFyYXRlLCAoR0xlbnVtLCBHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFN0
ZW5jaWxPcFNlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVtKSkKK0dMX1BS
T0Modm9pZCwgZ2xVbmlmb3JtMWYsIChHTGludCwgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGds
VW5pZm9ybTFmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZv
aWQsIGdsVW5pZm9ybTFpLCAoR0xpbnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3Jt
MWl2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsVW5p
Zm9ybTJmLCAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZv
cm0yZnYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBn
bFVuaWZvcm0yaSwgKEdMaW50LCBHTGludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZv
cm0yaXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xV
bmlmb3JtM2YsIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCkpCitHTF9QUk9DKHZv
aWQsIGdsVW5pZm9ybTNmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9Q
Uk9DKHZvaWQsIGdsVW5pZm9ybTNpLCAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpKQorR0xf
UFJPQyh2b2lkLCBnbFVuaWZvcm0zaXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkK
K0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGYsIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm
bG9hdCwgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRmdiwgKEdMaW50LCBHTHNp
emVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRpLCAoR0xpbnQs
IEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGl2
LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9y
bU1hdHJpeDJmdiwgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKSkK
K0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4M2Z2LCAoR0xpbnQsIEdMc2l6ZWksIEdMYm9v
bGVhbiwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXg0ZnYs
IChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZv
aWQsIGdsVXNlUHJvZ3JhbSwgKEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsVmFsaWRhdGVQcm9n
cmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIxZiwgKEdMdWludCwg
Y29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliMWZ2LCAoR0x1aW50
LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliMmYsIChHTHVp
bnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRl
eEF0dHJpYjJmdiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZl
cnRleEF0dHJpYjNmLCAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25z
dCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIzZnYsIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWI0ZiwgKEdMdWludCwg
Y29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9h
dCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliNGZ2LCAoR0x1aW50LCBjb25zdCBHTGZs
b2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgKEdMdWludCwgR0xp
bnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNpemVpLCBjb25zdCBHTHZvaWQqKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAKaW5kZXggNGRhYTRkYy4uYzE4NDZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5j
cHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzREludGVybmFsUXQuaCIKICNpbmNsdWRlICJI
VE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgpAQCAtNDIsMjQ2ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotI2lmICFkZWZpbmVkKEdMY2hhcikKLXR5cGVkZWYgY2hhciBHTGNoYXI7Ci0jZW5kaWYKLQot
I2lmICFkZWZpbmVkKEdMX0RFUFRIMjRfU1RFTkNJTDgpCi0jZGVmaW5lIEdMX0RFUFRIMjRfU1RF
TkNJTDggMHg4OEYwCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEFQSUVOVFJZKQotI2RlZmluZSBB
UElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xfRVNfMgotdHlwZWRlZiBHTHNpemVp
cHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0ciBHTGludHB0clR5cGU7Ci0jZWxz
ZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIHB0cmRpZmZfdCBH
TGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBY3RpdmVU
ZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEF0dGFjaFNo
YWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJp
bmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwgY29uc3QgY2hhciopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVmZmVyVHlwZSkgKEdMZW51bSwg
R0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUp
IChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kQ29sb3JU
eXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUpKEdMZW51bSwgR0xlbnVt
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlKShHTGVu
dW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBo
YSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRhdGFUeXBlKSAoR0xlbnVtLCBH
THNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdMaW50cHRyVHlwZSwgR0xzaXpl
aXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBHTGVudW0gKEFQSUVOVFJZKiBnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVO
VFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVkZWYgR0x1aW50IChBUElFTlRSWSog
Z2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
RGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3Qg
R0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVByb2dyYW1UeXBlKSAo
R0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5
cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
RGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSkgKEdM
ZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWlu
dCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5CdWZmZXJzVHlwZSkgKEdM
c2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5lcmF0ZU1pcG1h
cFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuRnJh
bWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdM
c2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNp
emVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xz
aXplaSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0QXR0cmliTG9j
YXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNp
emVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9n
cmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBH
TGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSkg
KEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWks
IEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRVbmlmb3Jt
TG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUpIChHTHVpbnQsIEdMaW50LCBH
TGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUp
IChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlKSAoR0x1aW50LCBH
TGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc0J1ZmZl
clR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzRnJhbWVi
dWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1By
b2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1Jl
bmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBn
bElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbExpbmtQ
cm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFJlbmRlcmJ1
ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5cGUpIChHTGNsYW1wZiwgR0xi
b29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hhZGVyU291cmNlVHlwZSkgKEdM
dWludCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBH
TGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE1hc2tTZXBh
cmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0
ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUpIChHTGludCwgR0xmbG9hdCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZUeXBlKSAoR0xpbnQsIEdMc2l6
ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFp
VHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0x
aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNv
bnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJpVHlwZSkg
KEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3Jt
Mml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxv
YXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2Z2VHlwZSkgKEdMaW50LCBH
THNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZv
cm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5cGUpIChHTGludCwgR0xmbG9h
dCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQs
IEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aXZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29u
c3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4M2Z2
VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmFs
aWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZl
cnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZUeXBlKSAoR0x1aW50
LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29u
c3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQs
IGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmli
UG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwg
Y29uc3QgR0x2b2lkKik7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwgOiBwdWJs
aWMgUUdyYXBoaWNzT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0
V2luZG93KTsKLSAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwotCi0gICAgYm9vbCBp
c1ZhbGlkKCkgeyByZXR1cm4gbV92YWxpZDsgfQotCi0gICAgUUdMV2lkZ2V0KiBnZXRWaWV3cG9y
dEdMV2lkZ2V0KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0g
ICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSos
IFFXaWRnZXQqKTsKLSAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7Ci0KLSAgICBnbEFj
dGl2ZVRleHR1cmVUeXBlIGFjdGl2ZVRleHR1cmU7Ci0gICAgZ2xBdHRhY2hTaGFkZXJUeXBlIGF0
dGFjaFNoYWRlcjsKLSAgICBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUgYmluZEF0dHJpYkxvY2F0
aW9uOwotICAgIGdsQmluZEJ1ZmZlclR5cGUgYmluZEJ1ZmZlcjsKLSAgICBnbEJpbmRGcmFtZWJ1
ZmZlclR5cGUgYmluZEZyYW1lYnVmZmVyOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUgYmlu
ZFJlbmRlcmJ1ZmZlcjsKLSAgICBnbEJsZW5kQ29sb3JUeXBlIGJsZW5kQ29sb3I7Ci0gICAgZ2xC
bGVuZEVxdWF0aW9uVHlwZSBibGVuZEVxdWF0aW9uOwotICAgIGdsQmxlbmRFcXVhdGlvblNlcGFy
YXRlVHlwZSBibGVuZEVxdWF0aW9uU2VwYXJhdGU7Ci0gICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5
cGUgYmxlbmRGdW5jU2VwYXJhdGU7Ci0gICAgZ2xCdWZmZXJEYXRhVHlwZSBidWZmZXJEYXRhOwot
ICAgIGdsQnVmZmVyU3ViRGF0YVR5cGUgYnVmZmVyU3ViRGF0YTsKLSAgICBnbENoZWNrRnJhbWVi
dWZmZXJTdGF0dXNUeXBlIGNoZWNrRnJhbWVidWZmZXJTdGF0dXM7Ci0gICAgZ2xDb21waWxlU2hh
ZGVyVHlwZSBjb21waWxlU2hhZGVyOwotICAgIGdsQ3JlYXRlUHJvZ3JhbVR5cGUgY3JlYXRlUHJv
Z3JhbTsKLSAgICBnbENyZWF0ZVNoYWRlclR5cGUgY3JlYXRlU2hhZGVyOwotICAgIGdsRGVsZXRl
QnVmZmVyc1R5cGUgZGVsZXRlQnVmZmVyczsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUg
ZGVsZXRlRnJhbWVidWZmZXJzOwotICAgIGdsRGVsZXRlUHJvZ3JhbVR5cGUgZGVsZXRlUHJvZ3Jh
bTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlIGRlbGV0ZVJlbmRlcmJ1ZmZlcnM7Ci0g
ICAgZ2xEZWxldGVTaGFkZXJUeXBlIGRlbGV0ZVNoYWRlcjsKLSAgICBnbERldGFjaFNoYWRlclR5
cGUgZGV0YWNoU2hhZGVyOwotICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUg
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5
cGUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXI7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRFR5
cGUgZnJhbWVidWZmZXJUZXh0dXJlMkQ7Ci0gICAgZ2xHZW5CdWZmZXJzVHlwZSBnZW5CdWZmZXJz
OwotICAgIGdsR2VuZXJhdGVNaXBtYXBUeXBlIGdlbmVyYXRlTWlwbWFwOwotICAgIGdsR2VuRnJh
bWVidWZmZXJzVHlwZSBnZW5GcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xHZW5SZW5kZXJidWZmZXJzVHlw
ZSBnZW5SZW5kZXJidWZmZXJzOwotICAgIGdsR2V0QWN0aXZlQXR0cmliVHlwZSBnZXRBY3RpdmVB
dHRyaWI7Ci0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSBnZXRBY3RpdmVVbmlmb3JtOwotICAg
IGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSBnZXRBdHRhY2hlZFNoYWRlcnM7Ci0gICAgZ2xHZXRB
dHRyaWJMb2NhdGlvblR5cGUgZ2V0QXR0cmliTG9jYXRpb247Ci0gICAgZ2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdlR5cGUgZ2V0QnVmZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXY7Ci0gICAgZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUgZ2V0UHJvZ3JhbUluZm9Mb2c7Ci0gICAg
Z2xHZXRQcm9ncmFtaXZUeXBlIGdldFByb2dyYW1pdjsKLSAgICBnbEdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2VHlwZSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFNoYWRl
ckluZm9Mb2dUeXBlIGdldFNoYWRlckluZm9Mb2c7Ci0gICAgZ2xHZXRTaGFkZXJpdlR5cGUgZ2V0
U2hhZGVyaXY7Ci0gICAgZ2xHZXRTaGFkZXJTb3VyY2VUeXBlIGdldFNoYWRlclNvdXJjZTsKLSAg
ICBnbEdldFVuaWZvcm1mdlR5cGUgZ2V0VW5pZm9ybWZ2OwotICAgIGdsR2V0VW5pZm9ybWl2VHlw
ZSBnZXRVbmlmb3JtaXY7Ci0gICAgZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlIGdldFVuaWZvcm1M
b2NhdGlvbjsKLSAgICBnbEdldFZlcnRleEF0dHJpYmZ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJmdjsK
LSAgICBnbEdldFZlcnRleEF0dHJpYml2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJpdjsKLSAgICBnbEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydjsKLSAgICBn
bElzQnVmZmVyVHlwZSBpc0J1ZmZlcjsKLSAgICBnbElzRnJhbWVidWZmZXJUeXBlIGlzRnJhbWVi
dWZmZXI7Ci0gICAgZ2xJc1Byb2dyYW1UeXBlIGlzUHJvZ3JhbTsKLSAgICBnbElzUmVuZGVyYnVm
ZmVyVHlwZSBpc1JlbmRlcmJ1ZmZlcjsKLSAgICBnbElzU2hhZGVyVHlwZSBpc1NoYWRlcjsKLSAg
ICBnbExpbmtQcm9ncmFtVHlwZSBsaW5rUHJvZ3JhbTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VUeXBlIHJlbmRlcmJ1ZmZlclN0b3JhZ2U7Ci0gICAgZ2xTYW1wbGVDb3ZlcmFnZVR5cGUgc2Ft
cGxlQ292ZXJhZ2U7Ci0gICAgZ2xTaGFkZXJTb3VyY2VUeXBlIHNoYWRlclNvdXJjZTsKLSAgICBn
bFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlIHN0ZW5jaWxGdW5jU2VwYXJhdGU7Ci0gICAgZ2xTdGVu
Y2lsTWFza1NlcGFyYXRlVHlwZSBzdGVuY2lsTWFza1NlcGFyYXRlOwotICAgIGdsU3RlbmNpbE9w
U2VwYXJhdGVUeXBlIHN0ZW5jaWxPcFNlcGFyYXRlOwotICAgIGdsVW5pZm9ybTFmVHlwZSB1bmlm
b3JtMWY7Ci0gICAgZ2xVbmlmb3JtMWZ2VHlwZSB1bmlmb3JtMWZ2OwotICAgIGdsVW5pZm9ybTFp
VHlwZSB1bmlmb3JtMWk7Ci0gICAgZ2xVbmlmb3JtMWl2VHlwZSB1bmlmb3JtMWl2OwotICAgIGds
VW5pZm9ybTJmVHlwZSB1bmlmb3JtMmY7Ci0gICAgZ2xVbmlmb3JtMmZ2VHlwZSB1bmlmb3JtMmZ2
OwotICAgIGdsVW5pZm9ybTJpVHlwZSB1bmlmb3JtMmk7Ci0gICAgZ2xVbmlmb3JtMml2VHlwZSB1
bmlmb3JtMml2OwotICAgIGdsVW5pZm9ybTNmVHlwZSB1bmlmb3JtM2Y7Ci0gICAgZ2xVbmlmb3Jt
M2Z2VHlwZSB1bmlmb3JtM2Z2OwotICAgIGdsVW5pZm9ybTNpVHlwZSB1bmlmb3JtM2k7Ci0gICAg
Z2xVbmlmb3JtM2l2VHlwZSB1bmlmb3JtM2l2OwotICAgIGdsVW5pZm9ybTRmVHlwZSB1bmlmb3Jt
NGY7Ci0gICAgZ2xVbmlmb3JtNGZ2VHlwZSB1bmlmb3JtNGZ2OwotICAgIGdsVW5pZm9ybTRpVHlw
ZSB1bmlmb3JtNGk7Ci0gICAgZ2xVbmlmb3JtNGl2VHlwZSB1bmlmb3JtNGl2OwotICAgIGdsVW5p
Zm9ybU1hdHJpeDJmdlR5cGUgdW5pZm9ybU1hdHJpeDJmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXgz
ZnZUeXBlIHVuaWZvcm1NYXRyaXgzZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSB1bmlm
b3JtTWF0cml4NGZ2OwotICAgIGdsVXNlUHJvZ3JhbVR5cGUgdXNlUHJvZ3JhbTsKLSAgICBnbFZh
bGlkYXRlUHJvZ3JhbVR5cGUgdmFsaWRhdGVQcm9ncmFtOwotICAgIGdsVmVydGV4QXR0cmliMWZU
eXBlIHZlcnRleEF0dHJpYjFmOwotICAgIGdsVmVydGV4QXR0cmliMWZ2VHlwZSB2ZXJ0ZXhBdHRy
aWIxZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUgdmVydGV4QXR0cmliMmY7Ci0gICAgZ2xW
ZXJ0ZXhBdHRyaWIyZnZUeXBlIHZlcnRleEF0dHJpYjJmdjsKLSAgICBnbFZlcnRleEF0dHJpYjNm
VHlwZSB2ZXJ0ZXhBdHRyaWIzZjsKLSAgICBnbFZlcnRleEF0dHJpYjNmdlR5cGUgdmVydGV4QXR0
cmliM2Z2OwotICAgIGdsVmVydGV4QXR0cmliNGZUeXBlIHZlcnRleEF0dHJpYjRmOwotICAgIGds
VmVydGV4QXR0cmliNGZ2VHlwZSB2ZXJ0ZXhBdHRyaWI0ZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyVHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyOwotCi0gICAgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMgbV9hdHRyczsKLSAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7Ci0gICAg
UUdMV2lkZ2V0KiBtX2dsV2lkZ2V0OwotICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0
OwotICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsKLSAgICBHTHVpbnQgbV90ZXh0dXJlOwotICAg
IEdMdWludCBtX2NhbnZhc0ZibzsKLSAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAgIEdMdWlu
dCBtX2RlcHRoQnVmZmVyOwotICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAgTGlzdEhh
c2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0cjxFeHRl
bnNpb25zM0RRdD4gbV9leHRlbnNpb25zOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCogZ2V0UHJv
Y0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKTsKLSAgICBib29sIG1fdmFsaWQ7Ci19OwotCi0j
aWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpIAotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFBy
b2MpIFByb2MKLSNlbHNlCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnBy
ZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpOwotI2VuZGlmCi0KIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIGRl
ZmluZWQgKFFUX09QRU5HTF9FU18yKQpAQCAtMjkxLDE3ICs1MiwxMSBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKICNlbmRpZgogfQogCi1HcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQotICAgIDog
bV9hdHRycyhhdHRycykKK0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1faG9zdFdpbmRvdyhob3N0
V2luZG93KQogICAgICwgbV9nbFdpZGdldCgwKQogICAgICwgbV92aWV3cG9ydEdMV2lkZ2V0KDAp
Ci0gICAgLCBtX3RleHR1cmUoMCkKLSAgICAsIG1fY2FudmFzRmJvKDApCi0gICAgLCBtX2N1cnJl
bnRGYm8oMCkKLSAgICAsIG1fZGVwdGhCdWZmZXIoMCkKLSAgICAsIG1fbGF5ZXJDb21wb3NpdGVk
KGZhbHNlKQotICAgICwgbV92YWxpZCh0cnVlKQogewogICAgIG1fdmlld3BvcnRHTFdpZGdldCA9
IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKIApAQCAtMzEwLDEzOSArNjUsOCBAQCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dAogICAgIGVsc2UKICAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRn
ZXQoKTsKIAotICAgIGlmICghbV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQu
Iik7Ci0gICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIEdlb21ldHJ5IGNhbiBiZSBzZXQgdG8gemVybyBiZWNhdXNlIG1fZ2xXaWRnZXQgaXMg
dXNlZCBvbmx5IGZvciBpdHMgUUdMQ29udGV4dC4KICAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRy
eSgwLCAwLCAwLCAwKTsKLQotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgbV9hdHRy
cy5zdGVuY2lsID0gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAg
ICAgIG1fYXR0cnMuZGVwdGggPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hdHRycy5hbnRpYWxpYXMg
PSBmYWxzZTsKLQogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0KLSAgICBhY3RpdmVU
ZXh0dXJlID0gR0VUX1BST0NfQUREUkVTUyhnbEFjdGl2ZVRleHR1cmUpOwotICAgIGF0dGFjaFNo
YWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xBdHRhY2hTaGFkZXIpOwotICAgIGJpbmRBdHRyaWJM
b2NhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOwotICAgIGJp
bmRCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEJ1ZmZlcik7Ci0gICAgYmluZEZyYW1l
YnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRGcmFtZWJ1ZmZlcik7Ci0gICAgYmluZFJl
bmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsKLSAgICBi
bGVuZENvbG9yID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kQ29sb3IpOwotICAgIGJsZW5kRXF1
YXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvbik7Ci0gICAgYmxlbmRFcXVh
dGlvblNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSk7
Ci0gICAgYmxlbmRGdW5jU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2Vw
YXJhdGUpOwotICAgIGJ1ZmZlckRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7
Ci0gICAgYnVmZmVyU3ViRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJTdWJEYXRhKTsK
LSAgICBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzID0gR0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXMpOwotICAgIGNvbXBpbGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGds
Q29tcGlsZVNoYWRlcik7Ci0gICAgY3JlYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xD
cmVhdGVQcm9ncmFtKTsKLSAgICBjcmVhdGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3Jl
YXRlU2hhZGVyKTsKLSAgICBkZWxldGVCdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0
ZUJ1ZmZlcnMpOwotICAgIGRlbGV0ZUZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xE
ZWxldGVGcmFtZWJ1ZmZlcnMpOwotICAgIGRlbGV0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNT
KGdsRGVsZXRlUHJvZ3JhbSk7Ci0gICAgZGVsZXRlUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xEZWxldGVSZW5kZXJidWZmZXJzKTsKLSAgICBkZWxldGVTaGFkZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsRGVsZXRlU2hhZGVyKTsKLSAgICBkZXRhY2hTaGFkZXIgPSBHRVRfUFJPQ19B
RERSRVNTKGdsRGV0YWNoU2hhZGVyKTsKLSAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBH
RVRfUFJPQ19BRERSRVNTKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBlbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSk7Ci0gICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEID0gR0VU
X1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKLSAgICBnZW5CdWZmZXJzID0g
R0VUX1BST0NfQUREUkVTUyhnbEdlbkJ1ZmZlcnMpOwotICAgIGdlbmVyYXRlTWlwbWFwID0gR0VU
X1BST0NfQUREUkVTUyhnbEdlbmVyYXRlTWlwbWFwKTsKLSAgICBnZW5GcmFtZWJ1ZmZlcnMgPSBH
RVRfUFJPQ19BRERSRVNTKGdsR2VuRnJhbWVidWZmZXJzKTsKLSAgICBnZW5SZW5kZXJidWZmZXJz
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdlblJlbmRlcmJ1ZmZlcnMpOwotICAgIGdldEFjdGl2ZUF0
dHJpYiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVBdHRyaWIpOwotICAgIGdldEFjdGl2
ZVVuaWZvcm0gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7Ci0gICAgZ2V0
QXR0YWNoZWRTaGFkZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hhZGVycyk7
Ci0gICAgZ2V0QXR0cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9j
YXRpb24pOwotICAgIGdldEJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdl
dEJ1ZmZlclBhcmFtZXRlcml2KTsKLSAgICBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdik7Ci0gICAgZ2V0UHJvZ3JhbUluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJv
Z3JhbUluZm9Mb2cpOwotICAgIGdldFByb2dyYW1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQ
cm9ncmFtaXYpOwotICAgIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTsKLSAgICBnZXRTaGFkZXJJbmZvTG9n
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlckluZm9Mb2cpOwotICAgIGdldFNoYWRlcml2
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlcml2KTsKLSAgICBnZXRTaGFkZXJTb3VyY2Ug
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyU291cmNlKTsKLSAgICBnZXRVbmlmb3JtZnYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybWZ2KTsKLSAgICBnZXRVbmlmb3JtaXYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybWl2KTsKLSAgICBnZXRVbmlmb3JtTG9jYXRpb24g
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKLSAgICBnZXRWZXJ0ZXhB
dHRyaWJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdik7Ci0gICAgZ2V0
VmVydGV4QXR0cmliaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOwot
ICAgIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRl
eEF0dHJpYlBvaW50ZXJ2KTsKLSAgICBpc0J1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0J1
ZmZlcik7Ci0gICAgaXNGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0ZyYW1lYnVm
ZmVyKTsKLSAgICBpc1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsKLSAg
ICBpc1JlbmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7Ci0g
ICAgaXNTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNTaGFkZXIpOwotICAgIGxpbmtQcm9n
cmFtID0gR0VUX1BST0NfQUREUkVTUyhnbExpbmtQcm9ncmFtKTsKLSAgICByZW5kZXJidWZmZXJT
dG9yYWdlID0gR0VUX1BST0NfQUREUkVTUyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwotICAgIHNh
bXBsZUNvdmVyYWdlID0gR0VUX1BST0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKLSAgICBz
aGFkZXJTb3VyY2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsU2hhZGVyU291cmNlKTsKLSAgICBzdGVu
Y2lsRnVuY1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUp
OwotICAgIHN0ZW5jaWxNYXNrU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1h
c2tTZXBhcmF0ZSk7Ci0gICAgc3RlbmNpbE9wU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGds
U3RlbmNpbE9wU2VwYXJhdGUpOwotICAgIHVuaWZvcm0xZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtMWYpOwotICAgIHVuaWZvcm0xZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFm
dik7Ci0gICAgdW5pZm9ybTFpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7Ci0gICAg
dW5pZm9ybTFpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWl2KTsKLSAgICB1bmlmb3Jt
MmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJmKTsKLSAgICB1bmlmb3JtMmZ2ID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0yZnYpOwotICAgIHVuaWZvcm0yaSA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtMmkpOwotICAgIHVuaWZvcm0yaXYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTJpdik7Ci0gICAgdW5pZm9ybTNmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0z
Zik7Ci0gICAgdW5pZm9ybTNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsKLSAg
ICB1bmlmb3JtM2kgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpKTsKLSAgICB1bmlmb3Jt
M2l2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaXYpOwotICAgIHVuaWZvcm00ZiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGYpOwotICAgIHVuaWZvcm00ZnYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVW5pZm9ybTRmdik7Ci0gICAgdW5pZm9ybTRpID0gR0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm00aSk7Ci0gICAgdW5pZm9ybTRpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
NGl2KTsKLSAgICB1bmlmb3JtTWF0cml4MmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1N
YXRyaXgyZnYpOwotICAgIHVuaWZvcm1NYXRyaXgzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5p
Zm9ybU1hdHJpeDNmdik7Ci0gICAgdW5pZm9ybU1hdHJpeDRmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtTWF0cml4NGZ2KTsKLSAgICB1c2VQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhn
bFVzZVByb2dyYW0pOwotICAgIHZhbGlkYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
YWxpZGF0ZVByb2dyYW0pOwotICAgIHZlcnRleEF0dHJpYjFmID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjFmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZnYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVmVydGV4QXR0cmliMWZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xWZXJ0ZXhBdHRyaWIyZik7Ci0gICAgdmVydGV4QXR0cmliMmZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbFZlcnRleEF0dHJpYjJmdik7Ci0gICAgdmVydGV4QXR0cmliM2YgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVmVydGV4QXR0cmliM2YpOwotICAgIHZlcnRleEF0dHJpYjNmdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIzZnYpOwotICAgIHZlcnRleEF0dHJpYjRmID0gR0VUX1BS
T0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjRmKTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliNGZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOwotCi0gICAgaWYgKCFt
X3ZhbGlkKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVk
ZWQgT3BlbkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIC8vIENyZWF0ZSBidWZmZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KLSAg
ICBnZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fY2FudmFzRmJvKTsKLQotICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01B
R19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVy
ZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
OwotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwot
Ci0gICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGdlblJlbmRlcmJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fZGVwdGhCdWZmZXIpOwotCi0gICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBz
ZXQgaW5pdGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KLSAgICBtX2N1cnJlbnRGYm8gPSBtX2Nh
bnZhc0ZibzsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2NhbnZhc0Zibyk7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7
CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVy
bmFsKCkKQEAgLTQ2OSw2MyArOTMsNiBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRv
UmdiKHF1aW50MzIgcGl4ZWwpCiAgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDAp
IHwgKChwaXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KQotewotICAgIGlmICh3aWR0aCA9PSBtX2JvdW5kaW5nUmVjdC53aWR0aCgpICYmIGhlaWdo
dCA9PSBtX2JvdW5kaW5nUmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9i
b3VuZGluZ1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQp
KTsKLQotICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0KLSAgICAvLyBDcmVhdGUgY29s
b3IgYnVmZmVyCi0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgbV90ZXh0dXJlKTsKLSAgICBpZiAobV9hdHRycy5hbHBoYSkKLSAgICAgICAgZ2xUZXhJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGlj
c0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0
YSAqLyAwKTsKLSAgICBlbHNlCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgd2lk
dGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwotICAgIGdsQmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwotCi0gICAgaWYgKG1fYXR0
cnMuZGVwdGgpIHsKLSAgICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMu
Ci0gICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgbV9kZXB0aEJ1ZmZlcik7Ci0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICAgICAg
cmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwotI2Vsc2UK
LSAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lM
OCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7Ci0jZW5kaWYKLSAgICAgICAgYmlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKLSAgICB9
Ci0KLSAgICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KLSAgICBiaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7Ci0gICAgZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X3RleHR1cmUsIDApOwotICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBmcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoQnVmZmVyKTsKLSNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICBpZiAo
bV9hdHRycy5zdGVuY2lsKQotICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFD
SE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwot
I2VuZGlmCi0KLSAgICBHTGVudW0gc3RhdHVzID0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOwotICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3Jh
cGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IGNsZWFyRmxhZ3MgPSBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAg
Y2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICBp
ZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4
dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0KLSAgICBnbENsZWFyKGNsZWFyRmxhZ3MpOwotICAg
IGdsRmx1c2goKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChR
UGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24s
IFFXaWRnZXQqIHdpZGdldCkKIHsKICAgICBRX1VOVVNFRCh3aWRnZXQpOwpAQCAtNTM2LDcgKzEw
Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAgICAgLy8gd2l0aCBicm93c2VycyBPcGVu
R0wgY29udGV4dC4KICAgICBRR0xXaWRnZXQqIHZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9y
dEdMV2lkZ2V0KCk7CiAgICAgaWYgKHZpZXdwb3J0R0xXaWRnZXQgJiYgdmlld3BvcnRHTFdpZGdl
dCA9PSBtX3ZpZXdwb3J0R0xXaWRnZXQgJiYgdmlld3BvcnRHTFdpZGdldCA9PSBwYWludGVyLT5k
ZXZpY2UoKSkgewotICAgICAgICB2aWV3cG9ydEdMV2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBt
X3RleHR1cmUpOworICAgICAgICB2aWV3cG9ydEdMV2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBt
X2NvbnRleHQtPm1fY29tcG9zaXRvclRleHR1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC01NDUsMTAgKzExMiwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHF1aW50
MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1h
Z2UuYml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgYmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwor
I2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKKyNlbHNlCisgICAg
bV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fY29udGV4dC0+bV9mYm8pOworI2VuZGlmCiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8g
MCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMp
OwotCi0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9jdXJyZW50RmJvKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Jv
dW5kRmJvKTsKKyNlbHNlCisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CisjZW5kaWYK
IAogICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJpdHMsIGFuZCB3aXRoIHRoZSBv
cmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVlZCBSR0IzMiBvciBBUkdCMzJf
UE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCkBAIC01NzgsNyArMTUyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKIAogUVJlY3RGIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYm91bmRpbmdSZWN0Owor
ICAgIHJldHVybiBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKG1fY29udGV4dC0+bV9jdXJy
ZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KSk7CiB9CiAKIHZvaWQqIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYykK
QEAgLTU4OCwxMyArMTYyLDEzIEBAIHZvaWQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Omdl
dFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYykKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IDM7IGkrKykgewogICAgICAgICBTdHJpbmcgbmFtZVdpdGhFeHQgPSBwcm9jICsgZXh0W2ldOwog
Ci0gICAgICAgIHZvaWQqIGFkZHIgPSBtX2dsV2lkZ2V0LT5jb250ZXh0KCktPmdldFByb2NBZGRy
ZXNzKG5hbWVXaXRoRXh0LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB2b2lkKiBhZGRyID0gbV9n
bFdpZGdldC0+Y29udGV4dCgpLT5nZXRQcm9jQWRkcmVzcyhRU3RyaW5nOjpmcm9tQXNjaWkobmFt
ZVdpdGhFeHQudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBpZiAoYWRkcikgCiAgICAgICAgICAg
ICByZXR1cm4gYWRkcjsKICAgICB9CiAKICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBEaWQgbm90IGZpbmQgR0wgZnVuY3Rpb24gJXMiLCBwcm9jLnV0ZjgoKS5kYXRhKCkpOwotICAg
IG1fdmFsaWQgPSBmYWxzZTsKKyAgICBtX2NvbnRleHQtPm1fcHJvY3NBcmVWYWxpZCA9IGZhbHNl
OwogICAgIHJldHVybiAwOwogfQogCkBAIC02MDgsMTAgKzE4Miw2OCBAQCBQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaQogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cs
IGJvb2wpCi0gICAgOiBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKGF0
dHJzLCBob3N0V2luZG93KSkKKyAgICA6IG1fcHJvY3NBcmVWYWxpZCh0cnVlKQorICAgICwgbV9j
dXJyZW50V2lkdGgoMCkKKyAgICAsIG1fY3VycmVudEhlaWdodCgwKQorICAgICwgbV9hdHRycyhh
dHRycykKKyAgICAsIG1fdGV4dHVyZSgwKQorICAgICwgbV9jb21wb3NpdG9yVGV4dHVyZSgwKQor
ICAgICwgbV9mYm8oMCkKKyAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCisgICAgLCBtX2xh
eWVyQ29tcG9zaXRlZChmYWxzZSkKKyAgICAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCgwKQorICAg
ICwgbV9ib3VuZEZCTygwKQorICAgICwgbV9hY3RpdmVUZXh0dXJlKDApCisgICAgLCBtX2JvdW5k
VGV4dHVyZTAoMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKKyAgICAsIG1fbXVsdGlzYW1w
bGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigw
KQorICAgICwgbV9pbnRlcm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCh0aGlzLCBo
b3N0V2luZG93KSkKIHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPmlzVmFsaWQoKSkKKyNpZiBkZWZp
bmVkKFFUX09QRU5HTF9FU18yKQorICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOworI2Vsc2UK
KyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsK
KyNlbmRpZgorICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CisKKyAgICBpZiAoIW1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgeworICAgICAgICBMT0dfRVJST1IoIkdyYXBo
aWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAgICAg
ICBtX2ludGVybmFsID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmICFkZWZpbmVk
KFFUX09QRU5HTF9FU18yKQorI2RlZmluZSBHTF9QUk9DKFJldHVyblZhbHVlLCBQcm9jLCBQYXJh
bXMpIFByb2MgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dDNEOjpQcm9jIyNUeXBl
PihtX2ludGVybmFsLT5nZXRQcm9jQWRkcmVzcygjUHJvYykpOworI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNEUHJvY3MuaCIKKyN1bmRlZiBHTF9QUk9DCisjZW5kaWYKKworICAgIGlmICghbV9w
cm9jc0FyZVZhbGlkKSB7CisgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFs
bCBuZWVkZWQgT3BlbkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUiKTsKICAgICAgICAg
bV9pbnRlcm5hbCA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUg
YnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fZmJvKTsKKworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRl
eHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dS
QVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xC
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAo
bV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEs
ICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisKKyAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNl
dCBpbml0aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgorICAgIG1fYm91bmRGQk8gPSBtX2ZibzsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
ZmJvKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCkBAIC02MjUsNyArMjU3LDcgQEAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpCiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRm
b3JtVGV4dHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fdGV4dHVyZTsK
KyAgICByZXR1cm4gbV9jb21wb3NpdG9yVGV4dHVyZTsKIH0KIAogUGxhdGZvcm1MYXllciogR3Jh
cGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdApAQCAtNjU2LDEzICsyODgsNjAg
QEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIGlmICh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0
aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0IHx8ICghbV9pbnRlcm5hbCkpCisgICAgaWYg
KCh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KSB8
fCAoIW1faW50ZXJuYWwpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRXaWR0aCA9
IHdpZHRoOwogICAgIG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKIAotICAgIG1faW50ZXJuYWwt
PnJlc2hhcGUod2lkdGgsIGhlaWdodCk7CisgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKKworICAgIC8vIENyZWF0ZSBjb2xvciBidWZmZXIKKyAgICBnbEJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsK
KyAgICBpZiAobV9hdHRycy5hbHBoYSkKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JB
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKKyAgICBl
bHNlCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
LyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgd2lkdGgsIGhlaWdodCwgLyog
Ym9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCisgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKKyAg
ICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCisgICAgICAgIGdsQmlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICAgICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CisjZWxzZQorICAg
ICAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgs
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CisjZW5kaWYKKyAgICAgICAgZ2xC
aW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworICAg
IH0KKworICAgIC8vIENvbnN0cnVjdCBjYW52YXMgRkJPLgorICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X2NvbXBvc2l0b3JUZXh0dXJlLCAwKTsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjaWYgIWRlZmluZWQoUVRfT1BF
TkdMX0VTXzIpCisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyNlbmRpZgorCisgICAgR0xlbnVtIHN0YXR1cyA9
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIp
OworICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBM
RVRFKSB7CisgICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8g
aW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aW50IGNsZWFyRmxhZ3MgPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAg
ICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAg
ICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisK
KyAgICBnbENsZWFyKGNsZWFyRmxhZ3MpOworICAgIGdsRmx1c2goKTsKIH0KIAogSW50U2l6ZSBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKQpAQCAtNjczLDcg
KzM1Miw3IEBAIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZm
ZXJTaXplKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0g
dGV4dHVyZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgZ2xBY3RpdmVUZXh0
dXJlKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTY4
MSw3ICszNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0p
OwogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7
CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBz
aGFkZXJzKQpAQCAtNjkyLDMzICszNzEsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG0KICAg
ICB9CiAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGdl
dEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOworICAg
IGdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGlu
ZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dy
YW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5iaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIodGFy
Z2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPm1fY3Vy
cmVudEZibyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1faW50ZXJuYWwtPm1fY2FudmFzRmJvOwotICAg
IG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVu
dEZibyk7CisgICAgbV9ib3VuZEZCTyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1fZmJvOworICAgIGds
QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9ib3VuZEZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJi
dWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtNzMwLDE5ICs0MDksMTkgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFt
cGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxw
aGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBnbEJs
ZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9u
KG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVt
IG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxw
aGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBH
QzNEZW51bSBkZmFjdG9yKQpAQCAtNzU0LDMxICs0MzMsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdD
M0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7
CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFs
cGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0
YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRh
dGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEo
dGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBj
b25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0
LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0
YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25z
dCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwg
ZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsK
IH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFy
Z2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0MzRGNsYW1wZiByLCBHQzNEY2xh
bXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAtODE5LDcgKzQ5OCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5jb21waWxlU2hhZGVyKHNoYWRlcik7Cisg
ICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAtODY3LDcgKzU0Niw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRl
cik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbERldGFjaFNoYWRl
cihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxl
KEdDM0RlbnVtIGNhcCkKQEAgLTg3OSw3ICs1NTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdD
M0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAgLTkwMyw3ICs1ODIsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCkBAIC05MjEs
MTMgKzYwMCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZm
ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50IGxldmVsKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVs
KTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFy
Z2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250
RmFjZShHQzNEZW51bSBtb2RlKQpAQCAtOTM5LDcgKzYxOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuZXJhdGVNaXBtYXAodGFy
Z2V0KTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CiB9CiAKIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1
aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAtOTUyLDE0ICs2MzEsMTQgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xF
TkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3ND
b250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAg
ICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdM
c2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5
cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4
LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAgIGdsR2V0
QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6
ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RG
cmVlKG5hbWUpOwpAQCAtOTg0LDE0ICs2NjMsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGUK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQg
bWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8
R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9M
RU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWlu
dD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RI
LCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9j
KG1heExlbmd0aCk7CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXpl
ID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVV
bmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZu
YW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShz
dGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0
aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFtZUxlbmd0aCkgewogICAgICAg
ICBmYXN0RnJlZShuYW1lKTsKQEAgLTEwMTIsMjAgKzY5MSwyMCBAQCBpbnQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJgogICAgICAgICByZXR1cm4gLTE7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Z2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0
ZXMoKQogewotICAgIHJldHVybiBtX2ludGVybmFsLT5tX2F0dHJzOworICAgIHJldHVybiBtX2F0
dHJzOwogfQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewotICAg
IGlmIChtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7Ci0gICAgICAg
IExpc3RIYXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9IG1faW50ZXJuYWwtPm1fc3lu
dGhldGljRXJyb3JzLmJlZ2luKCk7CisgICAgaWYgKG1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+
IDApIHsKKyAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0gbV9z
eW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKICAgICAgICAgR0MzRGVudW0gZXJyID0gKml0ZXI7Ci0g
ICAgICAgIG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKKyAgICAg
ICAgbV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOwogICAgICAgICByZXR1cm4gZXJyOwog
ICAgIH0KIApAQCAtMTA1MSw3ICs3MzAsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9G
QUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcihidWZmZXIpOworICAgIHJldHVybiBnbElz
QnVmZmVyKGJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0Vu
YWJsZWQoR0MzRGVudW0gY2FwKQpAQCAtMTA2Niw3ICs3NDUsNyBAQCBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVy
KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7
CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQpAQCAtMTA3NSw3ICs3NTQsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICAgICAg
cmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICByZXR1cm4gZ2xJc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikK
QEAgLTEwODQsNyArNzYzLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogICAgICAgICByZXR1cm4g
R0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsK
KyAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogfQogCiBHQzNEYm9v
bGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CkBAIC0xMDkzLDcgKzc3Miw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1No
YWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwog
ICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0
dXJuIG1faW50ZXJuYWwtPmlzU2hhZGVyKHNoYWRlcik7CisgICAgcmV0dXJuIGdsSXNTaGFkZXIo
c2hhZGVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzVGV4dHVyZShQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC0xMTE1LDcgKzc5NCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAg
ICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbExpbmtQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3Jl
aShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCkBAIC0xMTY2LDEzICs4NDUsMTMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm8KICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlm
Ci0gICAgbV9pbnRlcm5hbC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOworICAgIGdsU2FtcGxlQ292ZXJh
Z2UodmFsdWUsIGludmVydCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNjaXNzb3Io
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkK
QEAgLTExOTgsNyArODc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNl
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25zdCBTdHJpbmcmIHNvdXIKICAgICBDU3RyaW5n
IHNvdXJjZUNTID0gcHJlZml4ZWRTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0IGNoYXIqIGRhdGEg
PSBzb3VyY2VDUy5kYXRhKCk7CiAgICAgaW50IGxlbmd0aCA9IHByZWZpeGVkU291cmNlLmxlbmd0
aCgpOwotICAgIG1faW50ZXJuYWwtPnNoYWRlclNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNv
dW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKKyAgICBnbFNoYWRlclNvdXJjZSgoR0x1aW50KSBz
aGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1
aW50IG1hc2spCkBAIC0xMjEwLDcgKzg4OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0
ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBH
QzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxG
dW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICBnbFN0ZW5jaWxGdW5jU2Vw
YXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKQEAgLTEyMjIsNyArOTAxLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQg
bWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgZ2xTdGVu
Y2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNz
KQpAQCAtMTIzNCw3ICs5MTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3Ao
R0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0g
ZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rm
bG9hdCB2YWx1ZSkKQEAgLTEyNTIsMTE1ICs5MzEsMTE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlm
b3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0x
ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9ybTJmKGxvY2F0
aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmZ2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
M2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9h
dCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgZ2xVbmlm
b3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxv
YXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmKGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZv
cm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00ZnYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWkobG9jYXRpb24sIHYw
KTsKKyAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAg
ICBnbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0Rp
bnQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3Jt
MmkobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGlu
dCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgZ2xVbmlm
b3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkg
c2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVu
aWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEs
IEdDM0RpbnQgdjIsIEdDM0RpbnQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGkobG9jYXRpb24sIHYwLCB2
MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aXYobG9jYXRp
b24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJp
eDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCog
YXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwg
c2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2Us
IEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMzY4
LDcgKzEwNDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51c2VQcm9n
cmFtKHByb2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkK
QEAgLTEzNzYsNjEgKzEwNTUsNjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAg
ICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT52YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xWYWxpZGF0ZVByb2dyYW0o
cHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZihpbmRleCwg
djApOworICAgIGdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFy
cmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIy
ZihpbmRleCwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliMmZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52
ZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZihp
bmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0
dHJpYjNmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxv
YXQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOworICAg
IGdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQq
IGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0
ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51
bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50
cHRyIG9mZnNldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUs
IG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwg
c2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+
KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQpCkBAIC0xNDQ4LDcgKzExMjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldEJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVl
KQpAQCAtMTQ2MCw3ICsxMTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2
KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RpbnQqIHZhbHVlKQpAQCAtMTQ3Miw3ICsxMTUxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFt
aXYocHJvZ3JhbSwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ4MCw3ICsxMTU5
LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgp
OworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xP
R19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKIApAQCAtMTQ4OCw3
ICsxMTY3LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4g
IiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgs
ICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwg
JnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShp
bmZvKTsKQEAgLTE0OTksMTQgKzExNzgsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0Rl
bnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5nZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0U2hhZGVy
aXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMTUxNCwx
NCArMTE5MywxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVu
Z3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9f
TE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIEdMY2hh
ciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAgICAgaWYgKCFpbmZvKQog
ICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJJbmZvTG9nKHNo
YWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRl
ciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAg
IGZhc3RGcmVlKGluZm8pOwpAQCAtMTUzNCwxNCArMTIxMywxNCBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3Ro
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4
dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRTaGFkZXJpdihz
aGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSCwgJmxlbmd0aCk7
CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBm
YXN0TWFsbG9jKGxlbmd0aCk7CiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gIiI7CiAK
LSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgsICZzaXplLCBp
bmZvKTsKKyAgICBnbEdldFNoYWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8p
OwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE1
NjQsMTMgKzEyNDMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVy
aXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEcKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwg
bG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwg
dmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIEdDM0RpbnQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkKQEAgLTE1NzgsMTkgKzEyNTcsMTkgQEAgR0MzRGludCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Z2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJm
dihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRl
eCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQq
IHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUp
OworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQog
CiBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lKQpAQCAtMTU5OCw3ICsxMjc3LDcgQEAg
R0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RlbnVtIHAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIAogICAgIEdMdm9pZCogcG9pbnRlciA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFtTmFtZSwgJnBvaW50ZXIpOwor
ICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFtTmFtZSwgJnBvaW50ZXIp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMTYxOSw3ICsxMjk4LDcgQEAgUGxhdGZvcm0z
RE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwot
ICAgIG1faW50ZXJuYWwtPmdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAg
Z2xHZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7
CiB9CiAKQEAgLTE2MjcsMjggKzEzMDYsMjggQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuRnJh
bWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CiB9
CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0oKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJu
IG1faW50ZXJuYWwtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICByZXR1cm4gZ2xDcmVhdGVQcm9ncmFt
KCk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
ICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5SZW5kZXJidWZmZXJz
KC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCiBQbGF0Zm9ybTNET2Jq
ZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2lu
dGVybmFsLT5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAgcmV0dXJuIGdsQ3JlYXRlU2hhZGVyKHR5
cGUpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0
dXJlKCkKQEAgLTE2NjIsMzEgKzEzNDEsMzEgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVC
dWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVCdWZmZXJzKDEsICZi
dWZmZXIpOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1
ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmRlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOworICAgIGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRl
cmJ1ZmZlcik7CisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5kZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbERlbGV0ZVNoYWRl
cihzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTE2OTcsMzAgKzEzNzYsMzAgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9yKEdDM0RlbnVtIGVycm9y
KQogewotICAgIG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CisgICAg
bV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAgbV9pbnRlcm5hbC0+bV9sYXllckNvbXBv
c2l0ZWQgPSB0cnVlOworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsKICAgICAvLyBGSVhNRTog
QW55IGFjY2VsZXJhdGVkIGNvbXBvc2l0b3IgbmVlZHMgdG8gYmUgdG9sZCB0byByZS1yZWFkIGZy
b20gaGVyZS4KLSAgICBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOworICAg
IG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fbGF5
ZXJDb21wb3NpdGVkOworICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAogRXh0ZW5z
aW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7Ci0gICAgaWYgKCFt
X2ludGVybmFsLT5tX2V4dGVuc2lvbnMpCi0gICAgICAgIG1faW50ZXJuYWwtPm1fZXh0ZW5zaW9u
cyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwt
Pm1fZXh0ZW5zaW9ucy5nZXQoKTsKKyAgICBpZiAoIW1fZXh0ZW5zaW9ucykKKyAgICAgICAgbV9l
eHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0KTsKKyAgICByZXR1cm4gbV9l
eHRlbnNpb25zLmdldCgpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURh
dGEoSW1hZ2UqIGltYWdlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87496</attachid>
            <date>2011-03-30 03:46:25 -0700</date>
            <delta_ts>2011-04-26 16:08:22 -0700</delta_ts>
            <desc>clean ups</desc>
            <filename>57154.diff</filename>
            <type>text/plain</type>
            <size>77083</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZWU0NWZlLi42NGU0NjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIx
IEBACisyMDExLTAzLTMwICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTU0CisKKyAgICAgICAgTW9k
aWZpZWQgT3BlbkdMIHN5bWJvbCByZXNvbHZlciB0byBiZSB0cmFuc3BhcmVudCBhbmQgZWFzaWVy
IHRvCisgICAgICAgIG1haW50YWluLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFByb2NzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpk
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpp
c1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0
b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVy
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2Vw
YXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRh
dGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWIxZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIz
Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0Zik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRl
bGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVs
ZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVz
aXplR0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFya0xh
eWVyQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFy
a0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjps
YXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEV4dGVuc2lvbnMpOgorCiAyMDExLTAzLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByODIwOTku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAppbmRleCAzNTFiNDQ1Li5mMzk2YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTg0LDYgKzg0LDkg
QEAgY2xhc3MgRXh0ZW5zaW9uczNEOwogI2lmIFBMQVRGT1JNKE1BQykKIGNsYXNzIEV4dGVuc2lv
bnMzRE9wZW5HTDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorY2xhc3MgRXh0ZW5zaW9uczNE
UXQ7CisjZW5kaWYKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdl
RGF0YTsKQEAgLTg3MSw5ICs4NzQsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZFJlbmRlcmlu
Z1Jlc3VsdHModW5zaWduZWQgY2hhciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSk7CiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKFFUKQorI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2lmICFk
ZWZpbmVkKEFQSUVOVFJZKQorI2RlZmluZSBBUElFTlRSWQorI2VuZGlmCisjZGVmaW5lIEdMX1BS
T0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgXAorICAgIHR5cGVkZWYgUmV0dXJuVmFsdWUg
KEFQSUVOVFJZKiBQcm9jIyNUeXBlKSBQYXJhbXM7IFwKKyAgICBQcm9jIyNUeXBlIFByb2M7Cisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIgorI3VuZGVmIEdMX1BST0MKKyNlbmRp
ZgorICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RRdDsKKyAgICBPd25QdHI8RXh0ZW5zaW9u
czNEUXQ+IG1fZXh0ZW5zaW9uczsKKyAgICBpbnQgbV9wcm9jc0FyZVZhbGlkOworI2VuZGlmCisK
ICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKIAotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgIHR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKICAgICAgICAgU3RyaW5nIGxvZzsKQEAgLTg4
MSwxNiArOTAwLDIwIEBAIHB1YmxpYzoKICAgICB9IFNoYWRlclNvdXJjZUVudHJ5OwogICAgIEhh
c2hNYXA8UGxhdGZvcm0zRE9iamVjdCwgU2hhZGVyU291cmNlRW50cnk+IG1fc2hhZGVyU291cmNl
TWFwOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RP
cGVuR0w7CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKIAogICAgIE93blB0cjxF
eHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgogCiAgICAgQXR0cmlidXRl
cyBtX2F0dHJzOwogICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+ID4gbV92ZXJ0ZXhBcnJheTsKIAor
I2lmIFBMQVRGT1JNKE1BQykKICAgICBDR0xDb250ZXh0T2JqIG1fY29udGV4dE9iajsKICAgICBS
ZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCiAgICAgR0MzRHVpbnQg
bV90ZXh0dXJlLCBtX2NvbXBvc2l0b3JUZXh0dXJlOwogICAgIEdDM0R1aW50IG1fZmJvOwogICAg
IEdDM0R1aW50IG1fZGVwdGhTdGVuY2lsQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MjgwZDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RFByb2NzLmgKQEAgLTAsMCArMSw5MCBAQAorR0xfUFJPQyh2b2lkLCBnbEFjdGl2ZVRleHR1cmUs
IChHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQXR0YWNoU2hhZGVyLCAoR0MzRHVpbnQsIEdD
M0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChHQzNEdWludCwg
R0MzRHVpbnQsIGNvbnN0IGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kQnVmZmVyLCAoR0Mz
RGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIChHQzNE
ZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIChHQzNE
ZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kQ29sb3IsIChHQzNEY2xhbXBm
LCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmKSkKK0dMX1BST0Modm9pZCwgZ2xC
bGVuZEVxdWF0aW9uLCAoR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZSwgKEdDM0RlbnVtLCBHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQmxlbmRGdW5j
U2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkpCitHTF9Q
Uk9DKHZvaWQsIGdsQnVmZmVyRGF0YSwgKEdDM0RlbnVtLCBHQzNEc2l6ZWlwdHIsIGNvbnN0IHZv
aWQqLCBHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQnVmZmVyU3ViRGF0YSwgKEdDM0RlbnVt
LCBHQzNEaW50cHRyLCBHQzNEc2l6ZWlwdHIsIGNvbnN0IHZvaWQqKSkKK0dMX1BST0MoR0MzRGVu
dW0sIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgKEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwg
Z2xDb21waWxlU2hhZGVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEdWludCwgZ2xDcmVhdGVQ
cm9ncmFtLCAoKSkKK0dMX1BST0MoR0MzRHVpbnQsIGdsQ3JlYXRlU2hhZGVyLCAoR0MzRGVudW0p
KQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZUJ1ZmZlcnMsIChHQzNEc2l6ZWksIGNvbnN0IEdDM0R1
aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJhbWVidWZmZXJzLCAoR0MzRHNpemVpLCBj
b25zdCBHQzNEdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVByb2dyYW0sIChHQzNEdWlu
dCkpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVycywgKEdDM0RzaXplaSwgY29u
c3QgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVTaGFkZXIsIChHQzNEdWludCkp
CitHTF9QUk9DKHZvaWQsIGdsRGV0YWNoU2hhZGVyLCAoR0MzRHVpbnQsIEdDM0R1aW50KSkKK0dM
X1BST0Modm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIChHQzNEdWludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIChHQzNEdWludCkpCitHTF9QUk9D
KHZvaWQsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIChHQzNEZW51bSwgR0MzRGVudW0sIEdD
M0RlbnVtLCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQs
IChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEdWludCwgR0MzRGludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsR2VuQnVmZmVycywgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZW5lcmF0ZU1pcG1hcCwgKEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5G
cmFtZWJ1ZmZlcnMsIChHQzNEc2l6ZWksIEdDM0R1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2Vu
UmVuZGVyYnVmZmVycywgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xH
ZXRBY3RpdmVBdHRyaWIsIChHQzNEdWludCwgR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
KiwgR0MzRGludCosIEdDM0RlbnVtKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2
ZVVuaWZvcm0sIChHQzNEdWludCwgR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKiwgR0Mz
RGludCosIEdDM0RlbnVtKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEF0dGFjaGVkU2hh
ZGVycywgKEdDM0R1aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIEdDM0R1aW50KikpCitHTF9Q
Uk9DKEdDM0RpbnQsIGdsR2V0QXR0cmliTG9jYXRpb24sIChHQzNEdWludCwgY29uc3QgY2hhciop
KQorR0xfUFJPQyh2b2lkLCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2LCAoR0MzRGVudW0sIEdDM0Rl
bnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbUluZm9Mb2csIChHQzNEdWludCwgR0MzRHNpemVpLCBH
QzNEc2l6ZWkqLCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbWl2LCAoR0MzRHVp
bnQsIEdDM0RlbnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQqKSkKK0dMX1BST0Modm9p
ZCwgZ2xHZXRTaGFkZXJJbmZvTG9nLCAoR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKiwg
Y2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRlcml2LCAoR0MzRHVpbnQsIEdDM0RlbnVt
LCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVyU291cmNlLCAoR0MzRHVpbnQs
IEdDM0RzaXplaSwgR0MzRHNpemVpKiwgY2hhciopKQorR0xfUFJPQyhHQzNEaW50LCBnbEdldFVu
aWZvcm1Mb2NhdGlvbiwgKEdDM0R1aW50LCBjb25zdCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGds
R2V0VW5pZm9ybWZ2LCAoR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0RmbG9hdCopKQorR0xfUFJPQyh2
b2lkLCBnbEdldFVuaWZvcm1pdiwgKEdDM0R1aW50LCBHQzNEaW50LCBHQzNEaW50KikpCitHTF9Q
Uk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliZnYsIChHQzNEdWludCwgR0MzRGVudW0sIEdDM0Rm
bG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYml2LCAoR0MzRHVpbnQsIEdD
M0RlbnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliUG9pbnRl
cnYsIChHQzNEdWludCwgR0MzRGVudW0sIHZvaWQqKikpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBn
bElzQnVmZmVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc0ZyYW1lYnVm
ZmVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1Byb2dyYW0sIChHQzNE
dWludCkpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElzUmVuZGVyYnVmZmVyLCAoR0MzRHVpbnQp
KQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1NoYWRlciwgKEdDM0R1aW50KSkKK0dMX1BST0Mo
dm9pZCwgZ2xMaW5rUHJvZ3JhbSwgKEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkp
CitHTF9QUk9DKHZvaWQsIGdsU2FtcGxlQ292ZXJhZ2UsIChHQzNEY2xhbXBmLCBHQzNEYm9vbGVh
bikpCitHTF9QUk9DKHZvaWQsIGdsU2hhZGVyU291cmNlLCAoR0MzRHVpbnQsIEdDM0RzaXplaSwg
Y29uc3QgY2hhcioqLCBjb25zdCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsU3RlbmNpbEZ1
bmNTZXBhcmF0ZSwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCwgR0MzRHVpbnQpKQorR0xf
UFJPQyh2b2lkLCBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRHVpbnQpKQor
R0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxPcFNlcGFyYXRlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBH
QzNEZW51bSwgR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0xZiwgKEdDM0RpbnQs
IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFmdiwgKEdDM0RpbnQsIEdDM0Rz
aXplaSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpLCAoR0Mz
RGludCwgR0MzRGludCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpdiwgKEdDM0RpbnQsIEdD
M0RzaXplaSwgY29uc3QgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yZiwgKEdD
M0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMmZ2
LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwg
Z2xVbmlmb3JtMmksIChHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KSkKK0dMX1BST0Modm9pZCwg
Z2xVbmlmb3JtMml2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEaW50KikpCitHTF9Q
Uk9DKHZvaWQsIGdsVW5pZm9ybTNmLCAoR0MzRGludCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdD
M0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNmdiwgKEdDM0RpbnQsIEdDM0RzaXpl
aSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNpLCAoR0MzRGlu
dCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNp
diwgKEdDM0RpbnQsIEdDM0RzaXplaSwgY29uc3QgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBn
bFVuaWZvcm00ZiwgKEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdD
M0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRmdiwgKEdDM0RpbnQsIEdDM0RzaXpl
aSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRpLCAoR0MzRGlu
dCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCkpCitHTF9QUk9DKHZvaWQsIGds
VW5pZm9ybTRpdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgY29uc3QgR0MzRGludCopKQorR0xfUFJP
Qyh2b2lkLCBnbFVuaWZvcm1NYXRyaXgyZnYsIChHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0Rib29s
ZWFuLCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4M2Z2
LCAoR0MzRGludCwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiwgY29uc3QgR0MzRGZsb2F0KikpCitH
TF9QUk9DKHZvaWQsIGdsVW5pZm9ybU1hdHJpeDRmdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgR0Mz
RGJvb2xlYW4sIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVzZVByb2dyYW0s
IChHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsVmFsaWRhdGVQcm9ncmFtLCAoR0MzRHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjFmLCAoR0MzRHVpbnQsIGNvbnN0IEdDM0Rm
bG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliMWZ2LCAoR0MzRHVpbnQsIGNvbnN0
IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjJmLCAoR0MzRHVpbnQs
IGNvbnN0IEdDM0RmbG9hdCwgY29uc3QgR0MzRGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0
ZXhBdHRyaWIyZnYsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQs
IGdsVmVydGV4QXR0cmliM2YsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0LCBjb25zdCBHQzNE
ZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliM2Z2
LCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0
dHJpYjRmLCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCwgY29uc3QgR0MzRGZsb2F0LCBjb25z
dCBHQzNEZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0
cmliNGZ2LCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZl
cnRleEF0dHJpYlBvaW50ZXIsIChHQzNEdWludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0Rib29s
ZWFuLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXgg
NGRhYTRkYy4uZDhiNDQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTUwLDIzOCArNTAs
MjMgQEAgdHlwZWRlZiBjaGFyIEdMY2hhcjsKICNkZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOCAw
eDg4RjAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoQVBJRU5UUlkpCi0jZGVmaW5lIEFQSUVOVFJZ
Ci0jZW5kaWYKLQotI2lmZGVmIFFUX09QRU5HTF9FU18yCi10eXBlZGVmIEdMc2l6ZWlwdHIgR0xz
aXplaXB0clR5cGU7Ci10eXBlZGVmIEdMaW50cHRyIEdMaW50cHRyVHlwZTsKLSNlbHNlCi10eXBl
ZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYgcHRyZGlmZl90IEdMaW50cHRy
VHlwZTsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEFjdGl2ZVRleHR1cmVU
eXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQXR0YWNoU2hhZGVyVHlw
ZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEF0dHJp
YkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZmZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51
bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRDb2xvclR5cGUpIChH
TGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSkoR0xlbnVtLCBHTGVudW0pOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5cGUpKEdMZW51bSBzcmNS
R0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0YVR5cGUpIChHTGVudW0sIEdMc2l6ZWlw
dHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xpbnRwdHJUeXBlLCBHTHNpemVpcHRyVHlw
ZSwgY29uc3QgR0x2b2lkKik7Ci10eXBlZGVmIEdMZW51bSAoQVBJRU5UUlkqIGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xD
b21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMdWludCAoQVBJRU5UUlkqIGds
Q3JlYXRlUHJvZ3JhbVR5cGUpICgpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZKiBnbENyZWF0
ZVNoYWRlclR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVC
dWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUHJvZ3JhbVR5cGUpIChHTHVpbnQp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVSZW5kZXJidWZmZXJzVHlwZSkgKEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0
ZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZXRhY2hT
aGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJUeXBlKSAoR0xlbnVtLCBH
TGVudW0sIEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50LCBHTGlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwg
R0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbmVyYXRlTWlwbWFwVHlwZSkg
KEdMZW51bSB0YXJnZXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5GcmFtZWJ1ZmZl
cnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdl
blJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChHTHVpbnQsIEdMdWludCwgR0xzaXplaSwg
R0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdM
c2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwg
R0x1aW50Kik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRBdHRyaWJMb2NhdGlvblR5
cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0
QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2VHlw
ZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJhbXMpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdM
c2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFByb2dyYW1pdlR5
cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlckluZm9Mb2dUeXBlKSAoR0x1aW50
LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXpl
aSosIGNoYXIqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1Mb2NhdGlv
blR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
R2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYmZ2VHlwZSkgKEdMdWlu
dCwgR0xlbnVtLCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRl
eEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUpIChHTHVpbnQsIEdMZW51bSwg
R0x2b2lkKiopOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzQnVmZmVyVHlwZSkg
KEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNGcmFtZWJ1ZmZlclR5
cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzUHJvZ3JhbVR5
cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzUmVuZGVyYnVm
ZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNTaGFk
ZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsTGlua1Byb2dyYW1U
eXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlwZSkgKEdMY2xhbXBmLCBHTGJvb2xlYW4p
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFkZXJTb3VyY2VUeXBlKSAoR0x1aW50LCBH
THNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMaW50LCBH
THVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsTWFza1NlcGFyYXRlVHlw
ZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE9w
U2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkgKEdMaW50LCBHTGZsb2F0KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29u
c3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWlUeXBlKSAo
R0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFpdlR5cGUp
IChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xm
bG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmlUeXBlKSAoR0xpbnQs
IEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yaXZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNpVHlw
ZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZs
b2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQs
IEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpdlR5cGUpIChHTGlu
dCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZs
b2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgzZnZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJv
b2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVXNlUHJv
Z3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWYWxpZGF0ZVBy
b2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0
cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUpIChHTHVpbnQsIGNvbnN0
IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0
ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwg
Y29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZs
b2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZ2VHlwZSkgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNpemVpLCBjb25zdCBH
THZvaWQqKTsKLQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCA6IHB1YmxpYyBRR3Jh
cGhpY3NPYmplY3QgewogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cp
OworICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqLCBIb3N0
V2luZG93Kik7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wg
aXNWYWxpZCgpIHsgcmV0dXJuIG1fdmFsaWQ7IH0KLQogICAgIFFHTFdpZGdldCogZ2V0Vmlld3Bv
cnRHTFdpZGdldCgpOwotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwog
ICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0q
LCBRV2lkZ2V0Kik7CiAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogCi0gICAgZ2xB
Y3RpdmVUZXh0dXJlVHlwZSBhY3RpdmVUZXh0dXJlOwotICAgIGdsQXR0YWNoU2hhZGVyVHlwZSBh
dHRhY2hTaGFkZXI7Ci0gICAgZ2xCaW5kQXR0cmliTG9jYXRpb25UeXBlIGJpbmRBdHRyaWJMb2Nh
dGlvbjsKLSAgICBnbEJpbmRCdWZmZXJUeXBlIGJpbmRCdWZmZXI7Ci0gICAgZ2xCaW5kRnJhbWVi
dWZmZXJUeXBlIGJpbmRGcmFtZWJ1ZmZlcjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXJUeXBlIGJp
bmRSZW5kZXJidWZmZXI7Ci0gICAgZ2xCbGVuZENvbG9yVHlwZSBibGVuZENvbG9yOwotICAgIGds
QmxlbmRFcXVhdGlvblR5cGUgYmxlbmRFcXVhdGlvbjsKLSAgICBnbEJsZW5kRXF1YXRpb25TZXBh
cmF0ZVR5cGUgYmxlbmRFcXVhdGlvblNlcGFyYXRlOwotICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVU
eXBlIGJsZW5kRnVuY1NlcGFyYXRlOwotICAgIGdsQnVmZmVyRGF0YVR5cGUgYnVmZmVyRGF0YTsK
LSAgICBnbEJ1ZmZlclN1YkRhdGFUeXBlIGJ1ZmZlclN1YkRhdGE7Ci0gICAgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzVHlwZSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzOwotICAgIGdsQ29tcGlsZVNo
YWRlclR5cGUgY29tcGlsZVNoYWRlcjsKLSAgICBnbENyZWF0ZVByb2dyYW1UeXBlIGNyZWF0ZVBy
b2dyYW07Ci0gICAgZ2xDcmVhdGVTaGFkZXJUeXBlIGNyZWF0ZVNoYWRlcjsKLSAgICBnbERlbGV0
ZUJ1ZmZlcnNUeXBlIGRlbGV0ZUJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBl
IGRlbGV0ZUZyYW1lYnVmZmVyczsKLSAgICBnbERlbGV0ZVByb2dyYW1UeXBlIGRlbGV0ZVByb2dy
YW07Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzVHlwZSBkZWxldGVSZW5kZXJidWZmZXJzOwot
ICAgIGdsRGVsZXRlU2hhZGVyVHlwZSBkZWxldGVTaGFkZXI7Ci0gICAgZ2xEZXRhY2hTaGFkZXJU
eXBlIGRldGFjaFNoYWRlcjsKLSAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUgZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBl
IGVuYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJU
eXBlIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRU
eXBlIGZyYW1lYnVmZmVyVGV4dHVyZTJEOwotICAgIGdsR2VuQnVmZmVyc1R5cGUgZ2VuQnVmZmVy
czsKLSAgICBnbEdlbmVyYXRlTWlwbWFwVHlwZSBnZW5lcmF0ZU1pcG1hcDsKLSAgICBnbEdlbkZy
YW1lYnVmZmVyc1R5cGUgZ2VuRnJhbWVidWZmZXJzOwotICAgIGdsR2VuUmVuZGVyYnVmZmVyc1R5
cGUgZ2VuUmVuZGVyYnVmZmVyczsKLSAgICBnbEdldEFjdGl2ZUF0dHJpYlR5cGUgZ2V0QWN0aXZl
QXR0cmliOwotICAgIGdsR2V0QWN0aXZlVW5pZm9ybVR5cGUgZ2V0QWN0aXZlVW5pZm9ybTsKLSAg
ICBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUgZ2V0QXR0YWNoZWRTaGFkZXJzOwotICAgIGdsR2V0
QXR0cmliTG9jYXRpb25UeXBlIGdldEF0dHJpYkxvY2F0aW9uOwotICAgIGdsR2V0QnVmZmVyUGFy
YW1ldGVyaXZUeXBlIGdldEJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZUeXBlIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2OwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlIGdldFByb2dyYW1JbmZvTG9nOwotICAg
IGdsR2V0UHJvZ3JhbWl2VHlwZSBnZXRQcm9ncmFtaXY7Ci0gICAgZ2xHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdlR5cGUgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRTaGFk
ZXJJbmZvTG9nVHlwZSBnZXRTaGFkZXJJbmZvTG9nOwotICAgIGdsR2V0U2hhZGVyaXZUeXBlIGdl
dFNoYWRlcml2OwotICAgIGdsR2V0U2hhZGVyU291cmNlVHlwZSBnZXRTaGFkZXJTb3VyY2U7Ci0g
ICAgZ2xHZXRVbmlmb3JtZnZUeXBlIGdldFVuaWZvcm1mdjsKLSAgICBnbEdldFVuaWZvcm1pdlR5
cGUgZ2V0VW5pZm9ybWl2OwotICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uVHlwZSBnZXRVbmlmb3Jt
TG9jYXRpb247Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUgZ2V0VmVydGV4QXR0cmliZnY7
Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUgZ2V0VmVydGV4QXR0cmliaXY7Ci0gICAgZ2xH
ZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnY7Ci0gICAg
Z2xJc0J1ZmZlclR5cGUgaXNCdWZmZXI7Ci0gICAgZ2xJc0ZyYW1lYnVmZmVyVHlwZSBpc0ZyYW1l
YnVmZmVyOwotICAgIGdsSXNQcm9ncmFtVHlwZSBpc1Byb2dyYW07Ci0gICAgZ2xJc1JlbmRlcmJ1
ZmZlclR5cGUgaXNSZW5kZXJidWZmZXI7Ci0gICAgZ2xJc1NoYWRlclR5cGUgaXNTaGFkZXI7Ci0g
ICAgZ2xMaW5rUHJvZ3JhbVR5cGUgbGlua1Byb2dyYW07Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlVHlwZSByZW5kZXJidWZmZXJTdG9yYWdlOwotICAgIGdsU2FtcGxlQ292ZXJhZ2VUeXBlIHNh
bXBsZUNvdmVyYWdlOwotICAgIGdsU2hhZGVyU291cmNlVHlwZSBzaGFkZXJTb3VyY2U7Ci0gICAg
Z2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSBzdGVuY2lsRnVuY1NlcGFyYXRlOwotICAgIGdsU3Rl
bmNpbE1hc2tTZXBhcmF0ZVR5cGUgc3RlbmNpbE1hc2tTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxP
cFNlcGFyYXRlVHlwZSBzdGVuY2lsT3BTZXBhcmF0ZTsKLSAgICBnbFVuaWZvcm0xZlR5cGUgdW5p
Zm9ybTFmOwotICAgIGdsVW5pZm9ybTFmdlR5cGUgdW5pZm9ybTFmdjsKLSAgICBnbFVuaWZvcm0x
aVR5cGUgdW5pZm9ybTFpOwotICAgIGdsVW5pZm9ybTFpdlR5cGUgdW5pZm9ybTFpdjsKLSAgICBn
bFVuaWZvcm0yZlR5cGUgdW5pZm9ybTJmOwotICAgIGdsVW5pZm9ybTJmdlR5cGUgdW5pZm9ybTJm
djsKLSAgICBnbFVuaWZvcm0yaVR5cGUgdW5pZm9ybTJpOwotICAgIGdsVW5pZm9ybTJpdlR5cGUg
dW5pZm9ybTJpdjsKLSAgICBnbFVuaWZvcm0zZlR5cGUgdW5pZm9ybTNmOwotICAgIGdsVW5pZm9y
bTNmdlR5cGUgdW5pZm9ybTNmdjsKLSAgICBnbFVuaWZvcm0zaVR5cGUgdW5pZm9ybTNpOwotICAg
IGdsVW5pZm9ybTNpdlR5cGUgdW5pZm9ybTNpdjsKLSAgICBnbFVuaWZvcm00ZlR5cGUgdW5pZm9y
bTRmOwotICAgIGdsVW5pZm9ybTRmdlR5cGUgdW5pZm9ybTRmdjsKLSAgICBnbFVuaWZvcm00aVR5
cGUgdW5pZm9ybTRpOwotICAgIGdsVW5pZm9ybTRpdlR5cGUgdW5pZm9ybTRpdjsKLSAgICBnbFVu
aWZvcm1NYXRyaXgyZnZUeXBlIHVuaWZvcm1NYXRyaXgyZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4
M2Z2VHlwZSB1bmlmb3JtTWF0cml4M2Z2OwotICAgIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUgdW5p
Zm9ybU1hdHJpeDRmdjsKLSAgICBnbFVzZVByb2dyYW1UeXBlIHVzZVByb2dyYW07Ci0gICAgZ2xW
YWxpZGF0ZVByb2dyYW1UeXBlIHZhbGlkYXRlUHJvZ3JhbTsKLSAgICBnbFZlcnRleEF0dHJpYjFm
VHlwZSB2ZXJ0ZXhBdHRyaWIxZjsKLSAgICBnbFZlcnRleEF0dHJpYjFmdlR5cGUgdmVydGV4QXR0
cmliMWZ2OwotICAgIGdsVmVydGV4QXR0cmliMmZUeXBlIHZlcnRleEF0dHJpYjJmOwotICAgIGds
VmVydGV4QXR0cmliMmZ2VHlwZSB2ZXJ0ZXhBdHRyaWIyZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIz
ZlR5cGUgdmVydGV4QXR0cmliM2Y7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlIHZlcnRleEF0
dHJpYjNmdjsKLSAgICBnbFZlcnRleEF0dHJpYjRmVHlwZSB2ZXJ0ZXhBdHRyaWI0ZjsKLSAgICBn
bFZlcnRleEF0dHJpYjRmdlR5cGUgdmVydGV4QXR0cmliNGZ2OwotICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlclR5cGUgdmVydGV4QXR0cmliUG9pbnRlcjsKLQotICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIG1fYXR0cnM7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsK
ICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CiAgICAgUUdMV2lkZ2V0KiBtX2dsV2lkZ2V0
OwogICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0OwotICAgIFFSZWN0RiBtX2JvdW5k
aW5nUmVjdDsKLSAgICBHTHVpbnQgbV90ZXh0dXJlOwotICAgIEdMdWludCBtX2NhbnZhc0ZibzsK
LSAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAg
IGJvb2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBt
X3N5bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNp
b25zOwotCi1wcml2YXRlOgogCiAgICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5n
JiBwcm9jKTsKLSAgICBib29sIG1fdmFsaWQ7CiB9OwogCi0jaWYgZGVmaW5lZCAoUVRfT1BFTkdM
X0VTXzIpIAotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNlCi0jZGVm
aW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihn
ZXRQcm9jQWRkcmVzcygjUHJvYykpOwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIGRlZmluZWQgKFFUX09QRU5HTF9FU18y
KQpAQCAtMjkxLDE3ICs3NiwxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29t
cGxpYW50KCkgY29uc3QKICNlbmRpZgogfQogCi1HcmFwaGljc0NvbnRleHQzREludGVybmFsOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0
dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQotICAgIDogbV9hdHRycyhhdHRycykKK0dyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCisgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKICAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93KQogICAgICwgbV9nbFdp
ZGdldCgwKQogICAgICwgbV92aWV3cG9ydEdMV2lkZ2V0KDApCi0gICAgLCBtX3RleHR1cmUoMCkK
LSAgICAsIG1fY2FudmFzRmJvKDApCi0gICAgLCBtX2N1cnJlbnRGYm8oMCkKLSAgICAsIG1fZGVw
dGhCdWZmZXIoMCkKLSAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQotICAgICwgbV92YWxp
ZCh0cnVlKQogewogICAgIG1fdmlld3BvcnRHTFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRnZXQo
KTsKIApAQCAtMzEwLDEzOSArODksOCBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dAogICAgIGVs
c2UKICAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoKTsKIAotICAgIGlmICghbV9n
bFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0
M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIG1fdmFsaWQg
PSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEdlb21ldHJ5IGNhbiBi
ZSBzZXQgdG8gemVybyBiZWNhdXNlIG1fZ2xXaWRnZXQgaXMgdXNlZCBvbmx5IGZvciBpdHMgUUdM
Q29udGV4dC4KICAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRyeSgwLCAwLCAwLCAwKTsKLQotI2lm
IGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgbV9hdHRycy5zdGVuY2lsID0gZmFsc2U7Ci0j
ZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIG1fYXR0cnMuZGVwdGggPSB0
cnVlOwotI2VuZGlmCi0gICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKLQogICAgIG1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0KLSAgICBhY3RpdmVUZXh0dXJlID0gR0VUX1BST0NfQURE
UkVTUyhnbEFjdGl2ZVRleHR1cmUpOwotICAgIGF0dGFjaFNoYWRlciA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xBdHRhY2hTaGFkZXIpOwotICAgIGJpbmRBdHRyaWJMb2NhdGlvbiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOwotICAgIGJpbmRCdWZmZXIgPSBHRVRfUFJPQ19B
RERSRVNTKGdsQmluZEJ1ZmZlcik7Ci0gICAgYmluZEZyYW1lYnVmZmVyID0gR0VUX1BST0NfQURE
UkVTUyhnbEJpbmRGcmFtZWJ1ZmZlcik7Ci0gICAgYmluZFJlbmRlcmJ1ZmZlciA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsKLSAgICBibGVuZENvbG9yID0gR0VUX1BST0Nf
QUREUkVTUyhnbEJsZW5kQ29sb3IpOwotICAgIGJsZW5kRXF1YXRpb24gPSBHRVRfUFJPQ19BRERS
RVNTKGdsQmxlbmRFcXVhdGlvbik7Ci0gICAgYmxlbmRFcXVhdGlvblNlcGFyYXRlID0gR0VUX1BS
T0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSk7Ci0gICAgYmxlbmRGdW5jU2VwYXJh
dGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2VwYXJhdGUpOwotICAgIGJ1ZmZlckRh
dGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7Ci0gICAgYnVmZmVyU3ViRGF0YSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJTdWJEYXRhKTsKLSAgICBjaGVja0ZyYW1lYnVmZmVy
U3RhdHVzID0gR0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMpOwotICAg
IGNvbXBpbGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ29tcGlsZVNoYWRlcik7Ci0gICAg
Y3JlYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVQcm9ncmFtKTsKLSAgICBj
cmVhdGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlU2hhZGVyKTsKLSAgICBkZWxl
dGVCdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUJ1ZmZlcnMpOwotICAgIGRlbGV0
ZUZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVGcmFtZWJ1ZmZlcnMpOwot
ICAgIGRlbGV0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlUHJvZ3JhbSk7Ci0g
ICAgZGVsZXRlUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVSZW5kZXJi
dWZmZXJzKTsKLSAgICBkZWxldGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlU2hh
ZGVyKTsKLSAgICBkZXRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGV0YWNoU2hhZGVy
KTsKLSAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKTsKLSAgICBnZW5CdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdl
bkJ1ZmZlcnMpOwotICAgIGdlbmVyYXRlTWlwbWFwID0gR0VUX1BST0NfQUREUkVTUyhnbEdlbmVy
YXRlTWlwbWFwKTsKLSAgICBnZW5GcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2Vu
RnJhbWVidWZmZXJzKTsKLSAgICBnZW5SZW5kZXJidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhn
bEdlblJlbmRlcmJ1ZmZlcnMpOwotICAgIGdldEFjdGl2ZUF0dHJpYiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZXRBY3RpdmVBdHRyaWIpOwotICAgIGdldEFjdGl2ZVVuaWZvcm0gPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7Ci0gICAgZ2V0QXR0YWNoZWRTaGFkZXJzID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hhZGVycyk7Ci0gICAgZ2V0QXR0cmliTG9jYXRp
b24gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9jYXRpb24pOwotICAgIGdldEJ1ZmZl
clBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEJ1ZmZlclBhcmFtZXRlcml2KTsK
LSAgICBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0UHJvZ3Jh
bUluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbUluZm9Mb2cpOwotICAgIGdl
dFByb2dyYW1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtaXYpOwotICAgIGdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KTsKLSAgICBnZXRTaGFkZXJJbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhn
bEdldFNoYWRlckluZm9Mb2cpOwotICAgIGdldFNoYWRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhn
bEdldFNoYWRlcml2KTsKLSAgICBnZXRTaGFkZXJTb3VyY2UgPSBHRVRfUFJPQ19BRERSRVNTKGds
R2V0U2hhZGVyU291cmNlKTsKLSAgICBnZXRVbmlmb3JtZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
R2V0VW5pZm9ybWZ2KTsKLSAgICBnZXRVbmlmb3JtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0
VW5pZm9ybWl2KTsKLSAgICBnZXRVbmlmb3JtTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGds
R2V0VW5pZm9ybUxvY2F0aW9uKTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJmdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdik7Ci0gICAgZ2V0VmVydGV4QXR0cmliaXYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOwotICAgIGdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KTsKLSAg
ICBpc0J1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7Ci0gICAgaXNGcmFtZWJ1
ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0ZyYW1lYnVmZmVyKTsKLSAgICBpc1Byb2dyYW0g
PSBHRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsKLSAgICBpc1JlbmRlcmJ1ZmZlciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7Ci0gICAgaXNTaGFkZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsSXNTaGFkZXIpOwotICAgIGxpbmtQcm9ncmFtID0gR0VUX1BST0NfQUREUkVT
UyhnbExpbmtQcm9ncmFtKTsKLSAgICByZW5kZXJidWZmZXJTdG9yYWdlID0gR0VUX1BST0NfQURE
UkVTUyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwotICAgIHNhbXBsZUNvdmVyYWdlID0gR0VUX1BS
T0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKLSAgICBzaGFkZXJTb3VyY2UgPSBHRVRfUFJP
Q19BRERSRVNTKGdsU2hhZGVyU291cmNlKTsKLSAgICBzdGVuY2lsRnVuY1NlcGFyYXRlID0gR0VU
X1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpOwotICAgIHN0ZW5jaWxNYXNrU2Vw
YXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSk7Ci0gICAgc3Rl
bmNpbE9wU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE9wU2VwYXJhdGUpOwot
ICAgIHVuaWZvcm0xZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWYpOwotICAgIHVuaWZv
cm0xZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7Ci0gICAgdW5pZm9ybTFpID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7Ci0gICAgdW5pZm9ybTFpdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtMWl2KTsKLSAgICB1bmlmb3JtMmYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTJmKTsKLSAgICB1bmlmb3JtMmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm0yZnYpOwotICAgIHVuaWZvcm0yaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmkpOwot
ICAgIHVuaWZvcm0yaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpdik7Ci0gICAgdW5p
Zm9ybTNmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZik7Ci0gICAgdW5pZm9ybTNmdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsKLSAgICB1bmlmb3JtM2kgPSBHRVRfUFJP
Q19BRERSRVNTKGdsVW5pZm9ybTNpKTsKLSAgICB1bmlmb3JtM2l2ID0gR0VUX1BST0NfQUREUkVT
UyhnbFVuaWZvcm0zaXYpOwotICAgIHVuaWZvcm00ZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtNGYpOwotICAgIHVuaWZvcm00ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRmdik7
Ci0gICAgdW5pZm9ybTRpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aSk7Ci0gICAgdW5p
Zm9ybTRpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGl2KTsKLSAgICB1bmlmb3JtTWF0
cml4MmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgyZnYpOwotICAgIHVuaWZv
cm1NYXRyaXgzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDNmdik7Ci0gICAg
dW5pZm9ybU1hdHJpeDRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4NGZ2KTsK
LSAgICB1c2VQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFVzZVByb2dyYW0pOwotICAgIHZh
bGlkYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWYWxpZGF0ZVByb2dyYW0pOwotICAg
IHZlcnRleEF0dHJpYjFmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjFmKTsKLSAg
ICB2ZXJ0ZXhBdHRyaWIxZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMWZ2KTsK
LSAgICB2ZXJ0ZXhBdHRyaWIyZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIyZik7
Ci0gICAgdmVydGV4QXR0cmliMmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjJm
dik7Ci0gICAgdmVydGV4QXR0cmliM2YgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmli
M2YpOwotICAgIHZlcnRleEF0dHJpYjNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRy
aWIzZnYpOwotICAgIHZlcnRleEF0dHJpYjRmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0
dHJpYjRmKTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliNGZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYlBvaW50ZXIpOwotCi0gICAgaWYgKCFtX3ZhbGlkKSB7Ci0gICAgICAgIExP
R19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVkZWQgT3BlbkdMIGV4dGVuc2lvbnMg
YXJlIG5vdCBhdmFpbGFibGUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIENy
ZWF0ZSBidWZmZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KLSAgICBnZW5GcmFtZWJ1ZmZlcnMoLyog
Y291bnQgKi8gMSwgJm1fY2FudmFzRmJvKTsKLQotICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4
dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV90ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBf
VCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGdsQmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwotCi0gICAgaWYgKG1fYXR0cnMuZGVw
dGgpCi0gICAgICAgIGdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhCdWZm
ZXIpOwotCi0gICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBzZXQgaW5pdGlhbCBjbGVhciBjb2xv
ciB0byBibGFjay4KLSAgICBtX2N1cnJlbnRGYm8gPSBtX2NhbnZhc0ZibzsKLSAgICBiaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7Ci0g
ICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkKQEAgLTQ2OSw2MyArMTE3
LDYgQEAgc3RhdGljIGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQog
ICAgIHJldHVybiAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYg
MHhmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpZiAod2lk
dGggPT0gbV9ib3VuZGluZ1JlY3Qud2lkdGgoKSAmJiBoZWlnaHQgPT0gbV9ib3VuZGluZ1JlY3Qu
aGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYm91bmRpbmdSZWN0ID0gUVJlY3RG
KFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBtX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotCi0gICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgotICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAg
aWYgKG1fYXR0cnMuYWxwaGEpCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdp
ZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7Ci0gICAgZWxzZQot
ICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxl
dmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRl
ciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdO
RURfQllURSwgLyogZGF0YSAqLyAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7Ci0gICAgICAg
IC8vIENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgotICAgICAgICBiaW5kUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwot
I2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKLSNlbHNlCi0gICAgICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwpCi0gICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQs
IHdpZHRoLCBoZWlnaHQpOwotI2VuZGlmCi0gICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0
IGNhbnZhcyBGQk8uCi0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9jYW52YXNGYm8pOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKLSAgICBp
ZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNI
TUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0j
aWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAg
ICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSNlbmRpZgotCi0gICAgR0xlbnVt
IHN0YXR1cyA9IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9DT01QTEVURSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52
YXMgRkJPIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGludCBjbGVhckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9C
SVQ7Ci0gICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkK
LSAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJf
QklUOwotCi0gICAgZ2xDbGVhcihjbGVhckZsYWdzKTsKLSAgICBnbEZsdXNoKCk7Ci19Ci0KIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNv
bnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7
CiAgICAgUV9VTlVTRUQod2lkZ2V0KTsKQEAgLTUzNiw3ICsxMjcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVP
cHRpb25HcmFwaAogICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRleHQuCiAgICAgUUdM
V2lkZ2V0KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdpZGdldCgpOwogICAgIGlm
ICh2aWV3cG9ydEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gbV92aWV3cG9ydEdMV2lk
Z2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gcGFpbnRlci0+ZGV2aWNlKCkpIHsKLSAgICAgICAg
dmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV90ZXh0dXJlKTsKKyAgICAgICAg
dmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV9jb250ZXh0LT5tX2NvbXBvc2l0
b3JUZXh0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTQ1LDEwICsxMzYsMTcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRl
ciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKICAgICBt
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQorICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJv
KTsKKyNlbmRpZgogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKLQotICAgIGJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisjaWYg
ZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZibyk7CisjZWxzZQorICAg
IG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOworI2VuZGlmCiAKICAgICAvLyBPcGVuR0wgZ2l2
ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20g
bGVmdAogICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4g
YXQgdGhlIHRvcCBsZWZ0LgpAQCAtNTc4LDcgKzE3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdy
YXBoCiAKIFFSZWN0RiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGluZ1JlY3QoKSBj
b25zdAogewotICAgIHJldHVybiBtX2JvdW5kaW5nUmVjdDsKKyAgICByZXR1cm4gUVJlY3RGKFFQ
b2ludEYoMCwgMCksIFFTaXplRihtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQt
Pm1fY3VycmVudEhlaWdodCkpOwogfQogCiB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCkBAIC01ODgsMTMgKzE4NiwxMyBA
QCB2b2lkKiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25zdCBT
dHJpbmcmIHByb2MpCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICAgICAg
U3RyaW5nIG5hbWVXaXRoRXh0ID0gcHJvYyArIGV4dFtpXTsKIAotICAgICAgICB2b2lkKiBhZGRy
ID0gbV9nbFdpZGdldC0+Y29udGV4dCgpLT5nZXRQcm9jQWRkcmVzcyhuYW1lV2l0aEV4dC51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+
Z2V0UHJvY0FkZHJlc3MoUVN0cmluZzo6ZnJvbUFzY2lpKG5hbWVXaXRoRXh0LnV0ZjgoKS5kYXRh
KCkpKTsKICAgICAgICAgaWYgKGFkZHIpIAogICAgICAgICAgICAgcmV0dXJuIGFkZHI7CiAgICAg
fQogCiAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogRGlkIG5vdCBmaW5kIEdMIGZ1
bmN0aW9uICVzIiwgcHJvYy51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3ZhbGlkID0gZmFsc2U7Cisg
ICAgbV9jb250ZXh0LT5tX3Byb2NzQXJlVmFsaWQgPSBmYWxzZTsKICAgICByZXR1cm4gMDsKIH0K
IApAQCAtNjA4LDEwICsyMDYsNjggQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmkKIH0KIAogR3Jh
cGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sKQotICAgIDogbV9pbnRl
cm5hbChuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpCisg
ICAgOiBtX3Byb2NzQXJlVmFsaWQodHJ1ZSkKKyAgICAsIG1fY3VycmVudFdpZHRoKDApCisgICAg
LCBtX2N1cnJlbnRIZWlnaHQoMCkKKyAgICAsIG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX3RleHR1
cmUoMCkKKyAgICAsIG1fY29tcG9zaXRvclRleHR1cmUoMCkKKyAgICAsIG1fZmJvKDApCisgICAg
LCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQorICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2Up
CisgICAgLCBtX2ludGVybmFsQ29sb3JGb3JtYXQoMCkKKyAgICAsIG1fYm91bmRGQk8oMCkKKyAg
ICAsIG1fYWN0aXZlVGV4dHVyZSgwKQorICAgICwgbV9ib3VuZFRleHR1cmUwKDApCisgICAgLCBt
X211bHRpc2FtcGxlRkJPKDApCisgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVy
KDApCisgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKKyAgICAsIG1faW50ZXJuYWwo
bmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwodGhpcywgaG9zdFdpbmRvdykpCiB7Ci0gICAg
aWYgKCFtX2ludGVybmFsLT5pc1ZhbGlkKCkpCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikK
KyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKKyNlbHNlCisgICAgaWYgKG1fYXR0cnMuc3Rl
bmNpbCkKKyAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2F0dHJz
LmFudGlhbGlhcyA9IGZhbHNlOworCisgICAgaWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lk
Z2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKICAgICAgICAgbV9pbnRlcm5hbCA9IDA7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyNk
ZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBQcm9jID0gcmVpbnRlcnBy
ZXRfY2FzdDxQcm9jIyNUeXBlPihtX2ludGVybmFsLT5nZXRQcm9jQWRkcmVzcygjUHJvYykpOwor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJvY3MuaCIKKyN1bmRlZiBHTF9QUk9DCisjZW5k
aWYKKworICAgIGlmICghbV9wcm9jc0FyZVZhbGlkKSB7CisgICAgICAgIExPR19FUlJPUigiR3Jh
cGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVkZWQgT3BlbkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFp
bGFibGUiKTsKKyAgICAgICAgbV9pbnRlcm5hbCA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCisgICAgZ2xHZW5G
cmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZmJvKTsKKworICAgIGdsR2VuVGV4dHVyZXMo
MSwgJm1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsVGV4UGFyYW1l
dGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQ
YXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
OworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCk7CisKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisKKyAgICAvLyBCaW5k
IGNhbnZhcyBGQk8gYW5kIHNldCBpbml0aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgorICAgIG1f
Ym91bmRGQk8gPSBtX2ZibzsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwg
MC4wKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCkBAIC02
MjUsNyArMjgxLDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQz
RDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW50
ZXJuYWwtPm1fdGV4dHVyZTsKKyAgICByZXR1cm4gbV9jb21wb3NpdG9yVGV4dHVyZTsKIH0KIAog
UGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdApA
QCAtNjU2LDEzICszMTIsNjMgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIGlmICh3aWR0
aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0IHx8ICghbV9p
bnRlcm5hbCkpCisgICAgaWYgKCFtX2ludGVybmFsKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoKHdpZHRoID09IG1fY3VycmVudFdpZHRoICYmIGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQp
IHx8ICghbV9pbnRlcm5hbCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY3VycmVudFdpZHRo
ID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwogCi0gICAgbV9pbnRlcm5h
bC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworCisgICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgorICAgIGdsQmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUp
OworICAgIGlmIChtX2F0dHJzLmFscGhhKQorICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOworICAg
IGVsc2UKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCB3aWR0aCwgaGVpZ2h0LCAv
KiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAobV9hdHRycy5kZXB0aCkgewor
ICAgICAgICAvLyBDcmVhdGUgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4KKyAgICAgICAgZ2xC
aW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgICAgICBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKKyNlbHNlCisg
ICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lM
OCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgorICAgICAgICBn
bEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Cisg
ICAgfQorCisgICAgLy8gQ29uc3RydWN0IGNhbnZhcyBGQk8uCisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fY29tcG9zaXRvclRleHR1cmUsIDApOworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAgICAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyNpZiAhZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2VuZGlmCisKKyAgICBHTGVudW0gc3RhdHVz
ID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Uik7CisgICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09N
UExFVEUpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFzIEZC
TyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpbnQgY2xlYXJGbGFncyA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUOwor
ICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOworICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAg
ICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsK
KworICAgIGdsQ2xlYXIoY2xlYXJGbGFncyk7CisgICAgZ2xGbHVzaCgpOwogfQogCiBJbnRTaXpl
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpCkBAIC02NzMs
NyArMzc5LDcgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51
bSB0ZXh0dXJlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRl
eHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAt
NjgxLDcgKzM4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVy
KTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3Qq
IHNoYWRlcnMpCkBAIC02OTIsMzMgKzM5OCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbQog
ICAgIH0KIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
Z2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7Cisg
ICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJz
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwg
aW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJv
Z3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZl
cikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0
YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1
ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bV9j
dXJyZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Ci0g
ICAgbV9pbnRlcm5hbC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJy
ZW50RmJvKTsKKyAgICBtX2JvdW5kRkJPID0gYnVmZmVyID8gYnVmZmVyIDogbV9mYm87CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2JvdW5kRkJPKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRl
cmJ1ZmZlcik7CisgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC03MzAsMTkgKzQzNiwxOSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IoR0MzRGNs
YW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBh
bHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGds
QmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRp
b24obW9kZSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uKG1vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVu
dW0gbW9kZUFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVB
bHBoYSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3Is
IEdDM0RlbnVtIGRmYWN0b3IpCkBAIC03NTQsMzEgKzQ2MCwzMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwg
R0MzRGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhh
KTsKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0
QWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVt
IHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVy
RGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0
YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUs
IGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0YXJn
ZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBk
YXRhLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXpl
LCBkYXRhKTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEp
OwogfQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0
YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0Rj
bGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBAIC04MTksNyArNTI1LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsK
KyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y29weVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC04NjcsNyArNTczLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hh
ZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2Fi
bGUoR0MzRGVudW0gY2FwKQpAQCAtODc5LDcgKzU4NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJs
ZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwg
R0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtOTAzLDcgKzYwOSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkKQEAgLTky
MSwxMyArNjI3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1
ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0
LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1
ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2
ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0
YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJv
bnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC05MzksNyArNjQ1LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZW5lcmF0ZU1pcG1hcCh0
YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKIH0KIAogYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC05NTIsMTQgKzY1OCwxNCBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEdWludCBpbmRleAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGlj
c0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAog
ICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAg
R0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0g
dHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5k
ZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xH
ZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZz
aXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFz
dEZyZWUobmFtZSk7CkBAIC05ODQsMTQgKzY5MCwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGlu
dCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihzdGF0aWNfY2Fz
dDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1fTUFY
X0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1
aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5H
VEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RNYWxs
b2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNp
emUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFjdGl2
ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwg
Jm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVVbmlmb3Jt
KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAg
ICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTAxMiwyMCArNzE4LDIwIEBAIGludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmli
dXRlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fYXR0cnM7CisgICAgcmV0dXJuIG1f
YXR0cnM7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiB7Ci0g
ICAgaWYgKG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsKLSAgICAg
ICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0gbV9pbnRlcm5hbC0+bV9z
eW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgp
ID4gMCkgeworICAgICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0ZXIgPSBt
X3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOwogICAgICAgICBHQzNEZW51bSBlcnIgPSAqaXRlcjsK
LSAgICAgICAgbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOworICAg
ICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRlcik7CiAgICAgICAgIHJldHVybiBlcnI7
CiAgICAgfQogCkBAIC0xMDUxLDcgKzc1Nyw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4
dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdM
X0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1ZmZlcik7CisgICAgcmV0dXJuIGds
SXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
RW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC0xMDY2LDcgKzc3Miw3IEBAIEdDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZm
ZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0ZyYW1lYnVm
ZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVy
KTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMDc1LDcgKzc4MSw3IEBAIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQcm9ncmFtKHByb2dyYW0pOwor
ICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVy
KQpAQCAtMTA4NCw3ICs3OTAsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNS
ZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiAgICAgICAgIHJldHVy
biBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIp
OworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKQEAgLTEwOTMsNyArNzk5LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7
CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gZ2xJc1NoYWRl
cihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTExMTUsNyArODIxLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewog
ICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsTGlu
a1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3Rv
cmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTExNjYsMTMgKzg3Miwx
MyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5k
aWYKLSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxm
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CisgICAgZ2xTYW1wbGVDb3Zl
cmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3Nv
cihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
KQpAQCAtMTE5OCw3ICs5MDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3Vy
Y2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogICAgIENTdHJp
bmcgc291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hhciogZGF0
YSA9IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVuZ3RoID0gcHJlZml4ZWRTb3VyY2UubGVu
Z3RoKCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyog
Y291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAgIGdsU2hhZGVyU291cmNlKChHTHVpbnQp
IHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0Mz
RHVpbnQgbWFzaykKQEAgLTEyMTAsNyArOTE2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2Us
IEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNp
bEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3RlbmNpbEZ1bmNT
ZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTIyMiw3ICs5MjgsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWlu
dCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICBnbFN0
ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBh
c3MpCkBAIC0xMjM0LDcgKzk0MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxP
cChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEZW51
bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2lsT3BT
ZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9wU2VwYXJh
dGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0Mz
RGZsb2F0IHZhbHVlKQpAQCAtMTI1MiwxMTUgKzk1OCwxMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9jYXRpb24sIHYwKTsKKyAgICBnbFVu
aWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXpl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3JtMmYobG9j
YXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMmZ2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZs
b2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVu
aWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNp
emVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAg
Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0Rm
bG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGYobG9j
YXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYx
LCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5p
Zm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRmdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWko
R0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaShsb2NhdGlvbiwg
djApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwor
ICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0Mz
RGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZv
cm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3Jt
Mml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNE
aW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVu
aWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2
MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aShsb2NhdGlvbiwgdjAs
IHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0
cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9u
LCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRp
b24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4
NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTEz
NjgsNyArMTA3NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
KQpAQCAtMTM3Niw2MSArMTA4Miw2MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0
ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsK
ICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3Jh
bShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZGV4
LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCog
YXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRl
eEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJp
YjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhB
dHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWlu
dCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAgICBnbFZlcnRleEF0dHJpYjNm
KGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4
QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFy
cmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0Rm
bG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9h
dCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZl
cnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0Rl
bnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0Rp
bnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlw
ZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4
LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCkKQEAgLTE0NDgsNyArMTE1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVl
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFs
dWUpCkBAIC0xNDYwLDcgKzExNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9h
dHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBh
dHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNDcyLDcgKzExNzgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dy
YW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9n
cmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xNDgwLDcgKzEx
ODYsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0
aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9f
TE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogCkBAIC0xNDg4
LDcgKzExOTQsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9n
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVy
biAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0
aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3Ro
LCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVl
KGluZm8pOwpAQCAtMTQ5OSwxNCArMTIwNSwxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRTaGFk
ZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xNTE0
LDE0ICsxMjIwLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xv
ZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5n
ZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZs
ZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5G
T19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xj
aGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8p
CiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlckluZm9Mb2co
c2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hh
ZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAg
ICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNTM0LDE0ICsxMjQwLDE0IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5n
dGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250
ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2
KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3Ro
KTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciop
IGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsK
IAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUs
IGluZm8pOworICAgIGdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5m
byk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAt
MTU2NCwxMyArMTI3MCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0
ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgRwogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRV
bmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTU3OCwxOSArMTI4NCwxOSBAQCBHQzNEaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJp
YmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGlu
ZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGlu
dCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1
ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9
CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCkBAIC0xNTk4LDcgKzEzMDQsNyBA
QCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBtX2ludGVy
bmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7
CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRl
cik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4ocmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNjE5LDcgKzEzMjUsNyBAQCBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIoKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7
Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAg
ICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRs
ZTsKIH0KIApAQCAtMTYyNywyOCArMTMzMywyOCBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVy
bmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5G
cmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1
cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIHJldHVybiBnbENyZWF0ZVByb2dy
YW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVu
ZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZl
cnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNv
dW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RP
YmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIo
dHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRl
eHR1cmUoKQpAQCAtMTY2MiwzMSArMTM2OCwzMSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNz
Q29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0
ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwg
JmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1l
YnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVu
ZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgIGdsRGVsZXRlU2hh
ZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUo
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtMTY5NywzMCArMTQwMywzMCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJy
b3IpCiB7Ci0gICAgbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKKyAg
ICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKIHsKLSAgICBtX2ludGVybmFsLT5tX2xheWVyQ29t
cG9zaXRlZCA9IHRydWU7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjptYXJrQ29udGV4dENoYW5nZWQoKQogewogICAgIC8vIEZJWE1F
OiBBbnkgYWNjZWxlcmF0ZWQgY29tcG9zaXRvciBuZWVkcyB0byBiZSB0b2xkIHRvIHJlLXJlYWQg
ZnJvbSBoZXJlLgotICAgIG1faW50ZXJuYWwtPm1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7Cisg
ICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9s
YXllckNvbXBvc2l0ZWQ7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCiBFeHRl
bnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAo
IW1faW50ZXJuYWwtPm1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9leHRlbnNp
b25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0KTsKLSAgICByZXR1cm4gbV9pbnRlcm5h
bC0+bV9leHRlbnNpb25zLmdldCgpOworICAgIGlmICghbV9leHRlbnNpb25zKQorICAgICAgICBt
X2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNEUXQpOworICAgIHJldHVybiBt
X2V4dGVuc2lvbnMuZ2V0KCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdl
RGF0YShJbWFnZSogaW1hZ2UsCg==
</data>
<flag name="review"
          id="79932"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98541</attachid>
            <date>2011-06-24 14:26:32 -0700</date>
            <delta_ts>2011-07-08 13:46:38 -0700</delta_ts>
            <desc>updated Jarkkos patch</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>80550</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Y2Q4NTZiLi40NTg4ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1
IEBACisyMDExLTA2LTI0ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTU0CisKKyAgICAgICAgTW9k
aWZpZWQgT3BlbkdMIHN5bWJvbCByZXNvbHZlciB0byBiZSB0cmFuc3BhcmVudCBhbmQgZWFzaWVy
IHRvCisgICAgICAgIG1haW50YWluLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFByb2NzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpwbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRT
aGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmli
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmli
dXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpzaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
Mml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6bWFya0xheWVyQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorCiAyMDExLTA2LTIzICBaaGVueWFvIE1v
ICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgKaW5kZXggZDY5NDU2YS4uNmZhMzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC04Nyw2ICs4Nyw5
IEBAIGNsYXNzIEV4dGVuc2lvbnMzRDsKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdU
SykKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQor
Y2xhc3MgRXh0ZW5zaW9uczNEUXQ7CisjZW5kaWYKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJ
bWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTg4Nyw2ICs4OTAsMjIgQEAgcHVibGljOgogICAg
IHZvaWQgcmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciogcGl4ZWxzLCBpbnQgcGl4
ZWxzU2l6ZSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQorI2lmICFkZWZpbmVkKFFUX09Q
RU5HTF9FU18yKQorI2lmICFkZWZpbmVkKEFQSUVOVFJZKQorI2RlZmluZSBBUElFTlRSWQorI2Vu
ZGlmCisjZGVmaW5lIEdMX1BST0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgXAorICAgIHR5
cGVkZWYgUmV0dXJuVmFsdWUgKEFQSUVOVFJZKiBQcm9jIyNUeXBlKSBQYXJhbXM7IFwKKyAgICBQ
cm9jIyNUeXBlIFByb2M7CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIgorI3Vu
ZGVmIEdMX1BST0MKKyNlbmRpZgorICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RRdDsKKyAg
ICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+IG1fZXh0ZW5zaW9uczsKKyAgICBpbnQgbV9wcm9jc0Fy
ZVZhbGlkOworI2VuZGlmCisKICAgICBpbnQgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dDsKICAgICBib29sIG1faXNSZXNvdXJjZVNhZmU7CiAKQEAgLTg5NSw3ICs5MTQsNyBAQCBwdWJs
aWM6CiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xMYXllcjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIHR5cGVkZWYgc3RydWN0IHsKICAgICAg
ICAgU3RyaW5nIHNvdXJjZTsKICAgICAgICAgU3RyaW5nIGxvZzsKQEAgLTkwMywxMCArOTIyLDEy
IEBAIHB1YmxpYzoKICAgICB9IFNoYWRlclNvdXJjZUVudHJ5OwogICAgIEhhc2hNYXA8UGxhdGZv
cm0zRE9iamVjdCwgU2hhZGVyU291cmNlRW50cnk+IG1fc2hhZGVyU291cmNlTWFwOwogCisjaWYg
UExBVEZPUk0oTUFDKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7CiAgICAg
QU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKIAogICAgIE93blB0cjxFeHRlbnNpb25zM0RP
cGVuR0w+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgogCiAgICAgQXR0cmlidXRlcyBtX2F0dHJzOwog
ICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+ID4gbV92ZXJ0ZXhBcnJheTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUHJvY3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
UHJvY3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTI4MGQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RQcm9jcy5oCkBAIC0wLDAgKzEsOTAgQEAKK0dMX1BST0Modm9pZCwgZ2xBY3Rp
dmVUZXh0dXJlLCAoR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRlciwgKEdD
M0R1aW50LCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEF0dHJpYkxvY2F0aW9uLCAo
R0MzRHVpbnQsIEdDM0R1aW50LCBjb25zdCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsQmluZEJ1
ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVm
ZmVyLCAoR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kUmVuZGVyYnVm
ZmVyLCAoR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCbGVuZENvbG9yLCAo
R0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZikpCitHTF9QUk9D
KHZvaWQsIGdsQmxlbmRFcXVhdGlvbiwgKEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBn
bEJsZW5kRnVuY1NlcGFyYXRlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVu
dW0pKQorR0xfUFJPQyh2b2lkLCBnbEJ1ZmZlckRhdGEsIChHQzNEZW51bSwgR0MzRHNpemVpcHRy
LCBjb25zdCB2b2lkKiwgR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEJ1ZmZlclN1YkRhdGEs
IChHQzNEZW51bSwgR0MzRGludHB0ciwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKikpCitHTF9Q
Uk9DKEdDM0RlbnVtLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMsIChHQzNEZW51bSkpCitHTF9Q
Uk9DKHZvaWQsIGdsQ29tcGlsZVNoYWRlciwgKEdDM0R1aW50KSkKK0dMX1BST0MoR0MzRHVpbnQs
IGdsQ3JlYXRlUHJvZ3JhbSwgKCkpCitHTF9QUk9DKEdDM0R1aW50LCBnbENyZWF0ZVNoYWRlciwg
KEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVCdWZmZXJzLCAoR0MzRHNpemVpLCBj
b25zdCBHQzNEdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZUZyYW1lYnVmZmVycywgKEdD
M0RzaXplaSwgY29uc3QgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVQcm9ncmFt
LCAoR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMsIChHQzNE
c2l6ZWksIGNvbnN0IEdDM0R1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlU2hhZGVyLCAo
R0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERldGFjaFNoYWRlciwgKEdDM0R1aW50LCBHQzNE
dWludCkpCitHTF9QUk9DKHZvaWQsIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0MzRHVp
bnQpKQorR0xfUFJPQyh2b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0MzRHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCAoR0MzRGVudW0sIEdD
M0RlbnVtLCBHQzNEZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJELCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHVpbnQsIEdDM0Rp
bnQpKQorR0xfUFJPQyh2b2lkLCBnbEdlbkJ1ZmZlcnMsIChHQzNEc2l6ZWksIEdDM0R1aW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIChHQzNEZW51bSkpCitHTF9QUk9DKHZv
aWQsIGdsR2VuRnJhbWVidWZmZXJzLCAoR0MzRHNpemVpLCBHQzNEdWludCopKQorR0xfUFJPQyh2
b2lkLCBnbEdlblJlbmRlcmJ1ZmZlcnMsIChHQzNEc2l6ZWksIEdDM0R1aW50KikpCitHTF9QUk9D
KHZvaWQsIGdsR2V0QWN0aXZlQXR0cmliLCAoR0MzRHVpbnQsIEdDM0R1aW50LCBHQzNEc2l6ZWks
IEdDM0RzaXplaSosIEdDM0RpbnQqLCBHQzNEZW51bSosIGNoYXIqKSkKK0dMX1BST0Modm9pZCwg
Z2xHZXRBY3RpdmVVbmlmb3JtLCAoR0MzRHVpbnQsIEdDM0R1aW50LCBHQzNEc2l6ZWksIEdDM0Rz
aXplaSosIEdDM0RpbnQqLCBHQzNEZW51bSosIGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRB
dHRhY2hlZFNoYWRlcnMsIChHQzNEdWludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkqLCBHQzNEdWlu
dCopKQorR0xfUFJPQyhHQzNEaW50LCBnbEdldEF0dHJpYkxvY2F0aW9uLCAoR0MzRHVpbnQsIGNv
bnN0IGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiwgKEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2LCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0Mz
RGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1JbmZvTG9nLCAoR0MzRHVpbnQsIEdD
M0RzaXplaSwgR0MzRHNpemVpKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1p
diwgKEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2LCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVySW5mb0xvZywgKEdDM0R1aW50LCBHQzNEc2l6ZWksIEdD
M0RzaXplaSosIGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJpdiwgKEdDM0R1aW50
LCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRlclNvdXJjZSwg
KEdDM0R1aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIGNoYXIqKSkKK0dMX1BST0MoR0MzRGlu
dCwgZ2xHZXRVbmlmb3JtTG9jYXRpb24sIChHQzNEdWludCwgY29uc3QgY2hhciopKQorR0xfUFJP
Qyh2b2lkLCBnbEdldFVuaWZvcm1mdiwgKEdDM0R1aW50LCBHQzNEaW50LCBHQzNEZmxvYXQqKSkK
K0dMX1BST0Modm9pZCwgZ2xHZXRVbmlmb3JtaXYsIChHQzNEdWludCwgR0MzRGludCwgR0MzRGlu
dCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYmZ2LCAoR0MzRHVpbnQsIEdDM0Rl
bnVtLCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgKEdD
M0R1aW50LCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRleEF0
dHJpYlBvaW50ZXJ2LCAoR0MzRHVpbnQsIEdDM0RlbnVtLCB2b2lkKiopKQorR0xfUFJPQyhHQzNE
Ym9vbGVhbiwgZ2xJc0J1ZmZlciwgKEdDM0R1aW50KSkKK0dMX1BST0MoR0MzRGJvb2xlYW4sIGds
SXNGcmFtZWJ1ZmZlciwgKEdDM0R1aW50KSkKK0dMX1BST0MoR0MzRGJvb2xlYW4sIGdsSXNQcm9n
cmFtLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1JlbmRlcmJ1ZmZlciwg
KEdDM0R1aW50KSkKK0dMX1BST0MoR0MzRGJvb2xlYW4sIGdsSXNTaGFkZXIsIChHQzNEdWludCkp
CitHTF9QUk9DKHZvaWQsIGdsTGlua1Byb2dyYW0sIChHQzNEdWludCkpCitHTF9QUk9DKHZvaWQs
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZSwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHNpemVpLCBH
QzNEc2l6ZWkpKQorR0xfUFJPQyh2b2lkLCBnbFNhbXBsZUNvdmVyYWdlLCAoR0MzRGNsYW1wZiwg
R0MzRGJvb2xlYW4pKQorR0xfUFJPQyh2b2lkLCBnbFNoYWRlclNvdXJjZSwgKEdDM0R1aW50LCBH
QzNEc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBn
bFN0ZW5jaWxGdW5jU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1
aW50KSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2lsTWFza1NlcGFyYXRlLCAoR0MzRGVudW0sIEdD
M0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2lsT3BTZXBhcmF0ZSwgKEdDM0RlbnVtLCBH
QzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMWYs
IChHQzNEaW50LCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0xZnYsIChHQzNE
aW50LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZv
cm0xaSwgKEdDM0RpbnQsIEdDM0RpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0xaXYsIChH
QzNEaW50LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlm
b3JtMmYsIChHQzNEaW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGds
VW5pZm9ybTJmdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9Q
Uk9DKHZvaWQsIGdsVW5pZm9ybTJpLCAoR0MzRGludCwgR0MzRGludCwgR0MzRGludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsVW5pZm9ybTJpdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgY29uc3QgR0MzRGlu
dCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0zZiwgKEdDM0RpbnQsIEdDM0RmbG9hdCwgR0Mz
RGZsb2F0LCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0zZnYsIChHQzNEaW50
LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0z
aSwgKEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQpKQorR0xfUFJPQyh2b2lkLCBn
bFVuaWZvcm0zaXYsIChHQzNEaW50LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RpbnQqKSkKK0dMX1BS
T0Modm9pZCwgZ2xVbmlmb3JtNGYsIChHQzNEaW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0Mz
RGZsb2F0LCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm00ZnYsIChHQzNEaW50
LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm00
aSwgKEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQpKQorR0xfUFJP
Qyh2b2lkLCBnbFVuaWZvcm00aXYsIChHQzNEaW50LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RpbnQq
KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4MmZ2LCAoR0MzRGludCwgR0MzRHNpemVp
LCBHQzNEYm9vbGVhbiwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9y
bU1hdHJpeDNmdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRGJvb2xlYW4sIGNvbnN0IEdDM0Rm
bG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXg0ZnYsIChHQzNEaW50LCBHQzNE
c2l6ZWksIEdDM0Rib29sZWFuLCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xV
c2VQcm9ncmFtLCAoR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFZhbGlkYXRlUHJvZ3JhbSwg
KEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIxZiwgKEdDM0R1aW50LCBj
b25zdCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjFmdiwgKEdDM0R1
aW50LCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIyZiwg
KEdDM0R1aW50LCBjb25zdCBHQzNEZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZv
aWQsIGdsVmVydGV4QXR0cmliMmZ2LCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCopKQorR0xf
UFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjNmLCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCwg
Y29uc3QgR0MzRGZsb2F0LCBjb25zdCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRl
eEF0dHJpYjNmdiwgKEdDM0R1aW50LCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwg
Z2xWZXJ0ZXhBdHRyaWI0ZiwgKEdDM0R1aW50LCBjb25zdCBHQzNEZmxvYXQsIGNvbnN0IEdDM0Rm
bG9hdCwgY29uc3QgR0MzRGZsb2F0LCBjb25zdCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBn
bFZlcnRleEF0dHJpYjRmdiwgKEdDM0R1aW50LCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyLCAoR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0RlbnVt
LCBHQzNEYm9vbGVhbiwgR0MzRHNpemVpLCBjb25zdCB2b2lkKikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCmluZGV4IDJlYmRjZmEuLmRlYmFjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC01
NSwxMDkgKzU1LDYgQEAgdHlwZWRlZiBjaGFyIEdMY2hhcjsKICNkZWZpbmUgR0xfREVQVEgyNF9T
VEVOQ0lMOCAweDg4RjAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoQVBJRU5UUlkpCi0jZGVmaW5l
IEFQSUVOVFJZCi0jZW5kaWYKLQotI2lmZGVmIFFUX09QRU5HTF9FU18yCi10eXBlZGVmIEdMc2l6
ZWlwdHIgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIEdMaW50cHRyIEdMaW50cHRyVHlwZTsKLSNl
bHNlCi10eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYgcHRyZGlmZl90
IEdMaW50cHRyVHlwZTsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEFjdGl2
ZVRleHR1cmVUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQXR0YWNo
U2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
QmluZEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBjb25zdCBjaGFyKik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZmZXJUeXBlKSAoR0xlbnVt
LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kUmVuZGVyYnVmZmVyVHlw
ZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRDb2xv
clR5cGUpIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSkoR0xlbnVtLCBHTGVu
dW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5cGUpKEdM
ZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFs
cGhhKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0YVR5cGUpIChHTGVudW0s
IEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xpbnRwdHJUeXBlLCBHTHNp
emVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKik7Ci10eXBlZGVmIEdMZW51bSAoQVBJRU5UUlkqIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xDb21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMdWludCAoQVBJ
RU5UUlkqIGdsQ3JlYXRlUHJvZ3JhbVR5cGUpICgpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZ
KiBnbENyZWF0ZVNoYWRlclR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xEZWxldGVCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSBuLCBjb25z
dCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUHJvZ3JhbVR5cGUp
IChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVSZW5kZXJidWZmZXJz
VHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbERlbGV0ZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xEZXRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJUeXBlKSAo
R0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1
aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkJ1ZmZlcnNUeXBlKSAo
R0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbmVyYXRlTWlw
bWFwVHlwZSkgKEdMZW51bSB0YXJnZXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5G
cmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChHTHVpbnQsIEdMdWludCwg
R0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdM
c2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBH
THNpemVpKiwgR0x1aW50Kik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRBdHRyaWJM
b2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJhbXMpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUpIChHTHVpbnQsIEdM
c2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFBy
b2dyYW1pdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0s
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlckluZm9Mb2dUeXBl
KSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xHZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xzaXpl
aSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBnbEdldFVuaWZv
cm1Mb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZmxvYXQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkgKEdMdWludCwgR0xpbnQs
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYmZ2VHlw
ZSkgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEdldFZlcnRleEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUpIChHTHVpbnQs
IEdMZW51bSwgR0x2b2lkKiopOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzQnVm
ZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNGcmFt
ZWJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElz
UHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElz
UmVuZGVyYnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkq
IGdsSXNTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsTGlu
a1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlwZSkgKEdMY2xhbXBmLCBH
TGJvb2xlYW4pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFkZXJTb3VyY2VUeXBlKSAo
R0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0s
IEdMaW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsTWFza1Nl
cGFyYXRlVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
U3RlbmNpbE9wU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVtKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkgKEdMaW50LCBHTGZsb2F0
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5cGUpIChHTGludCwgR0xz
aXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3Jt
MWlUeXBlKSAoR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bTFpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChHTGludCwgR0xzaXplaSwg
Y29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmlUeXBl
KSAoR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZv
cm0yaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm
bG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZnZUeXBlKSAoR0xpbnQs
IEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybTNpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlwZSkgKEdMaW50LCBHTGZs
b2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGlu
dCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpdlR5
cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBj
b25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgz
ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSkgKEdMaW50LCBHTHNp
emVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVXNlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xW
YWxpZGF0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VmVydGV4QXR0cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9h
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUpIChHTHVp
bnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZUeXBlKSAoR0x1aW50LCBj
b25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZ2VHlwZSkgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNpemVp
LCBjb25zdCBHTHZvaWQqKTsKLQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCkBA
IC0xNjgsMTMgKzY1LDEwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwKICNlbmRp
ZgogewogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOworICAgIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqLCBIb3N0V2luZG93Kik7
CiAgICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wgaXNWYWxpZCgp
IHsgcmV0dXJuIG1fdmFsaWQ7IH0KLQogICAgIFFHTFdpZGdldCogZ2V0Vmlld3BvcnRHTFdpZGdl
dCgpOwotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZpcnR1
YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwg
Qml0bWFwVGV4dHVyZSogbWFzaykgY29uc3Q7CiAjZW5kaWYKQEAgLTE4MiwxMjMgKzc2LDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3Jh
cGhpY3NJdGVtKiwgUVdpZGdldCopOwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsK
IAotICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0aXZlVGV4dHVyZTsKLSAgICBnbEF0dGFjaFNo
YWRlclR5cGUgYXR0YWNoU2hhZGVyOwotICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5k
QXR0cmliTG9jYXRpb247Ci0gICAgZ2xCaW5kQnVmZmVyVHlwZSBiaW5kQnVmZmVyOwotICAgIGds
QmluZEZyYW1lYnVmZmVyVHlwZSBiaW5kRnJhbWVidWZmZXI7Ci0gICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVyOwotICAgIGdsQmxlbmRDb2xvclR5cGUgYmxlbmRDb2xv
cjsKLSAgICBnbEJsZW5kRXF1YXRpb25UeXBlIGJsZW5kRXF1YXRpb247Ci0gICAgZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5kRXF1YXRpb25TZXBhcmF0ZTsKLSAgICBnbEJsZW5kRnVu
Y1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNTZXBhcmF0ZTsKLSAgICBnbEJ1ZmZlckRhdGFUeXBlIGJ1
ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhVHlwZSBidWZmZXJTdWJEYXRhOwotICAgIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1czsKLSAgICBn
bENvbXBpbGVTaGFkZXJUeXBlIGNvbXBpbGVTaGFkZXI7Ci0gICAgZ2xDcmVhdGVQcm9ncmFtVHlw
ZSBjcmVhdGVQcm9ncmFtOwotICAgIGdsQ3JlYXRlU2hhZGVyVHlwZSBjcmVhdGVTaGFkZXI7Ci0g
ICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBkZWxldGVCdWZmZXJzOwotICAgIGdsRGVsZXRlRnJhbWVi
dWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVQcm9ncmFtVHlwZSBk
ZWxldGVQcm9ncmFtOwotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUgZGVsZXRlUmVuZGVy
YnVmZmVyczsKLSAgICBnbERlbGV0ZVNoYWRlclR5cGUgZGVsZXRlU2hhZGVyOwotICAgIGdsRGV0
YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFkZXI7Ci0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAgICBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcjsKLSAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZlclRleHR1cmUyRDsKLSAgICBnbEdlbkJ1ZmZlcnNUeXBl
IGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1hcFR5cGUgZ2VuZXJhdGVNaXBtYXA7Ci0g
ICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlIGdlbkZyYW1lYnVmZmVyczsKLSAgICBnbEdlblJlbmRl
cmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1ZmZlcnM7Ci0gICAgZ2xHZXRBY3RpdmVBdHRyaWJUeXBl
IGdldEFjdGl2ZUF0dHJpYjsKLSAgICBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlIGdldEFjdGl2ZVVu
aWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlIGdldEF0dGFjaGVkU2hhZGVyczsK
LSAgICBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSBnZXRBdHRyaWJMb2NhdGlvbjsKLSAgICBnbEdl
dEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRCdWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2VHlwZSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nVHlwZSBnZXRQcm9ncmFtSW5m
b0xvZzsKLSAgICBnbEdldFByb2dyYW1pdlR5cGUgZ2V0UHJvZ3JhbWl2OwotICAgIGdsR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2OwotICAg
IGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUgZ2V0U2hhZGVySW5mb0xvZzsKLSAgICBnbEdldFNoYWRl
cml2VHlwZSBnZXRTaGFkZXJpdjsKLSAgICBnbEdldFNoYWRlclNvdXJjZVR5cGUgZ2V0U2hhZGVy
U291cmNlOwotICAgIGdsR2V0VW5pZm9ybWZ2VHlwZSBnZXRVbmlmb3JtZnY7Ci0gICAgZ2xHZXRV
bmlmb3JtaXZUeXBlIGdldFVuaWZvcm1pdjsKLSAgICBnbEdldFVuaWZvcm1Mb2NhdGlvblR5cGUg
Z2V0VW5pZm9ybUxvY2F0aW9uOwotICAgIGdsR2V0VmVydGV4QXR0cmliZnZUeXBlIGdldFZlcnRl
eEF0dHJpYmZ2OwotICAgIGdsR2V0VmVydGV4QXR0cmliaXZUeXBlIGdldFZlcnRleEF0dHJpYml2
OwotICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlIGdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBlIGlzQnVmZmVyOwotICAgIGdsSXNGcmFtZWJ1ZmZlclR5
cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBnbElzUHJvZ3JhbVR5cGUgaXNQcm9ncmFtOwotICAgIGds
SXNSZW5kZXJidWZmZXJUeXBlIGlzUmVuZGVyYnVmZmVyOwotICAgIGdsSXNTaGFkZXJUeXBlIGlz
U2hhZGVyOwotICAgIGdsTGlua1Byb2dyYW1UeXBlIGxpbmtQcm9ncmFtOwotICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVyYnVmZmVyU3RvcmFnZTsKLSAgICBnbFNhbXBsZUNvdmVy
YWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsKLSAgICBnbFNoYWRlclNvdXJjZVR5cGUgc2hhZGVyU291
cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUgc3RlbmNpbEZ1bmNTZXBhcmF0ZTsK
LSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlIHN0ZW5jaWxNYXNrU2VwYXJhdGU7Ci0gICAg
Z2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUgc3RlbmNpbE9wU2VwYXJhdGU7Ci0gICAgZ2xVbmlmb3Jt
MWZUeXBlIHVuaWZvcm0xZjsKLSAgICBnbFVuaWZvcm0xZnZUeXBlIHVuaWZvcm0xZnY7Ci0gICAg
Z2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0xaTsKLSAgICBnbFVuaWZvcm0xaXZUeXBlIHVuaWZvcm0x
aXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBlIHVuaWZvcm0yZjsKLSAgICBnbFVuaWZvcm0yZnZUeXBl
IHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlmb3JtMmlUeXBlIHVuaWZvcm0yaTsKLSAgICBnbFVuaWZv
cm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0gICAgZ2xVbmlmb3JtM2ZUeXBlIHVuaWZvcm0zZjsKLSAg
ICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZvcm0zZnY7Ci0gICAgZ2xVbmlmb3JtM2lUeXBlIHVuaWZv
cm0zaTsKLSAgICBnbFVuaWZvcm0zaXZUeXBlIHVuaWZvcm0zaXY7Ci0gICAgZ2xVbmlmb3JtNGZU
eXBlIHVuaWZvcm00ZjsKLSAgICBnbFVuaWZvcm00ZnZUeXBlIHVuaWZvcm00ZnY7Ci0gICAgZ2xV
bmlmb3JtNGlUeXBlIHVuaWZvcm00aTsKLSAgICBnbFVuaWZvcm00aXZUeXBlIHVuaWZvcm00aXY7
Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSB1bmlmb3JtTWF0cml4MmZ2OwotICAgIGdsVW5p
Zm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9ybU1hdHJpeDNmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXg0
ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7Ci0gICAgZ2xVc2VQcm9ncmFtVHlwZSB1c2VQcm9ncmFt
OwotICAgIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSB2YWxpZGF0ZVByb2dyYW07Ci0gICAgZ2xWZXJ0
ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0cmliMWY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBl
IHZlcnRleEF0dHJpYjFmdjsKLSAgICBnbFZlcnRleEF0dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRyaWIy
ZjsKLSAgICBnbFZlcnRleEF0dHJpYjJmdlR5cGUgdmVydGV4QXR0cmliMmZ2OwotICAgIGdsVmVy
dGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0dHJpYjNmOwotICAgIGdsVmVydGV4QXR0cmliM2Z2VHlw
ZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZlR5cGUgdmVydGV4QXR0cmli
NGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlIHZlcnRleEF0dHJpYjRmdjsKLSAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXJUeXBlIHZlcnRleEF0dHJpYlBvaW50ZXI7Ci0KLSAgICBHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2luZG93OwogICAgIFFHTFdpZGdldCog
bV9nbFdpZGdldDsKICAgICBRR0xXaWRnZXQqIG1fdmlld3BvcnRHTFdpZGdldDsKLSAgICBRUmVj
dEYgbV9ib3VuZGluZ1JlY3Q7Ci0gICAgR0x1aW50IG1fdGV4dHVyZTsKLSAgICBHTHVpbnQgbV9j
YW52YXNGYm87Ci0gICAgR0x1aW50IG1fY3VycmVudEZibzsKLSAgICBHTHVpbnQgbV9kZXB0aEJ1
ZmZlcjsKLSAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkOwotICAgIExpc3RIYXNoU2V0PHVuc2ln
bmVkIGludD4gbV9zeW50aGV0aWNFcnJvcnM7Ci0KLSAgICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+
IG1fZXh0ZW5zaW9uczsKLQotcHJpdmF0ZToKIAogICAgIHZvaWQqIGdldFByb2NBZGRyZXNzKGNv
bnN0IFN0cmluZyYgcHJvYyk7Ci0gICAgYm9vbCBtX3ZhbGlkOwogfTsKIAotI2lmIGRlZmluZWQg
KFFUX09QRU5HTF9FU18yKSAKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSBQcm9jCi0j
ZWxzZQotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIHJlaW50ZXJwcmV0X2Nhc3Q8UHJv
YyMjVHlwZT4oZ2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKLSNlbmRpZgotCiBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKICNpZiBkZWZpbmVkIChRVF9P
UEVOR0xfRVNfMikKQEAgLTMwOCwxNyArOTMsMTEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLSAgICA6IG1fYXR0cnMoYXR0
cnMpCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2hvc3RXaW5kb3coaG9zdFdpbmRvdykKICAg
ICAsIG1fZ2xXaWRnZXQoMCkKICAgICAsIG1fdmlld3BvcnRHTFdpZGdldCgwKQotICAgICwgbV90
ZXh0dXJlKDApCi0gICAgLCBtX2NhbnZhc0ZibygwKQotICAgICwgbV9jdXJyZW50RmJvKDApCi0g
ICAgLCBtX2RlcHRoQnVmZmVyKDApCi0gICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKLSAg
ICAsIG1fdmFsaWQodHJ1ZSkKIHsKICAgICBtX3ZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9y
dEdMV2lkZ2V0KCk7CiAKQEAgLTMyNywxNTMgKzEwNiwyMyBAQCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aWJ1dAogICAgIGVsc2UKICAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoKTsKIAot
ICAgIGlmICghbV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3Jh
cGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAg
ICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEdl
b21ldHJ5IGNhbiBiZSBzZXQgdG8gemVybyBiZWNhdXNlIG1fZ2xXaWRnZXQgaXMgdXNlZCBvbmx5
IGZvciBpdHMgUUdMQ29udGV4dC4KICAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRyeSgwLCAwLCAw
LCAwKTsKIAotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgbV9hdHRycy5zdGVuY2ls
ID0gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIG1fYXR0
cnMuZGVwdGggPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsK
LQogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBhY3RpdmVUZXh0dXJlID0g
R0VUX1BST0NfQUREUkVTUyhnbEFjdGl2ZVRleHR1cmUpOwotICAgIGF0dGFjaFNoYWRlciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xBdHRhY2hTaGFkZXIpOwotICAgIGJpbmRBdHRyaWJMb2NhdGlvbiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOwotICAgIGJpbmRCdWZmZXIg
PSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEJ1ZmZlcik7Ci0gICAgYmluZEZyYW1lYnVmZmVyID0g
R0VUX1BST0NfQUREUkVTUyhnbEJpbmRGcmFtZWJ1ZmZlcik7Ci0gICAgYmluZFJlbmRlcmJ1ZmZl
ciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsKLSAgICBibGVuZENvbG9y
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kQ29sb3IpOwotICAgIGJsZW5kRXF1YXRpb24gPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvbik7Ci0gICAgYmxlbmRFcXVhdGlvblNlcGFy
YXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSk7Ci0gICAgYmxl
bmRGdW5jU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2VwYXJhdGUpOwot
ICAgIGJ1ZmZlckRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7Ci0gICAgYnVm
ZmVyU3ViRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJTdWJEYXRhKTsKLSAgICBjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzID0gR0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXMpOwotICAgIGNvbXBpbGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ29tcGlsZVNo
YWRlcik7Ci0gICAgY3JlYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVQcm9n
cmFtKTsKLSAgICBjcmVhdGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlU2hhZGVy
KTsKLSAgICBkZWxldGVCdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUJ1ZmZlcnMp
OwotICAgIGRlbGV0ZUZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVGcmFt
ZWJ1ZmZlcnMpOwotICAgIGRlbGV0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRl
UHJvZ3JhbSk7Ci0gICAgZGVsZXRlUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xE
ZWxldGVSZW5kZXJidWZmZXJzKTsKLSAgICBkZWxldGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNT
KGdsRGVsZXRlU2hhZGVyKTsKLSAgICBkZXRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGds
RGV0YWNoU2hhZGVyKTsKLSAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJPQ19B
RERSRVNTKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBlbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0g
ICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIpOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEID0gR0VUX1BST0NfQURE
UkVTUyhnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKLSAgICBnZW5CdWZmZXJzID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdlbkJ1ZmZlcnMpOwotICAgIGdlbmVyYXRlTWlwbWFwID0gR0VUX1BST0NfQURE
UkVTUyhnbEdlbmVyYXRlTWlwbWFwKTsKLSAgICBnZW5GcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2VuRnJhbWVidWZmZXJzKTsKLSAgICBnZW5SZW5kZXJidWZmZXJzID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdlblJlbmRlcmJ1ZmZlcnMpOwotICAgIGdldEFjdGl2ZUF0dHJpYiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVBdHRyaWIpOwotICAgIGdldEFjdGl2ZVVuaWZvcm0g
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7Ci0gICAgZ2V0QXR0YWNoZWRT
aGFkZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hhZGVycyk7Ci0gICAgZ2V0
QXR0cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9jYXRpb24pOwot
ICAgIGdldEJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEJ1ZmZlclBh
cmFtZXRlcml2KTsKLSAgICBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7Ci0g
ICAgZ2V0UHJvZ3JhbUluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbUluZm9M
b2cpOwotICAgIGdldFByb2dyYW1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtaXYp
OwotICAgIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTsKLSAgICBnZXRTaGFkZXJJbmZvTG9nID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFNoYWRlckluZm9Mb2cpOwotICAgIGdldFNoYWRlcml2ID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFNoYWRlcml2KTsKLSAgICBnZXRTaGFkZXJTb3VyY2UgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0U2hhZGVyU291cmNlKTsKLSAgICBnZXRVbmlmb3JtZnYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0VW5pZm9ybWZ2KTsKLSAgICBnZXRVbmlmb3JtaXYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsR2V0VW5pZm9ybWl2KTsKLSAgICBnZXRVbmlmb3JtTG9jYXRpb24gPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJmdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdik7Ci0gICAgZ2V0VmVydGV4QXR0
cmliaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOwotICAgIGdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2KTsKLSAgICBpc0J1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7Ci0g
ICAgaXNGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0ZyYW1lYnVmZmVyKTsKLSAg
ICBpc1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsKLSAgICBpc1JlbmRl
cmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7Ci0gICAgaXNTaGFk
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNTaGFkZXIpOwotICAgIGxpbmtQcm9ncmFtID0gR0VU
X1BST0NfQUREUkVTUyhnbExpbmtQcm9ncmFtKTsKLSAgICByZW5kZXJidWZmZXJTdG9yYWdlID0g
R0VUX1BST0NfQUREUkVTUyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwotICAgIHNhbXBsZUNvdmVy
YWdlID0gR0VUX1BST0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKLSAgICBzaGFkZXJTb3Vy
Y2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsU2hhZGVyU291cmNlKTsKLSAgICBzdGVuY2lsRnVuY1Nl
cGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpOwotICAgIHN0
ZW5jaWxNYXNrU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBhcmF0
ZSk7Ci0gICAgc3RlbmNpbE9wU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE9w
U2VwYXJhdGUpOwotICAgIHVuaWZvcm0xZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWYp
OwotICAgIHVuaWZvcm0xZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7Ci0gICAg
dW5pZm9ybTFpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7Ci0gICAgdW5pZm9ybTFp
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWl2KTsKLSAgICB1bmlmb3JtMmYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVW5pZm9ybTJmKTsKLSAgICB1bmlmb3JtMmZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbFVuaWZvcm0yZnYpOwotICAgIHVuaWZvcm0yaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtMmkpOwotICAgIHVuaWZvcm0yaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJp
dik7Ci0gICAgdW5pZm9ybTNmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZik7Ci0gICAg
dW5pZm9ybTNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsKLSAgICB1bmlmb3Jt
M2kgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpKTsKLSAgICB1bmlmb3JtM2l2ID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaXYpOwotICAgIHVuaWZvcm00ZiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtNGYpOwotICAgIHVuaWZvcm00ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTRmdik7Ci0gICAgdW5pZm9ybTRpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00
aSk7Ci0gICAgdW5pZm9ybTRpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGl2KTsKLSAg
ICB1bmlmb3JtTWF0cml4MmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgyZnYp
OwotICAgIHVuaWZvcm1NYXRyaXgzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJp
eDNmdik7Ci0gICAgdW5pZm9ybU1hdHJpeDRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
TWF0cml4NGZ2KTsKLSAgICB1c2VQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFVzZVByb2dy
YW0pOwotICAgIHZhbGlkYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWYWxpZGF0ZVBy
b2dyYW0pOwotICAgIHZlcnRleEF0dHJpYjFmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0
dHJpYjFmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliMWZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0
ZXhBdHRyaWIyZik7Ci0gICAgdmVydGV4QXR0cmliMmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZl
cnRleEF0dHJpYjJmdik7Ci0gICAgdmVydGV4QXR0cmliM2YgPSBHRVRfUFJPQ19BRERSRVNTKGds
VmVydGV4QXR0cmliM2YpOwotICAgIHZlcnRleEF0dHJpYjNmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xWZXJ0ZXhBdHRyaWIzZnYpOwotICAgIHZlcnRleEF0dHJpYjRmID0gR0VUX1BST0NfQUREUkVT
UyhnbFZlcnRleEF0dHJpYjRmKTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsVmVydGV4QXR0cmliNGZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyID0gR0VUX1BS
T0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOwotCi0gICAgaWYgKCFtX3ZhbGlkKSB7
Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVkZWQgT3BlbkdM
IGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIC8vIENyZWF0ZSBidWZmZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KLSAgICBnZW5GcmFt
ZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fY2FudmFzRmJvKTsKLQotICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9X
UkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwotCi0gICAgaWYg
KG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwg
Jm1fZGVwdGhCdWZmZXIpOwotCiAjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgZ2xF
bmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKICAgICBnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9Q
T0lOVF9TSVpFKTsKICNlbmRpZgotCi0gICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBzZXQgaW5p
dGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KLSAgICBtX2N1cnJlbnRGYm8gPSBtX2NhbnZhc0Zi
bzsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NhbnZhc0Zibyk7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAK
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCkK
IHsKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGlmIChtX2dsV2lkZ2V0LT5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgOjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOwot
ICAgICAgICBkZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoQnVmZmVyKTsKLSAgICAgICAg
ZGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2NhbnZhc0Zibyk7CisgICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJm1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAgIG1fY29u
dGV4dC0+Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fZGVwdGhTdGVuY2ls
QnVmZmVyKTsKKyAgICAgICAgbV9jb250ZXh0LT5nbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9j
b250ZXh0LT5tX2Zibyk7CiAgICAgfQogICAgIGRlbGV0ZSBtX2dsV2lkZ2V0OwogICAgIG1fZ2xX
aWRnZXQgPSAwOwpAQCAtNDk3LDY5ICsxNDYsMTIgQEAgc3RhdGljIGlubGluZSBxdWludDMyIHN3
YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogICAgIHJldHVybiAoKHBpeGVsIDw8IDE2KSAmIDB4
ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpyZXNoYXBlKGludCB3aWR0aCwg
aW50IGhlaWdodCkKLXsKLSAgICBpZiAod2lkdGggPT0gbV9ib3VuZGluZ1JlY3Qud2lkdGgoKSAm
JiBoZWlnaHQgPT0gbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQb2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwg
aGVpZ2h0KSk7Ci0KLSAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0gICAgLy8gQ3Jl
YXRlIGNvbG9yIGJ1ZmZlcgotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAgaWYgKG1fYXR0cnMuYWxwaGEpCi0gICAgICAgIGds
VGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUs
IC8qIGRhdGEgKi8gMCk7Ci0gICAgZWxzZQotICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
LCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKLSAgICBn
bEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlm
IChtX2F0dHJzLmRlcHRoKSB7Ci0gICAgICAgIC8vIENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBi
dWZmZXJzLgotICAgICAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5E
RVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0g
ICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsK
LSNlbHNlCi0gICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICByZW5kZXJi
dWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRf
U1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZW5k
ZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOwotI2VuZGlmCi0gICAg
ICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7
Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0IGNhbnZhcyBGQk8uCi0gICAgYmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwotICAgIGZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV90ZXh0dXJlLCAwKTsKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0jaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0g
ICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJ
TF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVm
ZmVyKTsKLSNlbmRpZgotCi0gICAgR0xlbnVtIHN0YXR1cyA9IGNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewotICAgICAgICBMT0dfRVJS
T1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMgRkJPIGluaXRpYWxpemF0aW9uIGZhaWxlZC4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCBjbGVhckZsYWdzID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7Ci0gICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0g
ICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7
Ci0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGlj
c0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOwotCi0gICAgZ2xDbGVhcihjbGVhckZsYWdz
KTsKLSAgICBnbEZsdXNoKCk7Ci19Ci0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
ICYmIFVTRShURVhUVVJFX01BUFBFUikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKSBjb25zdAogewogICAgIGlmICh0
ZXh0dXJlTWFwcGVyLT5pc09wZW5HTEJhY2tlZCgpKSB7CiAgICAgICAgIFRleHR1cmVNYXBwZXJH
TCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVy
KTsKLSAgICAgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgIW1fYXR0cnMuYWxw
aGEsIEZsb2F0U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCB0
cnVlIC8qIGZsaXAgKi8pOworICAgICAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV9jb250ZXh0
LT5tX2NvbXBvc2l0b3JUZXh0dXJlLCAhbV9jb250ZXh0LT5tX2F0dHJzLmFscGhhLCBGbG9hdFNp
emUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlw
ICovKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTY5LDIxICsxNjEsMzAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiB0ZXh0dXJlTWFwcGUKICAgICBwYWludGVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsK
ICAgICBwYWludGVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogCisgICAgY29uc3QgaW50IGhlaWdo
dCA9IG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0OworICAgIGNvbnN0IGludCB3aWR0aCA9IG1f
Y29udGV4dC0+bV9jdXJyZW50V2lkdGg7CisKICAgICAvLyBBbHRlcm5hdGl2ZWx5IHJlYWQgcGl4
ZWxzIHRvIGEgbWVtb3J5IGJ1ZmZlci4KLSAgICBRSW1hZ2Ugb2Zmc2NyZWVuSW1hZ2UobV9ib3Vu
ZGluZ1JlY3Qud2lkdGgoKSwgbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCksIFFJbWFnZTo6Rm9ybWF0
X0FSR0IzMik7CisgICAgUUltYWdlIG9mZnNjcmVlbkltYWdlKHdpZHRoLCBoZWlnaHQsIFFJbWFn
ZTo6Rm9ybWF0X0FSR0IzMik7CiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJl
dF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7Ci0gICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwg
LyogeSAqLyAwLCBtX2JvdW5kaW5nUmVjdC53aWR0aCgpLCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBpbWFnZVBpeGVscyk7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+
bV9mYm8pOworI2Vsc2UKKyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisjZW5kaWYKKyAgICBn
bFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQ
aXhlbHMpOwogCi0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9jdXJyZW50RmJvKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgIGds
QmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0
LT5tX2JvdW5kRkJPKTsKKyNlbHNlCisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7Cisj
ZW5kaWYKIAogICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJpdHMsIGFuZCB3aXRo
IHRoZSBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVlZCBSR0IzMiBvciBB
UkdCMzJfUE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCiAgICAgcXVpbnQzMiog
cGl4ZWxzU3JjID0gaW1hZ2VQaXhlbHM7Ci0gICAgY29uc3QgaW50IGhlaWdodCA9IHN0YXRpY19j
YXN0PGludD4obV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpOwotICAgIGNvbnN0IGludCB3aWR0aCA9
IHN0YXRpY19jYXN0PGludD4obV9ib3VuZGluZ1JlY3Qud2lkdGgoKSk7CiAgICAgY29uc3QgaW50
IGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyOwogICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IGhh
bGZIZWlnaHQ7ICsrcm93KSB7CiAgICAgICAgIGNvbnN0IGludCB0YXJnZXRJZHggPSAoaGVpZ2h0
IC0gMSAtIHJvdykgKiB3aWR0aDsKQEAgLTYxMCw3ICsyMTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZQogCiBRUmVjdEYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Ym91bmRpbmdSZWN0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9ib3VuZGluZ1JlY3Q7CisgICAgcmV0dXJuIFFSZWN0
RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250
ZXh0LT5tX2N1cnJlbnRIZWlnaHQpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJ
dGVtKiBvcHRpb24sIFFXaWRnZXQqIHdpZGdldCkKQEAgLTYyMyw3ICsyMjQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBR
U3R5bGVPcHRpb25HcmFwaAogICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRleHQuCiAg
ICAgUUdMV2lkZ2V0KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdpZGdldCgpOwog
ICAgIGlmICh2aWV3cG9ydEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gbV92aWV3cG9y
dEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gcGFpbnRlci0+ZGV2aWNlKCkpIHsKLSAg
ICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV90ZXh0dXJlKTsKKyAg
ICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV9jb250ZXh0LT5tX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjMyLDEwICsy
MzMsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciog
cGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBpeGVs
cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAK
ICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKKyNpZiBkZWZpbmVkKFFU
X09QRU5HTF9FU18yKQorICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xC
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQt
Pm1fZmJvKTsKKyNlbmRpZgogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKLQotICAgIGJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7
CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CisjZWxz
ZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOworI2VuZGlmCiAKICAgICAvLyBPcGVu
R0wgZ2l2ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBi
b3R0b20gbGVmdAogICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBv
cmlnaW4gYXQgdGhlIHRvcCBsZWZ0LgpAQCAtNjcwLDE0ICsyNzgsMTMgQEAgdm9pZCogR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICAgICAgU3RyaW5nIG5hbWVX
aXRoRXh0ID0gcHJvYyArIGV4dFtpXTsKLQogICAgICAgICB2b2lkKiBhZGRyID0gbV9nbFdpZGdl
dC0+Y29udGV4dCgpLT5nZXRQcm9jQWRkcmVzcyhRU3RyaW5nKG5hbWVXaXRoRXh0KSk7CiAgICAg
ICAgIGlmIChhZGRyKSAKICAgICAgICAgICAgIHJldHVybiBhZGRyOwogICAgIH0KIAogICAgIExP
R19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IERpZCBub3QgZmluZCBHTCBmdW5jdGlvbiAlcyIs
IHByb2MudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV92YWxpZCA9IGZhbHNlOworICAgIG1fY29udGV4
dC0+bV9wcm9jc0FyZVZhbGlkID0gZmFsc2U7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY5MSwx
MCArMjk4LDY5IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpCiB9CiAKIEdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCkKLSAgICA6IG1faXNSZXNvdXJjZVNhZmUo
ZmFsc2UpLCBtX2ludGVybmFsKGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFs
KGF0dHJzLCBob3N0V2luZG93KSkpCisgICAgOiBtX3Byb2NzQXJlVmFsaWQodHJ1ZSkKKyAgICAs
IG1fY3VycmVudFdpZHRoKDApCisgICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKKyAgICAsIG1faXNS
ZXNvdXJjZVNhZmUoZmFsc2UpCisgICAgLCBtX2F0dHJzKGF0dHJzKQorICAgICwgbV90ZXh0dXJl
KDApCisgICAgLCBtX2NvbXBvc2l0b3JUZXh0dXJlKDApCisgICAgLCBtX2ZibygwKQorICAgICwg
bV9kZXB0aFN0ZW5jaWxCdWZmZXIoMCkKKyAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQor
ICAgICwgbV9pbnRlcm5hbENvbG9yRm9ybWF0KDApCisgICAgLCBtX2JvdW5kRkJPKDApCisgICAg
LCBtX2FjdGl2ZVRleHR1cmUoMCkKKyAgICAsIG1fYm91bmRUZXh0dXJlMCgwKQorICAgICwgbV9t
dWx0aXNhbXBsZUZCTygwKQorICAgICwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcigw
KQorICAgICwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKDApCisgICAgLCBtX2ludGVybmFsKGFk
b3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKHRoaXMsIGhvc3RXaW5kb3cpKSkK
IHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbC5j
bGVhcigpOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgbV9hdHRycy5zdGVuY2ls
ID0gZmFsc2U7CisjZWxzZQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIG1fYXR0
cnMuZGVwdGggPSB0cnVlOworI2VuZGlmCisgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsK
KworICAgIGlmICghbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CisgICAgICAg
IExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBm
YWlsZWQuIik7CisgICAgICAgIG1faW50ZXJuYWwgPSBudWxscHRyOworICAgICAgICByZXR1cm47
CisgICAgfQorCisjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisjZGVmaW5lIEdMX1BST0Mo
UmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgUHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UHJvYyMj
VHlwZT4obV9pbnRlcm5hbC0+Z2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRFByb2NzLmgiCisjdW5kZWYgR0xfUFJPQworI2VuZGlmCisKKyAgICBpZiAo
IW1fcHJvY3NBcmVWYWxpZCkgeworICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBBbGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7CisgICAg
ICAgIG1faW50ZXJuYWwgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgorICAgIGdsR2VuRnJhbWVidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX2Zibyk7CisKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01B
R19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVy
ZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBn
bFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
OworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwor
CisgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBj
b3VudCAqLyAxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworCisgICAgLy8gQmluZCBjYW52YXMg
RkJPIGFuZCBzZXQgaW5pdGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KKyAgICBtX2JvdW5kRkJP
ID0gbV9mYm87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX2Zibyk7CisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9
CiAKIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQpAQCAtNzA4LDcgKzM3
NCw3IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0M0QoKQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4
dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAogewotICAgIHJldHVybiBtX2ludGVybmFsLT5t
X3RleHR1cmU7CisgICAgcmV0dXJuIG1fY29tcG9zaXRvclRleHR1cmU7CiB9CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC03NDEsMTMgKzQwNyw2MyBAQCBQYXNzUmVmUHRy
PEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1h
Z2VEYXRhKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiB7CisgICAgaWYgKCFtX2ludGVybmFsKQorICAgICAgICByZXR1cm47CisKICAg
ICBpZiAoKHdpZHRoID09IG1fY3VycmVudFdpZHRoICYmIGhlaWdodCA9PSBtX2N1cnJlbnRIZWln
aHQpIHx8ICghbV9pbnRlcm5hbCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY3VycmVudFdp
ZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVpZ2h0OwogCi0gICAgbV9pbnRl
cm5hbC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOworCisgICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgorICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1
cmUpOworICAgIGlmIChtX2F0dHJzLmFscGhhKQorICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwor
ICAgIGVsc2UKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCB3aWR0aCwgaGVpZ2h0
LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAobV9hdHRycy5kZXB0aCkg
eworICAgICAgICAvLyBDcmVhdGUgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4KKyAgICAgICAg
Z2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgICAgICBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKKyNlbHNl
CisgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVO
Q0lMOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgorICAgICAg
ICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7
CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IGNhbnZhcyBGQk8uCisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fY29tcG9zaXRvclRleHR1cmUsIDApOworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAg
ICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyNpZiAhZGVmaW5lZChR
VF9PUEVOR0xfRVNfMikKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBnbEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2VuZGlmCisKKyAgICBHTGVudW0gc3Rh
dHVzID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUik7CisgICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJf
Q09NUExFVEUpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFz
IEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpbnQgY2xlYXJGbGFncyA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklU
OworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOworICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisg
ICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJ
VDsKKworICAgIGdsQ2xlYXIoY2xlYXJGbGFncyk7CisgICAgZ2xGbHVzaCgpOwogfQogCiBJbnRT
aXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNvbnN0
CkBAIC03NTgsNyArNDc0LDcgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZl
VGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsK
KyAgICBnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQpAQCAtNzY2LDcgKzQ4Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0
dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAg
ICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5hdHRhY2hTaGFkZXIo
cHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBs
YXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCkBAIC03NzcsMzMgKzQ5MywzMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBHQzNEc2l6ZWkgbQogICAgIH0KIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1h
eENvdW50LCBjb3VudCwgc2hhZGVycyk7CisgICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3Jh
bSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5i
aW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRCdWZmZXIodGFyZ2V0LCBi
dWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDog
bV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Ci0gICAgbV9pbnRlcm5hbC0+YmluZEZyYW1lYnVmZmVy
KHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKKyAgICBtX2JvdW5kRkJPID0gYnVm
ZmVyID8gYnVmZmVyIDogbV9mYm87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2Jv
dW5kRkJPKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihH
QzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Ymlu
ZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBA
IC04MTUsNTUgKzUzMSw1NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShH
QzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdDM0RjbGFtcGYgZ3JlZW4sIEdD
M0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kQ29sb3IocmVkLCBn
cmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGdsQmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVu
dW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb24obW9kZSk7CisgICAgZ2xCbGVuZEVxdWF0aW9u
KG1vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJh
dGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVh
dGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CisgICAgZ2xCbGVuZEVxdWF0aW9uU2Vw
YXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBnbEJsZW5kRnVuYyhzZmFj
dG9yLCBkZmFjdG9yKTsKLX0gICAgICAgCit9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJs
ZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBHQzNEZW51
bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEZ1bmNTZXBhcmF0ZShz
cmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAgICBnbEJsZW5kRnVuY1NlcGFy
YXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNp
emUsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIC8qIGRh
dGEgKi8gMCwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIC8qIGRhdGEg
Ki8gMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdD
M0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0Rl
bnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsK
KyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5i
dWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICBnbEJ1ZmZlclN1
YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOwogfQogCiBHQzNEZW51bSBHcmFwaGlj
c0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9p
bnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgIHJldHVybiBnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBH
QzNEY2xhbXBmIGEpCkBAIC05MDQsNyArNjIwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBBU1NFUlQoc2hh
ZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hh
ZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGlu
dCBib3JkZXIpCkBAIC05NTIsNyArNjY4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0
YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRldGFjaFNoYWRlcihw
cm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2FwKQpAQCAtOTY0
LDcgKzY4MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2Fw
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1
aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBn
bERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVp
IGNvdW50KQpAQCAtOTg4LDcgKzcwNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJs
ZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGlu
ZGV4KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkKQEAgLTEwMDYsMTMgKzcyMiwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdD
M0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwg
YXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlLCBHQzNEaW50IGxldmVsKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBh
dHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKyAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQpA
QCAtMTAyNCw3ICs3NDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0Mz
RGVudW0gbW9kZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0Rl
bnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CisgICAgZ2xHZW5lcmF0
ZU1pcG1hcCh0YXJnZXQpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVB
dHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgQWN0aXZlSW5m
byYgaW5mbykKQEAgLTEwMzcsMTQgKzc1MywxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleAog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBt
YXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFw
aGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsK
KyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FU
VFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFtZSA9IChH
TGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0g
MDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAgICBtX2lu
dGVybmFsLT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVM
ZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVBdHRyaWIocHJvZ3Jh
bSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAK
ICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC0xMDY5
LDE0ICs3ODUsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGUKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAg
ICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgp
OworICAgIGdsR2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBo
aWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAog
ICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAg
R0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0g
dHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVVbmlmb3JtKHN0YXRpY19jYXN0
PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwg
JnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+
KHByb2dyYW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBu
YW1lKTsKIAogICAgIGlmICghbmFtZUxlbmd0aCkgewogICAgICAgICBmYXN0RnJlZShuYW1lKTsK
QEAgLTEwOTcsMjAgKzgxMywyMCBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxv
Y2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJgogICAgICAgICBy
ZXR1cm4gLTE7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKQogewotICAgIHJldHVy
biBtX2ludGVybmFsLT5tX2F0dHJzOworICAgIHJldHVybiBtX2F0dHJzOwogfQogCiBHQzNEZW51
bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewotICAgIGlmIChtX2ludGVybmFsLT5t
X3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIExpc3RIYXNoU2V0PEdDM0Rl
bnVtPjo6aXRlcmF0b3IgaXRlciA9IG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLmJlZ2lu
KCk7CisgICAgaWYgKG1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsKKyAgICAgICAgTGlz
dEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0gbV9zeW50aGV0aWNFcnJvcnMuYmVn
aW4oKTsKICAgICAgICAgR0MzRGVudW0gZXJyID0gKml0ZXI7Ci0gICAgICAgIG1faW50ZXJuYWwt
Pm1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKKyAgICAgICAgbV9zeW50aGV0aWNFcnJv
cnMucmVtb3ZlKGl0ZXIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0KIApAQCAtMTEzNiw3
ICs4NTIsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZmZXIoUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVy
bmFsLT5pc0J1ZmZlcihidWZmZXIpOworICAgIHJldHVybiBnbElzQnVmZmVyKGJ1ZmZlcik7CiB9
CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0VuYWJsZWQoR0MzRGVudW0gY2Fw
KQpAQCAtMTE1MSw3ICs4NjcsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNG
cmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm4g
R0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Cisg
ICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpA
QCAtMTE2MCw3ICs4NzYsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9n
cmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwog
ICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0
dXJuIG1faW50ZXJuYWwtPmlzUHJvZ3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gZ2xJc1Byb2dy
YW0ocHJvZ3JhbSk7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRl
cmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKQEAgLTExNjksNyArODg1LDcg
QEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9p
bnRlcm5hbC0+aXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc1Jl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xMTc4LDcgKzg5NCw3
IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlz
U2hhZGVyKHNoYWRlcik7CisgICAgcmV0dXJuIGdsSXNTaGFkZXIoc2hhZGVyKTsKIH0KIAogR0Mz
RGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmUpCkBAIC0xMjAwLDcgKzkxNiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQgcGFyYW0pCkBAIC0xMjUxLDEzICs5NjcsMTMgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGlu
dGVybmFsZm8KICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlmCi0gICAgbV9pbnRlcm5hbC0+
cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdl
KEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnNhbXBsZUNvdmVy
YWdlKHZhbHVlLCBpbnZlcnQpOworICAgIGdsU2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNjaXNzb3IoR0MzRGludCB4LCBHQzNEaW50
IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTEyODMsNyArOTk5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyLCBjb25zdCBTdHJpbmcmIHNvdXIKICAgICBDU3RyaW5nIHNvdXJjZUNTID0gcHJlZml4
ZWRTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBzb3VyY2VDUy5kYXRhKCk7
CiAgICAgaW50IGxlbmd0aCA9IHByZWZpeGVkU291cmNlLmxlbmd0aCgpOwotICAgIG1faW50ZXJu
YWwtPnNoYWRlclNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAm
bGVuZ3RoKTsKKyAgICBnbFNoYWRlclNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNvdW50ICov
IDEsICZkYXRhLCAmbGVuZ3RoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCkBAIC0xMjk1
LDcgKzEwMTEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51
bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0Mz
RGludCByZWYsIEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2Us
IGZ1bmMsIHJlZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMs
IHJlZiwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdD
M0R1aW50IG1hc2spCkBAIC0xMzA3LDcgKzEwMjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3Rl
bmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUo
ZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNE
ZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCkBAIC0xMzE5LDcgKzEw
MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwg
R0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0g
emZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFp
bCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpm
YWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCB2YWx1ZSkKQEAg
LTEzMzcsMTIxICsxMDUzLDEyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0
ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaQogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFmKGxvY2F0aW9u
LCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
MWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0y
Zihsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yZnYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNmKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0zZnYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxv
YXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2
MiwgdjMpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlm
b3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT51bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWl2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2
MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0y
aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0RpbnQgdjIpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2l2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBH
QzNEaW50IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Cisg
ICAgZ2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CisgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwor
ICAgIGdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9z
ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNw
b3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFy
cmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwg
c2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVz
ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dXNlUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xNDU5
LDYxICsxMTc1LDYxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0p
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKKyAg
ICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMWZ2
KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZl
cnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOworICAgIGdsVmVydGV4QXR0cmliMmYoaW5kZXgs
IHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdihH
QzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmdihp
bmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAgIGdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYw
LCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIzZnYo
aW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFZlcnRl
eEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmli
NGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwg
R0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBvZmZz
ZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxp
emVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KG9mZnNldCkpKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5
cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KQpAQCAtMTUzMSw3ICsxMjQ3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVy
aXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKQEAgLTE1
NDMsNyArMTI1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQs
IHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50
KiB2YWx1ZSkKQEAgLTE1NTUsNyArMTI3MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dy
YW0sIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFt
TmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1J
bmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTE1NjMsNyArMTI3OSw3IEBAIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAK
ICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9n
cmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RI
LCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAKQEAgLTE1NzEsNyArMTI4Nyw3
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0g
ICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwg
aW5mbyk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBp
bmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBA
IC0xNTgyLDE0ICsxMjk4LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3Jh
bUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hh
ZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRl
ciwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTE1OTcsMTQgKzEzMTMs
MTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2
KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7Cisg
ICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5H
VEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIqIGluZm8g
PSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAgICAgICAg
cmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxl
bmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0
aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJl
ZShpbmZvKTsKQEAgLTE2MTcsMTQgKzEzMzMsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hB
REVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBH
cmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOwogCiAgICAg
R0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxv
YyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9p
bnRlcm5hbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7Cisg
ICAgZ2xHZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAg
IFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNjQ3LDEzICsx
MzYzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9u
LCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRV
bmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1pdihw
cm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJp
bmcmIG5hbWUpCkBAIC0xNjYxLDE5ICsxMzc3LDE5IEBAIEdDM0RpbnQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgs
IHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBhcmFt
TmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBn
bEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogR0MzRHNp
emVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVpbnQg
aW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKQEAgLTE2ODEsNyArMTM5Nyw3IEBAIEdDM0RzaXpl
aXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZW51bSBwCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKICAgICAKICAgICBHTHZvaWQqIHBvaW50ZXIgPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVyKTsKKyAgICBnbEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2ludGVyKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90
Pihwb2ludGVyKSk7CiB9CiAKQEAgLTE3MDIsNyArMTQxOCw3IEBAIFBsYXRmb3JtM0RPYmplY3Qg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2lu
dGVybmFsLT5nZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuQnVm
ZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCkBA
IC0xNzEwLDI4ICsxNDI2LDI4IEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJuYWwtPmdlbkZy
YW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkZyYW1lYnVmZmVy
cygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQogCiBQbGF0
Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVy
bmFsLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0dXJuIGdsQ3JlYXRlUHJvZ3JhbSgpOwogfQog
CiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIo
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1
aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuUmVuZGVyYnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwg
JmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+
Y3JlYXRlU2hhZGVyKHR5cGUpOworICAgIHJldHVybiBnbENyZWF0ZVNoYWRlcih0eXBlKTsKIH0K
IAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCkBA
IC0xNzQ1LDMxICsxNDYxLDMxIEBAIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVRleHR1cmUoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsK
KyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5kZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBy
ZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIp
OworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVy
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUpCkBAIC0xNzgwLDMwICsxNDk2LDMwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51bSBlcnJvcikKIHsKLSAg
ICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOworICAgIG1fc3ludGhl
dGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtM
YXllckNvbXBvc2l0ZWQoKQogewotICAgIG1faW50ZXJuYWwtPm1fbGF5ZXJDb21wb3NpdGVkID0g
dHJ1ZTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAgICAgLy8gRklYTUU6IEFueSBhY2Nl
bGVyYXRlZCBjb21wb3NpdG9yIG5lZWRzIHRvIGJlIHRvbGQgdG8gcmUtcmVhZCBmcm9tIGhlcmUu
Ci0gICAgbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKKyAgICBtX2xheWVy
Q29tcG9zaXRlZCA9IGZhbHNlOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNv
bXBvc2l0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9z
aXRlZDsKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKIEV4dGVuc2lvbnMzRCog
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewotICAgIGlmICghbV9pbnRlcm5h
bC0+bV9leHRlbnNpb25zKQotICAgICAgICBtX2ludGVybmFsLT5tX2V4dGVuc2lvbnMgPSBhZG9w
dFB0cihuZXcgRXh0ZW5zaW9uczNEUXQpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5tX2V4dGVu
c2lvbnMuZ2V0KCk7CisgICAgaWYgKCFtX2V4dGVuc2lvbnMpCisgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7CisgICAgcmV0dXJuIG1fZXh0ZW5zaW9u
cy5nZXQoKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdl
KiBpbWFnZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100156</attachid>
            <date>2011-07-08 13:46:38 -0700</date>
            <delta_ts>2011-07-11 12:31:30 -0700</delta_ts>
            <desc>updated Jarkkos patch</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>80521</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNjhjZjM4Li41NmQ0YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0
IEBACisyMDExLTA3LTA4ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTU0CisKKyAgICAgICAgTW9k
aWZpZWQgT3BlbkdMIHN5bWJvbCByZXNvbHZlciB0byBiZSB0cmFuc3BhcmVudCBhbmQgZWFzaWVy
IHRvCisgICAgICAgIG1haW50YWluLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFByb2NzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpwbGF0Zm9ybVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNo
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRT
aGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmli
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRl
eHR1cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVN
aXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0
dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5p
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0xZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00Zik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0yaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
aSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjptYXJrQ29udGV4dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisKIDIwMTEtMDctMDggIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZnJhbWV3b3JrIGZvciBh
IG5ldy9kdW1teSBYTUxEb2N1bWVudFBhcnNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggMGNiZTdlMy4uZDY2NDhk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCkBAIC04Nyw2ICs4Nyw5IEBAIGNsYXNzIEV4dGVuc2lvbnMzRDsKICNpZiBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CisjZW5kaWYK
IGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTg5
Miw2ICs4OTUsMjIgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZFJlbmRlcmluZ1Jlc3VsdHModW5z
aWduZWQgY2hhciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSk7CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKFFUKQorI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2lmICFkZWZpbmVkKEFQSUVO
VFJZKQorI2RlZmluZSBBUElFTlRSWQorI2VuZGlmCisjZGVmaW5lIEdMX1BST0MoUmV0dXJuVmFs
dWUsIFByb2MsIFBhcmFtcykgXAorICAgIHR5cGVkZWYgUmV0dXJuVmFsdWUgKEFQSUVOVFJZKiBQ
cm9jIyNUeXBlKSBQYXJhbXM7IFwKKyAgICBQcm9jIyNUeXBlIFByb2M7CisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0RQcm9jcy5oIgorI3VuZGVmIEdMX1BST0MKKyNlbmRpZgorICAgIGZyaWVu
ZCBjbGFzcyBFeHRlbnNpb25zM0RRdDsKKyAgICBPd25QdHI8RXh0ZW5zaW9uczNEUXQ+IG1fZXh0
ZW5zaW9uczsKKyAgICBib29sIG1fcHJvY3NBcmVWYWxpZDsKKyNlbmRpZgorCiAgICAgaW50IG1f
Y3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQ7CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZl
OwogCkBAIC05MDAsNyArOTE5LDcgQEAgcHVibGljOgogICAgIFJldGFpblB0cjxXZWJHTExheWVy
PiBtX3dlYkdMTGF5ZXI7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
R1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkK
ICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFN0cmluZyBzb3VyY2U7CiAgICAgICAgIFN0
cmluZyBsb2c7CkBAIC05MDgsMTAgKzkyNywxMiBAQCBwdWJsaWM6CiAgICAgfSBTaGFkZXJTb3Vy
Y2VFbnRyeTsKICAgICBIYXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIFNoYWRlclNvdXJjZUVudHJ5
PiBtX3NoYWRlclNvdXJjZU1hcDsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICBmcmllbmQgY2xh
c3MgRXh0ZW5zaW9uczNET3BlbkdMOwogICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29tcGlsZXI7
CiAKICAgICBPd25QdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBtX2V4dGVuc2lvbnM7CisjZW5kaWYK
IAogICAgIEF0dHJpYnV0ZXMgbV9hdHRyczsKICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0PiA+IG1f
dmVydGV4QXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFByb2NzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFByb2NzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTkyODBkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUHJvY3MuaApAQCAtMCwwICsx
LDkwIEBACitHTF9QUk9DKHZvaWQsIGdsQWN0aXZlVGV4dHVyZSwgKEdDM0RlbnVtKSkKK0dMX1BS
T0Modm9pZCwgZ2xBdHRhY2hTaGFkZXIsIChHQzNEdWludCwgR0MzRHVpbnQpKQorR0xfUFJPQyh2
b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgKEdDM0R1aW50LCBHQzNEdWludCwgY29uc3QgY2hh
ciopKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRCdWZmZXIsIChHQzNEZW51bSwgR0MzRHVpbnQpKQor
R0xfUFJPQyh2b2lkLCBnbEJpbmRGcmFtZWJ1ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCitH
TF9QUk9DKHZvaWQsIGdsQmluZFJlbmRlcmJ1ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCitH
TF9QUk9DKHZvaWQsIGdsQmxlbmRDb2xvciwgKEdDM0RjbGFtcGYsIEdDM0RjbGFtcGYsIEdDM0Rj
bGFtcGYsIEdDM0RjbGFtcGYpKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kRXF1YXRpb24sIChHQzNE
ZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlLCAoR0MzRGVudW0s
IEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSwgKEdDM0RlbnVt
LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xCdWZmZXJE
YXRhLCAoR0MzRGVudW0sIEdDM0RzaXplaXB0ciwgY29uc3Qgdm9pZCosIEdDM0RlbnVtKSkKK0dM
X1BST0Modm9pZCwgZ2xCdWZmZXJTdWJEYXRhLCAoR0MzRGVudW0sIEdDM0RpbnRwdHIsIEdDM0Rz
aXplaXB0ciwgY29uc3Qgdm9pZCopKQorR0xfUFJPQyhHQzNEZW51bSwgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzLCAoR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbENvbXBpbGVTaGFkZXIsIChH
QzNEdWludCkpCitHTF9QUk9DKEdDM0R1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQorR0xfUFJP
QyhHQzNEdWludCwgZ2xDcmVhdGVTaGFkZXIsIChHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGds
RGVsZXRlQnVmZmVycywgKEdDM0RzaXplaSwgY29uc3QgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9p
ZCwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMsIChHQzNEc2l6ZWksIGNvbnN0IEdDM0R1aW50KikpCitH
TF9QUk9DKHZvaWQsIGdsRGVsZXRlUHJvZ3JhbSwgKEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwg
Z2xEZWxldGVSZW5kZXJidWZmZXJzLCAoR0MzRHNpemVpLCBjb25zdCBHQzNEdWludCopKQorR0xf
UFJPQyh2b2lkLCBnbERlbGV0ZVNoYWRlciwgKEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xE
ZXRhY2hTaGFkZXIsIChHQzNEdWludCwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSwgKEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlciwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50KSkK
K0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgKEdDM0RlbnVtLCBHQzNEZW51
bSwgR0MzRGVudW0sIEdDM0R1aW50LCBHQzNEaW50KSkKK0dMX1BST0Modm9pZCwgZ2xHZW5CdWZm
ZXJzLCAoR0MzRHNpemVpLCBHQzNEdWludCopKQorR0xfUFJPQyh2b2lkLCBnbEdlbmVyYXRlTWlw
bWFwLCAoR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVycywgKEdDM0Rz
aXplaSwgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCAoR0Mz
RHNpemVpLCBHQzNEdWludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZUF0dHJpYiwgKEdD
M0R1aW50LCBHQzNEdWludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkqLCBHQzNEaW50KiwgR0MzRGVu
dW0qLCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlVW5pZm9ybSwgKEdDM0R1aW50
LCBHQzNEdWludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkqLCBHQzNEaW50KiwgR0MzRGVudW0qLCBj
aGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0MzRHVpbnQsIEdD
M0RzaXplaSwgR0MzRHNpemVpKiwgR0MzRHVpbnQqKSkKK0dMX1BST0MoR0MzRGludCwgZ2xHZXRB
dHRyaWJMb2NhdGlvbiwgKEdDM0R1aW50LCBjb25zdCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGds
R2V0QnVmZmVyUGFyYW1ldGVyaXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQqKSkKK0dM
X1BST0Modm9pZCwgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgKEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRQ
cm9ncmFtSW5mb0xvZywgKEdDM0R1aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIGNoYXIqKSkK
K0dMX1BST0Modm9pZCwgZ2xHZXRQcm9ncmFtaXYsIChHQzNEdWludCwgR0MzRGVudW0sIEdDM0Rp
bnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgKEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRlckluZm9M
b2csIChHQzNEdWludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWkqLCBjaGFyKikpCitHTF9QUk9DKHZv
aWQsIGdsR2V0U2hhZGVyaXYsIChHQzNEdWludCwgR0MzRGVudW0sIEdDM0RpbnQqKSkKK0dMX1BS
T0Modm9pZCwgZ2xHZXRTaGFkZXJTb3VyY2UsIChHQzNEdWludCwgR0MzRHNpemVpLCBHQzNEc2l6
ZWkqLCBjaGFyKikpCitHTF9QUk9DKEdDM0RpbnQsIGdsR2V0VW5pZm9ybUxvY2F0aW9uLCAoR0Mz
RHVpbnQsIGNvbnN0IGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRVbmlmb3JtZnYsIChHQzNE
dWludCwgR0MzRGludCwgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VW5pZm9ybWl2
LCAoR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRWZXJ0
ZXhBdHRyaWJmdiwgKEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZv
aWQsIGdsR2V0VmVydGV4QXR0cmliaXYsIChHQzNEdWludCwgR0MzRGVudW0sIEdDM0RpbnQqKSkK
K0dMX1BST0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgKEdDM0R1aW50LCBHQzNE
ZW51bSwgdm9pZCoqKSkKK0dMX1BST0MoR0MzRGJvb2xlYW4sIGdsSXNCdWZmZXIsIChHQzNEdWlu
dCkpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElzRnJhbWVidWZmZXIsIChHQzNEdWludCkpCitH
TF9QUk9DKEdDM0Rib29sZWFuLCBnbElzUHJvZ3JhbSwgKEdDM0R1aW50KSkKK0dMX1BST0MoR0Mz
RGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXIsIChHQzNEdWludCkpCitHTF9QUk9DKEdDM0Rib29s
ZWFuLCBnbElzU2hhZGVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbExpbmtQcm9ncmFt
LCAoR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIChHQzNE
ZW51bSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKSkKK0dMX1BST0Modm9pZCwgZ2xT
YW1wbGVDb3ZlcmFnZSwgKEdDM0RjbGFtcGYsIEdDM0Rib29sZWFuKSkKK0dMX1BST0Modm9pZCwg
Z2xTaGFkZXJTb3VyY2UsIChHQzNEdWludCwgR0MzRHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0
IEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlLCAoR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsU3RlbmNp
bE1hc2tTZXBhcmF0ZSwgKEdDM0RlbnVtLCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsU3Rl
bmNpbE9wU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkp
CitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFmLCAoR0MzRGludCwgR0MzRGZsb2F0KSkKK0dMX1BS
T0Modm9pZCwgZ2xVbmlmb3JtMWZ2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEZmxv
YXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMWksIChHQzNEaW50LCBHQzNEaW50KSkKK0dM
X1BST0Modm9pZCwgZ2xVbmlmb3JtMWl2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNE
aW50KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTJmLCAoR0MzRGludCwgR0MzRGZsb2F0LCBH
QzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yZnYsIChHQzNEaW50LCBHQzNEc2l6
ZWksIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yaSwgKEdDM0Rp
bnQsIEdDM0RpbnQsIEdDM0RpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yaXYsIChHQzNE
aW50LCBHQzNEc2l6ZWksIGNvbnN0IEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3Jt
M2YsIChHQzNEaW50LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KSkKK0dMX1BST0Mo
dm9pZCwgZ2xVbmlmb3JtM2Z2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEZmxvYXQq
KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtM2ksIChHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50
LCBHQzNEaW50KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtM2l2LCAoR0MzRGludCwgR0MzRHNp
emVpLCBjb25zdCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRmLCAoR0MzRGlu
dCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KSkKK0dMX1BST0Mo
dm9pZCwgZ2xVbmlmb3JtNGZ2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEZmxvYXQq
KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGksIChHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50
LCBHQzNEaW50LCBHQzNEaW50KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGl2LCAoR0MzRGlu
dCwgR0MzRHNpemVpLCBjb25zdCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybU1h
dHJpeDJmdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgR0MzRGJvb2xlYW4sIGNvbnN0IEdDM0RmbG9h
dCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXgzZnYsIChHQzNEaW50LCBHQzNEc2l6
ZWksIEdDM0Rib29sZWFuLCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlm
b3JtTWF0cml4NGZ2LCAoR0MzRGludCwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiwgY29uc3QgR0Mz
RGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVXNlUHJvZ3JhbSwgKEdDM0R1aW50KSkKK0dMX1BS
T0Modm9pZCwgZ2xWYWxpZGF0ZVByb2dyYW0sIChHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGds
VmVydGV4QXR0cmliMWYsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0KSkKK0dMX1BST0Modm9p
ZCwgZ2xWZXJ0ZXhBdHRyaWIxZnYsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9Q
Uk9DKHZvaWQsIGdsVmVydGV4QXR0cmliMmYsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0LCBj
b25zdCBHQzNEZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjJmdiwgKEdDM0R1
aW50LCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIzZiwg
KEdDM0R1aW50LCBjb25zdCBHQzNEZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCwgY29uc3QgR0MzRGZs
b2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIzZnYsIChHQzNEdWludCwgY29uc3Qg
R0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliNGYsIChHQzNEdWludCwg
Y29uc3QgR0MzRGZsb2F0LCBjb25zdCBHQzNEZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCwgY29uc3Qg
R0MzRGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWI0ZnYsIChHQzNEdWludCwg
Y29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRlciwg
KEdDM0R1aW50LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGJvb2xlYW4sIEdDM0RzaXplaSwgY29u
c3Qgdm9pZCopKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAyZWJkY2ZhLi5kZWJhYzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtNTUsMTA5ICs1NSw2IEBAIHR5cGVkZWYgY2hhciBH
TGNoYXI7CiAjZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCiAjZW5kaWYKIAotI2lm
ICFkZWZpbmVkKEFQSUVOVFJZKQotI2RlZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBR
VF9PUEVOR0xfRVNfMgotdHlwZWRlZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRl
ZiBHTGludHB0ciBHTGludHB0clR5cGU7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXpl
aXB0clR5cGU7Ci10eXBlZGVmIHB0cmRpZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBY3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEF0dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVp
bnQsIEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5k
QnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
QmluZEZyYW1lYnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kQ29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBH
TGNsYW1wZiwgR0xjbGFtcGYpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0
aW9uVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRp
b25TZXBhcmF0ZVR5cGUpKEdMZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlKShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBH
TGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEJ1ZmZlckRhdGFUeXBlKSAoR0xlbnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lk
KiwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUp
IChHTGVudW0sIEdMaW50cHRyVHlwZSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwot
dHlwZWRlZiBHTGVudW0gKEFQSUVOVFJZKiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAo
R0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChH
THVpbnQpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAo
KTsKLXR5cGVkZWYgR0x1aW50IChBUElFTlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVt
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVp
LCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVi
dWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbERlbGV0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwg
R0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkg
KEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZW5CdWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZW5lcmF0ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdM
dWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkg
KEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVB
dHRyaWJUeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdM
ZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlm
b3JtVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVu
dW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFk
ZXJzVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRlZiBH
TGludCAoQVBJRU5UUlkqIGdsR2V0QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBj
aGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlw
ZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwg
R0xlbnVtLCBHTGludCogcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJv
Z3JhbUluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0s
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSos
IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1
aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRl
clNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVm
IEdMaW50IChBUElFTlRSWSogZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25z
dCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChH
THVpbnQsIEdMaW50LCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVu
aWZvcm1pdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVp
bnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4
QXR0cmliUG9pbnRlcnZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYg
R0xib29sZWFuIChBUElFTlRSWSogZ2xJc0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBH
TGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzRnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVk
ZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVk
ZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwot
dHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBH
TGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1w
bGVDb3ZlcmFnZVR5cGUpIChHTGNsYW1wZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsU2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioq
LCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1Nl
cGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51
bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVu
aWZvcm0xZlR5cGUpIChHTGludCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm0xZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNv
bnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChH
TGludCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZv
cm0yZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBj
b25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAo
R0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xVbmlmb3JtM2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdM
aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm00ZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9h
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdM
c2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bTRpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdM
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJv
b2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bU1hdHJpeDRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwg
Y29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFm
dlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVmVydGV4QXR0cmliMmZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZs
b2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdM
dWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhB
dHRyaWIzZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0
IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBl
KSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZl
cnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwg
Y29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50
LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKik7Ci0KIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWwKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQpAQCAtMTY4LDEzICs2NSwxMCBAQCBjbGFzcyBHcmFw
aGljc0NvbnRleHQzREludGVybmFsCiAjZW5kaWYKIHsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2luZG93KiBob3N0V2luZG93KTsKKyAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBo
aWNzQ29udGV4dDNEKiwgSG9zdFdpbmRvdyopOwogICAgIH5HcmFwaGljc0NvbnRleHQzREludGVy
bmFsKCk7CiAKLSAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBtX3ZhbGlkOyB9Ci0KICAgICBR
R0xXaWRnZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKLSAgICB2b2lkIHJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVT
RShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spIGNvbnN0Owog
I2VuZGlmCkBAIC0xODIsMTIzICs3NiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludChRUGFp
bnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKICAgICBR
UmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAKLSAgICBnbEFjdGl2ZVRleHR1cmVUeXBlIGFj
dGl2ZVRleHR1cmU7Ci0gICAgZ2xBdHRhY2hTaGFkZXJUeXBlIGF0dGFjaFNoYWRlcjsKLSAgICBn
bEJpbmRBdHRyaWJMb2NhdGlvblR5cGUgYmluZEF0dHJpYkxvY2F0aW9uOwotICAgIGdsQmluZEJ1
ZmZlclR5cGUgYmluZEJ1ZmZlcjsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlclR5cGUgYmluZEZyYW1l
YnVmZmVyOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUgYmluZFJlbmRlcmJ1ZmZlcjsKLSAg
ICBnbEJsZW5kQ29sb3JUeXBlIGJsZW5kQ29sb3I7Ci0gICAgZ2xCbGVuZEVxdWF0aW9uVHlwZSBi
bGVuZEVxdWF0aW9uOwotICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSBibGVuZEVxdWF0
aW9uU2VwYXJhdGU7Ci0gICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5cGUgYmxlbmRGdW5jU2VwYXJh
dGU7Ci0gICAgZ2xCdWZmZXJEYXRhVHlwZSBidWZmZXJEYXRhOwotICAgIGdsQnVmZmVyU3ViRGF0
YVR5cGUgYnVmZmVyU3ViRGF0YTsKLSAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlIGNo
ZWNrRnJhbWVidWZmZXJTdGF0dXM7Ci0gICAgZ2xDb21waWxlU2hhZGVyVHlwZSBjb21waWxlU2hh
ZGVyOwotICAgIGdsQ3JlYXRlUHJvZ3JhbVR5cGUgY3JlYXRlUHJvZ3JhbTsKLSAgICBnbENyZWF0
ZVNoYWRlclR5cGUgY3JlYXRlU2hhZGVyOwotICAgIGdsRGVsZXRlQnVmZmVyc1R5cGUgZGVsZXRl
QnVmZmVyczsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUgZGVsZXRlRnJhbWVidWZmZXJz
OwotICAgIGdsRGVsZXRlUHJvZ3JhbVR5cGUgZGVsZXRlUHJvZ3JhbTsKLSAgICBnbERlbGV0ZVJl
bmRlcmJ1ZmZlcnNUeXBlIGRlbGV0ZVJlbmRlcmJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVTaGFkZXJU
eXBlIGRlbGV0ZVNoYWRlcjsKLSAgICBnbERldGFjaFNoYWRlclR5cGUgZGV0YWNoU2hhZGVyOwot
ICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBkaXNhYmxlVmVydGV4QXR0cmliQXJy
YXk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUgZW5hYmxlVmVydGV4QXR0cmli
QXJyYXk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5cGUgZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXI7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRFR5cGUgZnJhbWVidWZmZXJUZXh0
dXJlMkQ7Ci0gICAgZ2xHZW5CdWZmZXJzVHlwZSBnZW5CdWZmZXJzOwotICAgIGdsR2VuZXJhdGVN
aXBtYXBUeXBlIGdlbmVyYXRlTWlwbWFwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzVHlwZSBnZW5G
cmFtZWJ1ZmZlcnM7Ci0gICAgZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSBnZW5SZW5kZXJidWZmZXJz
OwotICAgIGdsR2V0QWN0aXZlQXR0cmliVHlwZSBnZXRBY3RpdmVBdHRyaWI7Ci0gICAgZ2xHZXRB
Y3RpdmVVbmlmb3JtVHlwZSBnZXRBY3RpdmVVbmlmb3JtOwotICAgIGdsR2V0QXR0YWNoZWRTaGFk
ZXJzVHlwZSBnZXRBdHRhY2hlZFNoYWRlcnM7Ci0gICAgZ2xHZXRBdHRyaWJMb2NhdGlvblR5cGUg
Z2V0QXR0cmliTG9jYXRpb247Ci0gICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0QnVm
ZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlR5cGUgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRQcm9n
cmFtSW5mb0xvZ1R5cGUgZ2V0UHJvZ3JhbUluZm9Mb2c7Ci0gICAgZ2xHZXRQcm9ncmFtaXZUeXBl
IGdldFByb2dyYW1pdjsKLSAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFNoYWRlckluZm9Mb2dUeXBlIGdldFNo
YWRlckluZm9Mb2c7Ci0gICAgZ2xHZXRTaGFkZXJpdlR5cGUgZ2V0U2hhZGVyaXY7Ci0gICAgZ2xH
ZXRTaGFkZXJTb3VyY2VUeXBlIGdldFNoYWRlclNvdXJjZTsKLSAgICBnbEdldFVuaWZvcm1mdlR5
cGUgZ2V0VW5pZm9ybWZ2OwotICAgIGdsR2V0VW5pZm9ybWl2VHlwZSBnZXRVbmlmb3JtaXY7Ci0g
ICAgZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlIGdldFVuaWZvcm1Mb2NhdGlvbjsKLSAgICBnbEdl
dFZlcnRleEF0dHJpYmZ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJmdjsKLSAgICBnbEdldFZlcnRleEF0
dHJpYml2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJpdjsKLSAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydjsKLSAgICBnbElzQnVmZmVyVHlwZSBpc0J1
ZmZlcjsKLSAgICBnbElzRnJhbWVidWZmZXJUeXBlIGlzRnJhbWVidWZmZXI7Ci0gICAgZ2xJc1By
b2dyYW1UeXBlIGlzUHJvZ3JhbTsKLSAgICBnbElzUmVuZGVyYnVmZmVyVHlwZSBpc1JlbmRlcmJ1
ZmZlcjsKLSAgICBnbElzU2hhZGVyVHlwZSBpc1NoYWRlcjsKLSAgICBnbExpbmtQcm9ncmFtVHlw
ZSBsaW5rUHJvZ3JhbTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlIHJlbmRlcmJ1ZmZl
clN0b3JhZ2U7Ci0gICAgZ2xTYW1wbGVDb3ZlcmFnZVR5cGUgc2FtcGxlQ292ZXJhZ2U7Ci0gICAg
Z2xTaGFkZXJTb3VyY2VUeXBlIHNoYWRlclNvdXJjZTsKLSAgICBnbFN0ZW5jaWxGdW5jU2VwYXJh
dGVUeXBlIHN0ZW5jaWxGdW5jU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlVHlw
ZSBzdGVuY2lsTWFza1NlcGFyYXRlOwotICAgIGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlIHN0ZW5j
aWxPcFNlcGFyYXRlOwotICAgIGdsVW5pZm9ybTFmVHlwZSB1bmlmb3JtMWY7Ci0gICAgZ2xVbmlm
b3JtMWZ2VHlwZSB1bmlmb3JtMWZ2OwotICAgIGdsVW5pZm9ybTFpVHlwZSB1bmlmb3JtMWk7Ci0g
ICAgZ2xVbmlmb3JtMWl2VHlwZSB1bmlmb3JtMWl2OwotICAgIGdsVW5pZm9ybTJmVHlwZSB1bmlm
b3JtMmY7Ci0gICAgZ2xVbmlmb3JtMmZ2VHlwZSB1bmlmb3JtMmZ2OwotICAgIGdsVW5pZm9ybTJp
VHlwZSB1bmlmb3JtMmk7Ci0gICAgZ2xVbmlmb3JtMml2VHlwZSB1bmlmb3JtMml2OwotICAgIGds
VW5pZm9ybTNmVHlwZSB1bmlmb3JtM2Y7Ci0gICAgZ2xVbmlmb3JtM2Z2VHlwZSB1bmlmb3JtM2Z2
OwotICAgIGdsVW5pZm9ybTNpVHlwZSB1bmlmb3JtM2k7Ci0gICAgZ2xVbmlmb3JtM2l2VHlwZSB1
bmlmb3JtM2l2OwotICAgIGdsVW5pZm9ybTRmVHlwZSB1bmlmb3JtNGY7Ci0gICAgZ2xVbmlmb3Jt
NGZ2VHlwZSB1bmlmb3JtNGZ2OwotICAgIGdsVW5pZm9ybTRpVHlwZSB1bmlmb3JtNGk7Ci0gICAg
Z2xVbmlmb3JtNGl2VHlwZSB1bmlmb3JtNGl2OwotICAgIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUg
dW5pZm9ybU1hdHJpeDJmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXgzZnZUeXBlIHVuaWZvcm1NYXRy
aXgzZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSB1bmlmb3JtTWF0cml4NGZ2OwotICAg
IGdsVXNlUHJvZ3JhbVR5cGUgdXNlUHJvZ3JhbTsKLSAgICBnbFZhbGlkYXRlUHJvZ3JhbVR5cGUg
dmFsaWRhdGVQcm9ncmFtOwotICAgIGdsVmVydGV4QXR0cmliMWZUeXBlIHZlcnRleEF0dHJpYjFm
OwotICAgIGdsVmVydGV4QXR0cmliMWZ2VHlwZSB2ZXJ0ZXhBdHRyaWIxZnY7Ci0gICAgZ2xWZXJ0
ZXhBdHRyaWIyZlR5cGUgdmVydGV4QXR0cmliMmY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBl
IHZlcnRleEF0dHJpYjJmdjsKLSAgICBnbFZlcnRleEF0dHJpYjNmVHlwZSB2ZXJ0ZXhBdHRyaWIz
ZjsKLSAgICBnbFZlcnRleEF0dHJpYjNmdlR5cGUgdmVydGV4QXR0cmliM2Z2OwotICAgIGdsVmVy
dGV4QXR0cmliNGZUeXBlIHZlcnRleEF0dHJpYjRmOwotICAgIGdsVmVydGV4QXR0cmliNGZ2VHlw
ZSB2ZXJ0ZXhBdHRyaWI0ZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyVHlwZSB2ZXJ0ZXhB
dHRyaWJQb2ludGVyOwotCi0gICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRy
czsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1f
aG9zdFdpbmRvdzsKICAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7CiAgICAgUUdMV2lkZ2V0KiBt
X3ZpZXdwb3J0R0xXaWRnZXQ7Ci0gICAgUVJlY3RGIG1fYm91bmRpbmdSZWN0OwotICAgIEdMdWlu
dCBtX3RleHR1cmU7Ci0gICAgR0x1aW50IG1fY2FudmFzRmJvOwotICAgIEdMdWludCBtX2N1cnJl
bnRGYm87Ci0gICAgR0x1aW50IG1fZGVwdGhCdWZmZXI7Ci0gICAgYm9vbCBtX2xheWVyQ29tcG9z
aXRlZDsKLSAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBpbnQ+IG1fc3ludGhldGljRXJyb3JzOwot
Ci0gICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4dGVuc2lvbnM7Ci0KLXByaXZhdGU6CiAK
ICAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwotICAgIGJvb2wg
bV92YWxpZDsKIH07CiAKLSNpZiBkZWZpbmVkIChRVF9PUEVOR0xfRVNfMikgCi0jZGVmaW5lIEdF
VF9QUk9DX0FERFJFU1MoUHJvYykgUHJvYwotI2Vsc2UKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVT
UyhQcm9jKSByZWludGVycHJldF9jYXN0PFByb2MjI1R5cGU+KGdldFByb2NBZGRyZXNzKCNQcm9j
KSk7Ci0jZW5kaWYKLQogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNHTEVTMkNvbXBsaWFudCgp
IGNvbnN0CiB7CiAjaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpCkBAIC0zMDgsMTcgKzkzLDEx
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogI2Vu
ZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCi0gICAgOiBtX2F0dHJzKGF0dHJzKQorR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwg
bV9ob3N0V2luZG93KGhvc3RXaW5kb3cpCiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAgLCBtX3Zp
ZXdwb3J0R0xXaWRnZXQoMCkKLSAgICAsIG1fdGV4dHVyZSgwKQotICAgICwgbV9jYW52YXNGYm8o
MCkKLSAgICAsIG1fY3VycmVudEZibygwKQotICAgICwgbV9kZXB0aEJ1ZmZlcigwKQotICAgICwg
bV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCi0gICAgLCBtX3ZhbGlkKHRydWUpCiB7CiAgICAgbV92
aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdpZGdldCgpOwogCkBAIC0zMjcsMTUzICsx
MDYsMjMgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICBlbHNlCiAgICAgICAgIG1fZ2xX
aWRnZXQgPSBuZXcgUUdMV2lkZ2V0KCk7CiAKLSAgICBpZiAoIW1fZ2xXaWRnZXQtPmlzVmFsaWQo
KSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgaW5p
dGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICBtX3ZhbGlkID0gZmFsc2U7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBHZW9tZXRyeSBjYW4gYmUgc2V0IHRvIHplcm8gYmVj
YXVzZSBtX2dsV2lkZ2V0IGlzIHVzZWQgb25seSBmb3IgaXRzIFFHTENvbnRleHQuCiAgICAgbV9n
bFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7CiAKLSNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQotICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOwotI2Vsc2UKLSAgICBpZiAobV9h
dHRycy5zdGVuY2lsKQotICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKLSNlbmRpZgotICAg
IG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0KICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogCi0gICAgYWN0aXZlVGV4dHVyZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0
dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVy
KTsKLSAgICBiaW5kQXR0cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJp
YkxvY2F0aW9uKTsKLSAgICBiaW5kQnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRCdWZm
ZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVi
dWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZFJl
bmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xvciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZENv
bG9yKTsKLSAgICBibGVuZEVxdWF0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRp
b24pOwotICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGUpOwotICAgIGJsZW5kRnVuY1NlcGFyYXRlID0gR0VUX1BST0NfQURE
UkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKLSAgICBidWZmZXJEYXRhID0gR0VUX1BST0NfQURE
UkVTUyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1ZmZlclN1YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNT
KGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKTsKLSAgICBjb21waWxlU2hhZGVyID0g
R0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFkZXIpOwotICAgIGNyZWF0ZVByb2dyYW0gPSBH
RVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJvZ3JhbSk7Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VU
X1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7Ci0gICAgZGVsZXRlQnVmZmVycyA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKLSAgICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBH
RVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZmZXJzKTsKLSAgICBkZWxldGVQcm9ncmFt
ID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVByb2dyYW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1
ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlUmVuZGVyYnVmZmVycyk7Ci0gICAgZGVs
ZXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNo
U2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERldGFjaFNoYWRlcik7Ci0gICAgZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVTUyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJPQ19BRERSRVNTKGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyID0g
R0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1
ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7
Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBn
ZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAg
Z2VuRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0g
ICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJz
KTsKLSAgICBnZXRBY3RpdmVBdHRyaWIgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0
cmliKTsKLSAgICBnZXRBY3RpdmVVbmlmb3JtID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2
ZVVuaWZvcm0pOwotICAgIGdldEF0dGFjaGVkU2hhZGVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xH
ZXRBdHRhY2hlZFNoYWRlcnMpOwotICAgIGdldEF0dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKLSAgICBnZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOwotICAgIGdldFByb2dyYW1JbmZvTG9nID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsKLSAgICBnZXRQcm9ncmFtaXYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2KTsKLSAgICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0g
ICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9n
KTsKLSAgICBnZXRTaGFkZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0g
ICAgZ2V0U2hhZGVyU291cmNlID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlclNvdXJjZSk7
Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1mdik7Ci0g
ICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1pdik7Ci0gICAg
Z2V0VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlv
bik7Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4
QXR0cmliZnYpOwotICAgIGdldFZlcnRleEF0dHJpYml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdl
dFZlcnRleEF0dHJpYml2KTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydik7Ci0gICAgaXNCdWZmZXIgPSBHRVRf
UFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOwotICAgIGlzRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19B
RERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0gICAgaXNQcm9ncmFtID0gR0VUX1BST0NfQUREUkVT
UyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGds
SXNSZW5kZXJidWZmZXIpOwotICAgIGlzU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzU2hh
ZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7
Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVDb3ZlcmFnZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1w
bGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291cmNlID0gR0VUX1BST0NfQUREUkVTUyhnbFNoYWRl
clNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xT
dGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAgICBzdGVuY2lsTWFza1NlcGFyYXRlID0gR0VUX1BST0Nf
QUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUpOwotICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0g
R0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNlcGFyYXRlKTsKLSAgICB1bmlmb3JtMWYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmKTsKLSAgICB1bmlmb3JtMWZ2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0xZnYpOwotICAgIHVuaWZvcm0xaSA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtMWkpOwotICAgIHVuaWZvcm0xaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTFpdik7Ci0gICAgdW5pZm9ybTJmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yZik7Ci0g
ICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlm
b3JtMmkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpKTsKLSAgICB1bmlmb3JtMml2ID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYpOwotICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtM2YpOwotICAgIHVuaWZvcm0zZnYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTNmdik7Ci0gICAgdW5pZm9ybTNpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsK
LSAgICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRmKTsKLSAgICB1bmlm
b3JtNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00ZnYpOwotICAgIHVuaWZvcm00aSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGkpOwotICAgIHVuaWZvcm00aXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsVW5pZm9ybTRpdik7Ci0gICAgdW5pZm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKLSAgICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgzZnYpOwotICAgIHVuaWZvcm1NYXRyaXg0ZnYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsKLSAgICB2YWxpZGF0ZVByb2dyYW0gPSBH
RVRfUFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQcm9ncmFtKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZik7Ci0gICAgdmVydGV4QXR0cmliMWZ2
ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjFmdik7Ci0gICAgdmVydGV4QXR0cmli
MmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMmYpOwotICAgIHZlcnRleEF0dHJp
YjJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIyZnYpOwotICAgIHZlcnRleEF0
dHJpYjNmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhB
dHRyaWIzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0
ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVy
dGV4QXR0cmliNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjRmdik7Ci0gICAg
dmVydGV4QXR0cmliUG9pbnRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKTsKLQotICAgIGlmICghbV92YWxpZCkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNz
Q29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxl
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3Ig
dGhlIGNhbnZhcyBGQk8uCi0gICAgZ2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Nh
bnZhc0Zibyk7Ci0KLSAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwotICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsK
LSAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xB
TVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4
dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBnZW5S
ZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKLQogI2lmICFkZWZp
bmVkKFFUX09QRU5HTF9FU18yKQogICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CiAgICAg
Z2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7CiAjZW5kaWYKLQotICAgIC8v
IEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCi0g
ICAgbV9jdXJyZW50RmJvID0gbV9jYW52YXNGYm87Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwotICAgIGdsQ2xlYXJDb2xv
cigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCiB7CiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKICAgICBpZiAobV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIDo6Z2xEZWxl
dGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICAgICAgZGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgIGRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9jYW52
YXNGYm8pOworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX2NvbnRleHQtPm1fY29tcG9z
aXRvclRleHR1cmUpOworICAgICAgICBtX2NvbnRleHQtPmdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmbV9jb250ZXh0LT5tX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIG1fY29udGV4dC0+
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fY29udGV4dC0+bV9mYm8pOwogICAgIH0KICAgICBk
ZWxldGUgbV9nbFdpZGdldDsKICAgICBtX2dsV2lkZ2V0ID0gMDsKQEAgLTQ5Nyw2OSArMTQ2LDEy
IEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVpbnQzMiBwaXhlbCkKICAg
ICByZXR1cm4gKChwaXhlbCA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4
ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKHdpZHRo
ID09IG1fYm91bmRpbmdSZWN0LndpZHRoKCkgJiYgaGVpZ2h0ID09IG1fYm91bmRpbmdSZWN0Lmhl
aWdodCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2JvdW5kaW5nUmVjdCA9IFFSZWN0RihR
UG9pbnRGKDAsIDApLCBRU2l6ZUYod2lkdGgsIGhlaWdodCkpOwotCi0gICAgbV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLQotICAgIC8vIENyZWF0ZSBjb2xvciBidWZmZXIKLSAgICBnbEJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUpOwotICAgIGlm
IChtX2F0dHJzLmFscGhhKQotICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0
aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwotICAgIGVsc2UKLSAg
ICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZl
bCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIg
Ki8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIC8qIGRhdGEgKi8gMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBpZiAobV9hdHRycy5kZXB0aCkgewotICAgICAgICAv
LyBDcmVhdGUgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4KLSAgICAgICAgYmluZFJlbmRlcmJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSNp
ZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9D
T01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Ci0jZWxzZQotICAgICAgICBpZiAobV9hdHRycy5z
dGVuY2lsKQotICAgICAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3
aWR0aCwgaGVpZ2h0KTsKLSNlbmRpZgotICAgICAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwotICAgIH0KLQotICAgIC8vIENvbnN0cnVjdCBj
YW52YXMgRkJPLgotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fY2FudmFzRmJvKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5U
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7Ci0gICAgaWYg
KG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1F
TlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lm
ICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAg
ICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0jZW5kaWYKLQotICAgIEdMZW51bSBz
dGF0dXMgPSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUik7Ci0gICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJf
Q09NUExFVEUpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFz
IEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpbnQgY2xlYXJGbGFncyA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklU
OwotICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOwotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0g
ICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJ
VDsKLQotICAgIGdsQ2xlYXIoY2xlYXJGbGFncyk7Ci0gICAgZ2xGbHVzaCgpOwotfQotCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVy
ZSogbWFzaykgY29uc3QKIHsKICAgICBpZiAodGV4dHVyZU1hcHBlci0+aXNPcGVuR0xCYWNrZWQo
KSkgewogICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIHRleG1hcEdMLT5kcmF3VGV4
dHVyZShtX3RleHR1cmUsICFtX2F0dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdldFJl
Y3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKKyAgICAgICAgdGV4
bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSwgIW1fY29u
dGV4dC0+bV9hdHRycy5hbHBoYSwgRmxvYXRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBtYXRyaXgs
IG9wYWNpdHksIG1hc2ssIHRydWUgLyogZmxpcCAqLyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTU2OSwyMSArMTYxLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlCiAgICAgcGFp
bnRlci0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7CiAgICAgcGFpbnRlci0+c2V0T3BhY2l0eShvcGFj
aXR5KTsKIAorICAgIGNvbnN0IGludCBoZWlnaHQgPSBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdo
dDsKKyAgICBjb25zdCBpbnQgd2lkdGggPSBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoOworCiAg
ICAgLy8gQWx0ZXJuYXRpdmVseSByZWFkIHBpeGVscyB0byBhIG1lbW9yeSBidWZmZXIuCi0gICAg
UUltYWdlIG9mZnNjcmVlbkltYWdlKG1fYm91bmRpbmdSZWN0LndpZHRoKCksIG1fYm91bmRpbmdS
ZWN0LmhlaWdodCgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJbWFnZSBvZmZzY3Jl
ZW5JbWFnZSh3aWR0aCwgaGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwogICAgIHF1aW50
MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1h
Z2UuYml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgYmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwot
ICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9ib3VuZGluZ1JlY3Qud2lk
dGgoKSwgbV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOworI2lmIGRlZmlu
ZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKKyNlbHNlCisgICAgbV9jb250ZXh0
LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29u
dGV4dC0+bV9mYm8pOworI2VuZGlmCisgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAq
LyAwLCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAotICAgIGJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisjaWYgZGVm
aW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CisjZWxzZQorICAgIG1f
Y29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOworI2VuZGlmCiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMg
dXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVm
dAogICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQg
dGhlIHRvcCBsZWZ0LgogICAgIHF1aW50MzIqIHBpeGVsc1NyYyA9IGltYWdlUGl4ZWxzOwotICAg
IGNvbnN0IGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fYm91bmRpbmdSZWN0LmhlaWdo
dCgpKTsKLSAgICBjb25zdCBpbnQgd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fYm91bmRpbmdS
ZWN0LndpZHRoKCkpOwogICAgIGNvbnN0IGludCBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjsKICAg
ICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoYWxmSGVpZ2h0OyArK3JvdykgewogICAgICAgICBj
b25zdCBpbnQgdGFyZ2V0SWR4ID0gKGhlaWdodCAtIDEgLSByb3cpICogd2lkdGg7CkBAIC02MTAs
NyArMjExLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGUKIAogUVJlY3RGIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYm91
bmRpbmdSZWN0OworICAgIHJldHVybiBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKG1fY29u
dGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIs
IGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQp
CkBAIC02MjMsNyArMjI0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICAvLyB3aXRo
IGJyb3dzZXJzIE9wZW5HTCBjb250ZXh0LgogICAgIFFHTFdpZGdldCogdmlld3BvcnRHTFdpZGdl
dCA9IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKICAgICBpZiAodmlld3BvcnRHTFdpZGdldCAmJiB2
aWV3cG9ydEdMV2lkZ2V0ID09IG1fdmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0
ID09IHBhaW50ZXItPmRldmljZSgpKSB7Ci0gICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdU
ZXh0dXJlKHJlY3QsIG1fdGV4dHVyZSk7CisgICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdU
ZXh0dXJlKHJlY3QsIG1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTYzMiwxMCArMjMzLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdy
YXBoCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIq
PihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NhbnZhc0Zibyk7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8p
OworI2Vsc2UKKyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisjZW5kaWYKICAgICBnbFJlYWRQ
aXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCBpbWFnZVBpeGVscyk7Ci0KLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIp
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NvbnRleHQtPm1fYm91bmRGQk8pOworI2Vsc2UKKyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5k
RkJPKTsKKyNlbmRpZgogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywg
YW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJH
QjMyIG9yIEFSR0IzMl9QTSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTY3
MCwxNCArMjc4LDEzIEBAIHZvaWQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmdldFByb2NB
ZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYykKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsg
aSsrKSB7CiAgICAgICAgIFN0cmluZyBuYW1lV2l0aEV4dCA9IHByb2MgKyBleHRbaV07Ci0KICAg
ICAgICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+Z2V0UHJvY0FkZHJlc3Mo
UVN0cmluZyhuYW1lV2l0aEV4dCkpOwogICAgICAgICBpZiAoYWRkcikgCiAgICAgICAgICAgICBy
ZXR1cm4gYWRkcjsKICAgICB9CiAKICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBE
aWQgbm90IGZpbmQgR0wgZnVuY3Rpb24gJXMiLCBwcm9jLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1f
dmFsaWQgPSBmYWxzZTsKKyAgICBtX2NvbnRleHQtPm1fcHJvY3NBcmVWYWxpZCA9IGZhbHNlOwog
ICAgIHJldHVybiAwOwogfQogCkBAIC02OTEsMTAgKzI5OCw2OSBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaQogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJv
b2wpCi0gICAgOiBtX2lzUmVzb3VyY2VTYWZlKGZhbHNlKSwgbV9pbnRlcm5hbChhZG9wdFB0cihu
ZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpKQorICAgIDog
bV9wcm9jc0FyZVZhbGlkKHRydWUpCisgICAgLCBtX2N1cnJlbnRXaWR0aCgwKQorICAgICwgbV9j
dXJyZW50SGVpZ2h0KDApCisgICAgLCBtX2lzUmVzb3VyY2VTYWZlKGZhbHNlKQorICAgICwgbV9h
dHRycyhhdHRycykKKyAgICAsIG1fdGV4dHVyZSgwKQorICAgICwgbV9jb21wb3NpdG9yVGV4dHVy
ZSgwKQorICAgICwgbV9mYm8oMCkKKyAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCisgICAg
LCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKKyAgICAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCgw
KQorICAgICwgbV9ib3VuZEZCTygwKQorICAgICwgbV9hY3RpdmVUZXh0dXJlKDApCisgICAgLCBt
X2JvdW5kVGV4dHVyZTAoMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKKyAgICAsIG1fbXVs
dGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1
ZmZlcigwKQorICAgICwgbV9pbnRlcm5hbChhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbCh0aGlzLCBob3N0V2luZG93KSkpCiB7Ci0gICAgaWYgKCFtX2ludGVybmFsLT5pc1Zh
bGlkKCkpCi0gICAgICAgIG1faW50ZXJuYWwuY2xlYXIoKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQorICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOworI2Vsc2UKKyAgICBpZiAobV9h
dHRycy5zdGVuY2lsKQorICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyNlbmRpZgorICAg
IG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7CisKKyAgICBpZiAoIW1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPmlzVmFsaWQoKSkgeworICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNE
OiBRR0xXaWRnZXQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAgICAgICBtX2ludGVybmFs
ID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmICFkZWZpbmVkKFFUX09Q
RU5HTF9FU18yKQorI2RlZmluZSBHTF9QUk9DKFJldHVyblZhbHVlLCBQcm9jLCBQYXJhbXMpIFBy
b2MgPSByZWludGVycHJldF9jYXN0PFByb2MjI1R5cGU+KG1faW50ZXJuYWwtPmdldFByb2NBZGRy
ZXNzKCNQcm9jKSk7CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIgorI3VuZGVm
IEdMX1BST0MKKyNlbmRpZgorCisgICAgaWYgKCFtX3Byb2NzQXJlVmFsaWQpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5zaW9u
cyBhcmUgbm90IGF2YWlsYWJsZSIpOworICAgICAgICBtX2ludGVybmFsID0gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENyZWF0ZSBidWZmZXJzIGZvciB0aGUgY2Fu
dmFzIEZCTy4KKyAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9mYm8pOwor
CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgZ2xCaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVy
ZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6
TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBo
aWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKKworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAg
ICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKKworICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29s
b3IgdG8gYmxhY2suCisgICAgbV9ib3VuZEZCTyA9IG1fZmJvOworICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIGdsQ2xlYXJD
b2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBo
aWNzQ29udGV4dDNEKCkKQEAgLTcwOCw3ICszNzQsNyBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkKIAogUGxh
dGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV90ZXh0dXJlOworICAgIHJldHVybiBtX2NvbXBv
c2l0b3JUZXh0dXJlOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAt
NzQxLDEzICs0MDcsNjMgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNE
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAgIGlmICghbV9pbnRl
cm5hbCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCh3aWR0aCA9PSBtX2N1cnJlbnRXaWR0
aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KSB8fCAoIW1faW50ZXJuYWwpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwogICAgIG1fY3VycmVudEhl
aWdodCA9IGhlaWdodDsKIAotICAgIG1faW50ZXJuYWwtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7
CisgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKKworICAgIC8vIENy
ZWF0ZSBjb2xvciBidWZmZXIKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBpZiAobV9hdHRycy5hbHBoYSkK
KyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBs
ZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9y
ZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKKyAgICBlbHNlCisgICAgICAgIGdsVGV4SW1hZ2Uy
RChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQiwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0IsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICov
IDApOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAp
OworCisgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFu
ZCBzdGVuY2lsIGJ1ZmZlcnMuCisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjaWYgZGVmaW5l
ZChRVF9PUEVOR0xfRVNfMikKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05F
TlQxNiwgd2lkdGgsIGhlaWdodCk7CisjZWxzZQorICAgICAgICBpZiAobV9hdHRycy5zdGVuY2ls
KQorICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lk
dGgsIGhlaWdodCk7CisjZW5kaWYKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworICAgIH0KKworICAgIC8vIENvbnN0cnVjdCBj
YW52YXMgRkJPLgorICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlLCAwKTsK
KyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgaWYgKG1fYXR0
cnMuc3RlbmNpbCkKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1F
TlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVy
KTsKKyNlbmRpZgorCisgICAgR0xlbnVtIHN0YXR1cyA9IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOworICAgIGlmIChzdGF0dXMgIT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAgICAgIExPR19FUlJP
UigiR3JhcGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGNsZWFyRmxhZ3MgPSBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAg
ICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsK
KyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNz
Q29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisKKyAgICBnbENsZWFyKGNsZWFyRmxhZ3Mp
OworICAgIGdsRmx1c2goKTsKIH0KIAogSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdApAQCAtNzU4LDcgKzQ3NCw3IEBAIEludFNpemUg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKHRleHR1cmUp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTc2Niw3ICs0ODIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIEFTU0VS
VChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgZ2xBdHRh
Y2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG1h
eENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBzaGFkZXJzKQpAQCAt
Nzc3LDMzICs0OTMsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFk
ZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG0KICAgICB9CiAKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdl
dEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOworICAg
IGdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGlu
ZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dy
YW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5iaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIodGFy
Z2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPm1fY3Vy
cmVudEZibyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1faW50ZXJuYWwtPm1fY2FudmFzRmJvOwotICAg
IG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVu
dEZibyk7CisgICAgbV9ib3VuZEZCTyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1fZmJvOworICAgIGds
QmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9ib3VuZEZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJi
dWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtODE1LDU1ICs1MzEsNTUgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFt
cGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxw
aGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBnbEJs
ZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9u
KG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVt
IG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxw
aGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBH
QzNEZW51bSBkZmFjdG9yKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CiAgICAgZ2xCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7Ci19ICAgICAgIAorfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNS
R0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhh
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RB
bHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEs
IGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1
ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKKyAgICBnbEJ1ZmZl
ckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBz
aXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEo
dGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6
ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwg
c2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBk
YXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNoZWNrRnJhbWVidWZmZXJTdGF0
dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0MzRGNsYW1wZiByLCBH
QzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAtOTA0LDcgKzYyMCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5jb21waWxlU2hhZGVyKHNoYWRl
cik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAtOTUyLDcgKzY2OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJU
KHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbERldGFj
aFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
aXNhYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTk2NCw3ICs2ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1v
ZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAgLTk4OCw3ICs3MDQsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCkBA
IC0xMDA2LDEzICs3MjIsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBs
YXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0
YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJl
LCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQs
IHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTEwMjQsNyArNzQwLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZW5lcmF0ZU1p
cG1hcCh0YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKIH0KIAogYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC0xMDM3LDE0ICs3NTMsMTQg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFs
LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJV
VEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
R3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0
aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgp
OwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAg
R0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwor
ICAgIGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAg
ICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTA2OSwxNCArNzg1LDE0IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
dWludCBpbmRlCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAog
ICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHN0
YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5J
Rk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihzdGF0aWNf
Y2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1f
TUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikg
ZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAg
R0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+
Z2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRleCwgbWF4
TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2
ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwg
Jm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgp
IHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC0xMDk3LDIwICs4MTMsMjAgQEAgaW50IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdl
dEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJu
IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAog
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRl
eHRBdHRyaWJ1dGVzKCkKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9hdHRyczsKKyAgICBy
ZXR1cm4gbV9hdHRyczsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9y
KCkKIHsKLSAgICBpZiAobV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkg
ewotICAgICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0ZXIgPSBtX2ludGVy
bmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOworICAgIGlmIChtX3N5bnRoZXRpY0Vycm9y
cy5zaXplKCkgPiAwKSB7CisgICAgICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3Ig
aXRlciA9IG1fc3ludGhldGljRXJyb3JzLmJlZ2luKCk7CiAgICAgICAgIEdDM0RlbnVtIGVyciA9
ICppdGVyOwotICAgICAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRl
cik7CisgICAgICAgIG1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKICAgICAgICAgcmV0
dXJuIGVycjsKICAgICB9CiAKQEAgLTExMzYsNyArODUyLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNCdWZmZXIoYnVmZmVyKTsKKyAgICBy
ZXR1cm4gZ2xJc0J1ZmZlcihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKQEAgLTExNTEsNyArODY3LDcgQEAgR0MzRGJv
b2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBm
cmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlz
RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAgIHJldHVybiBnbElzRnJhbWVidWZmZXIoZnJh
bWVidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFt
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTExNjAsNyArODc2LDcgQEAgR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1Byb2dyYW0ocHJv
Z3JhbSk7CisgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQogCiBHQzNEYm9vbGVh
biBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5k
ZXJidWZmZXIpCkBAIC0xMTY5LDcgKzg4NSw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4
dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKIH0K
IAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQpAQCAtMTE3OCw3ICs4OTQsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1NoYWRlcihzaGFkZXIpOworICAgIHJldHVybiBn
bElzU2hhZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtMTIwMCw3ICs5MTYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFtKQpAQCAtMTI1MSwx
MyArOTY3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAgICAgICAgIGJyZWFrOwogICAg
IH0KICNlbmRpZgotICAgIG1faW50ZXJuYWwtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNEYm9vbGVh
biBpbnZlcnQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5zYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKKyAgICBnbFNh
bXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQpCkBAIC0xMjgzLDcgKzk5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNo
YWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgY29uc3QgU3RyaW5nJiBzb3VyCiAg
ICAgQ1N0cmluZyBzb3VyY2VDUyA9IHByZWZpeGVkU291cmNlLnV0ZjgoKTsKICAgICBjb25zdCBj
aGFyKiBkYXRhID0gc291cmNlQ1MuZGF0YSgpOwogICAgIGludCBsZW5ndGggPSBwcmVmaXhlZFNv
dXJjZS5sZW5ndGgoKTsKLSAgICBtX2ludGVybmFsLT5zaGFkZXJTb3VyY2UoKEdMdWludCkgc2hh
ZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CisgICAgZ2xTaGFkZXJTb3VyY2Uo
KEdMdWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQg
cmVmLCBHQzNEdWludCBtYXNrKQpAQCAtMTI5NSw3ICsxMDExLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50
IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0Rl
bnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3Rl
bmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTMwNyw3ICsxMDIz
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdD
M0RlbnVtIHpwYXNzKQpAQCAtMTMxOSw3ICsxMDM1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZh
Y2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgZ2xTdGVu
Y2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMzM3LDEyMSArMTA1MywxMjEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9jYXRpb24sIHYw
KTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwor
ICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBH
QzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xV
bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xV
bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9h
dCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00Zihsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXpl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0x
aShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsK
KyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNE
aW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYy
KTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJy
YXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2
MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aShs
b2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwg
djEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5p
Zm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0
cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9u
LCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRp
b24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4
M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRy
aXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBn
bFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dy
YW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ1OSw2MSArMTE3NSw2MSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAg
IEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZl
cnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjAp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFy
cmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsK
KyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0
dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdD
M0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAg
ICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFy
cmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBH
QzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB2
MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2Miwg
djMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgs
IGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBH
QzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0Rz
aXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliUG9pbnRl
cihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0
PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50
ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE1MzEsNyArMTI0Nyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xNTQzLDcgKzEyNTksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVl
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2
KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNTU1LDcgKzEyNzEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RpbnQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0pCkBAIC0xNTYzLDcgKzEyNzksNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFBy
b2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBt
X2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9f
TE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNp
emUgPSAwOwogCkBAIC0xNTcxLDcgKzEyODcsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBpZiAoIWlu
Zm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZv
TG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGlu
Zm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTU4MiwxNCArMTI5OCwxNCBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFs
dWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1
ZSk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCkBAIC0xNTk3LDE0ICsxMzEzLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsK
LSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJ
TkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFw
aGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkg
c2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3Ro
KTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwt
PmdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdl
dFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmlu
ZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNjE3LDE0ICsxMzMzLDE0
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNo
YWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsK
KyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VS
Q0VfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFy
KiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAg
ICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZShzaGFk
ZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwg
bGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZh
c3RGcmVlKGluZm8pOwpAQCAtMTY0NywxMyArMTM2MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFt
ZSwgRwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdl
dFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0K
IAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTY2MSwxOSArMTM3Nywx
OSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBt
X2ludGVybmFsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdl
dFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRl
eCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCkBA
IC0xNjgxLDcgKzEzOTcsNyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lkKiBwb2ludGVy
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFy
YW1OYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwg
cGFyYW1OYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0
cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNzAyLDcg
KzE0MTgsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZm
ZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAg
R0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygvKiBjb3VudCAq
LyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7
CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIApAQCAtMTcxMCwyOCArMTQyNiwyOCBAQCBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxl
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhh
bmRsZSk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAg
ICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQz
RDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIHJl
dHVybiBnbENyZWF0ZVByb2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJu
YWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5S
ZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7
CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihH
QzNEZW51bSB0eXBlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICByZXR1
cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQpAQCAtMTc0NSwzMSArMTQ2MSwzMSBAQCBQbGF0Zm9y
bTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZm
ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0
Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZmZXJzKDEsICZm
cmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMo
MSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNo
YWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRlcihzaGFkZXIp
OworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtMTc4MCwzMCAr
MTQ5NiwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJlKFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdM
RXJyb3IoR0MzRGVudW0gZXJyb3IpCiB7Ci0gICAgbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJv
cnMuYWRkKGVycm9yKTsKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3IpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKIHsKLSAgICBtX2lu
dGVybmFsLT5tX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgbV9sYXllckNvbXBvc2l0ZWQg
PSB0cnVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJrQ29udGV4dENoYW5nZWQo
KQogewogICAgIC8vIEZJWE1FOiBBbnkgYWNjZWxlcmF0ZWQgY29tcG9zaXRvciBuZWVkcyB0byBi
ZSB0b2xkIHRvIHJlLXJlYWQgZnJvbSBoZXJlLgotICAgIG1faW50ZXJuYWwtPm1fbGF5ZXJDb21w
b3NpdGVkID0gZmFsc2U7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsKIH0KIAogYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQ7CisgICAgcmV0dXJuIG1fbGF5ZXJDb21w
b3NpdGVkOwogfQogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNp
b25zKCkKIHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPm1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9p
bnRlcm5hbC0+bV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0KTsKLSAg
ICByZXR1cm4gbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zLmdldCgpOworICAgIGlmICghbV9leHRl
bnNpb25zKQorICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNE
UXQpOworICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CiAKIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100349</attachid>
            <date>2011-07-11 12:31:30 -0700</date>
            <delta_ts>2011-07-12 11:21:40 -0700</delta_ts>
            <desc>updated Jarkkos patch</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>80251</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNjhjZjM4Li5kMzVjNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI1
IEBACisyMDExLTA3LTA4ICBKYXJra28gU2Fra2luZW4gIDxqYXJra28uai5zYWtraW5lbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIE9wZW5HTCBzeW1ib2wgcmVzb2x2ZXIgdHJhbnNwYXJlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MTU0CisKKyAgICAgICAgTW9k
aWZpZWQgT3BlbkdMIHN5bWJvbCByZXNvbHZlciB0byBiZSB0cmFuc3BhcmVudCBhbmQgZWFzaWVy
IHRvCisgICAgICAgIG1haW50YWluLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFByb2NzLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRv
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpib3VuZGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YWN0
aXZlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNo
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hl
ZFNoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRy
aWJMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVy
VGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0
ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZl
QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVV
bmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJM
b2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEVy
cm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKToKKwogMjAxMS0wNy0wOCAgSmVm
ZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmcmFtZXdvcmsgZm9y
IGEgbmV3L2R1bW15IFhNTERvY3VtZW50UGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCAwY2JlN2UzLi40MGMx
NzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCkBAIC04Nyw2ICs4Nyw5IEBAIGNsYXNzIEV4dGVuc2lvbnMzRDsKICNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5H
TDsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CisjZW5k
aWYKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAg
LTg5Miw2ICs4OTUsMjAgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZFJlbmRlcmluZ1Jlc3VsdHMo
dW5zaWduZWQgY2hhciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSk7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFFUKQorI2lmICFkZWZpbmVkKEFQSUVOVFJZKQorI2RlZmluZSBBUElFTlRSWQorI2Vu
ZGlmCisjZGVmaW5lIEdMX1BST0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgXAorICAgIHR5
cGVkZWYgUmV0dXJuVmFsdWUgKEFQSUVOVFJZKiBQcm9jIyNUeXBlKSBQYXJhbXM7IFwKKyAgICBQ
cm9jIyNUeXBlIFByb2M7CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIgorI3Vu
ZGVmIEdMX1BST0MKKyAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CisgICAgT3duUHRy
PEV4dGVuc2lvbnMzRFF0PiBtX2V4dGVuc2lvbnM7CisgICAgYm9vbCBtX3Byb2NzQXJlVmFsaWQ7
CisjZW5kaWYKKwogICAgIGludCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0OwogICAg
IGJvb2wgbV9pc1Jlc291cmNlU2FmZTsKIApAQCAtOTAwLDcgKzkxNyw3IEBAIHB1YmxpYzoKICAg
ICBSZXRhaW5QdHI8V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oUVQpCiAgICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBTdHJp
bmcgc291cmNlOwogICAgICAgICBTdHJpbmcgbG9nOwpAQCAtOTA4LDEwICs5MjUsMTIgQEAgcHVi
bGljOgogICAgIH0gU2hhZGVyU291cmNlRW50cnk7CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2Jq
ZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9zaGFkZXJTb3VyY2VNYXA7CiAKKyNpZiBQTEFURk9S
TShNQUMpCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKICAgICBBTkdMRVdl
YktpdEJyaWRnZSBtX2NvbXBpbGVyOwogCiAgICAgT3duUHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4g
bV9leHRlbnNpb25zOworI2VuZGlmCiAKICAgICBBdHRyaWJ1dGVzIG1fYXR0cnM7CiAgICAgVmVj
dG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RQcm9jcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MjgwZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFByb2NzLmgKQEAgLTAsMCArMSw5MCBAQAorR0xfUFJPQyh2b2lkLCBnbEFjdGl2ZVRleHR1
cmUsIChHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQXR0YWNoU2hhZGVyLCAoR0MzRHVpbnQs
IEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChHQzNEdWlu
dCwgR0MzRHVpbnQsIGNvbnN0IGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kQnVmZmVyLCAo
R0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIChH
QzNEZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIChH
QzNEZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kQ29sb3IsIChHQzNEY2xh
bXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmKSkKK0dMX1BST0Modm9pZCwg
Z2xCbGVuZEVxdWF0aW9uLCAoR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kRXF1YXRp
b25TZXBhcmF0ZSwgKEdDM0RlbnVtLCBHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQmxlbmRG
dW5jU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSkpCitH
TF9QUk9DKHZvaWQsIGdsQnVmZmVyRGF0YSwgKEdDM0RlbnVtLCBHQzNEc2l6ZWlwdHIsIGNvbnN0
IHZvaWQqLCBHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQnVmZmVyU3ViRGF0YSwgKEdDM0Rl
bnVtLCBHQzNEaW50cHRyLCBHQzNEc2l6ZWlwdHIsIGNvbnN0IHZvaWQqKSkKK0dMX1BST0MoR0Mz
RGVudW0sIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgKEdDM0RlbnVtKSkKK0dMX1BST0Modm9p
ZCwgZ2xDb21waWxlU2hhZGVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEdWludCwgZ2xDcmVh
dGVQcm9ncmFtLCAoKSkKK0dMX1BST0MoR0MzRHVpbnQsIGdsQ3JlYXRlU2hhZGVyLCAoR0MzRGVu
dW0pKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZUJ1ZmZlcnMsIChHQzNEc2l6ZWksIGNvbnN0IEdD
M0R1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJhbWVidWZmZXJzLCAoR0MzRHNpemVp
LCBjb25zdCBHQzNEdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVByb2dyYW0sIChHQzNE
dWludCkpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVycywgKEdDM0RzaXplaSwg
Y29uc3QgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVTaGFkZXIsIChHQzNEdWlu
dCkpCitHTF9QUk9DKHZvaWQsIGdsRGV0YWNoU2hhZGVyLCAoR0MzRHVpbnQsIEdDM0R1aW50KSkK
K0dMX1BST0Modm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIChHQzNEdWludCkpCitH
TF9QUk9DKHZvaWQsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIChHQzNEdWludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIChHQzNEZW51bSwgR0MzRGVudW0s
IEdDM0RlbnVtLCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEdWludCwgR0MzRGludCkpCitH
TF9QUk9DKHZvaWQsIGdsR2VuQnVmZmVycywgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkKK0dMX1BS
T0Modm9pZCwgZ2xHZW5lcmF0ZU1pcG1hcCwgKEdDM0RlbnVtKSkKK0dMX1BST0Modm9pZCwgZ2xH
ZW5GcmFtZWJ1ZmZlcnMsIChHQzNEc2l6ZWksIEdDM0R1aW50KikpCitHTF9QUk9DKHZvaWQsIGds
R2VuUmVuZGVyYnVmZmVycywgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwg
Z2xHZXRBY3RpdmVBdHRyaWIsIChHQzNEdWludCwgR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNp
emVpKiwgR0MzRGludCosIEdDM0RlbnVtKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEFj
dGl2ZVVuaWZvcm0sIChHQzNEdWludCwgR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKiwg
R0MzRGludCosIEdDM0RlbnVtKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEF0dGFjaGVk
U2hhZGVycywgKEdDM0R1aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIEdDM0R1aW50KikpCitH
TF9QUk9DKEdDM0RpbnQsIGdsR2V0QXR0cmliTG9jYXRpb24sIChHQzNEdWludCwgY29uc3QgY2hh
ciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2LCAoR0MzRGVudW0sIEdD
M0RlbnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbUluZm9Mb2csIChHQzNEdWludCwgR0MzRHNpemVp
LCBHQzNEc2l6ZWkqLCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbWl2LCAoR0Mz
RHVpbnQsIEdDM0RlbnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZXRTaGFkZXJJbmZvTG9nLCAoR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
KiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRlcml2LCAoR0MzRHVpbnQsIEdDM0Rl
bnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVyU291cmNlLCAoR0MzRHVp
bnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKiwgY2hhciopKQorR0xfUFJPQyhHQzNEaW50LCBnbEdl
dFVuaWZvcm1Mb2NhdGlvbiwgKEdDM0R1aW50LCBjb25zdCBjaGFyKikpCitHTF9QUk9DKHZvaWQs
IGdsR2V0VW5pZm9ybWZ2LCAoR0MzRHVpbnQsIEdDM0RpbnQsIEdDM0RmbG9hdCopKQorR0xfUFJP
Qyh2b2lkLCBnbEdldFVuaWZvcm1pdiwgKEdDM0R1aW50LCBHQzNEaW50LCBHQzNEaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliZnYsIChHQzNEdWludCwgR0MzRGVudW0sIEdD
M0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYml2LCAoR0MzRHVpbnQs
IEdDM0RlbnVtLCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliUG9p
bnRlcnYsIChHQzNEdWludCwgR0MzRGVudW0sIHZvaWQqKikpCitHTF9QUk9DKEdDM0Rib29sZWFu
LCBnbElzQnVmZmVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc0ZyYW1l
YnVmZmVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1Byb2dyYW0sIChH
QzNEdWludCkpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElzUmVuZGVyYnVmZmVyLCAoR0MzRHVp
bnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1NoYWRlciwgKEdDM0R1aW50KSkKK0dMX1BS
T0Modm9pZCwgZ2xMaW5rUHJvZ3JhbSwgKEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RzaXpl
aSkpCitHTF9QUk9DKHZvaWQsIGdsU2FtcGxlQ292ZXJhZ2UsIChHQzNEY2xhbXBmLCBHQzNEYm9v
bGVhbikpCitHTF9QUk9DKHZvaWQsIGdsU2hhZGVyU291cmNlLCAoR0MzRHVpbnQsIEdDM0RzaXpl
aSwgY29uc3QgY2hhcioqLCBjb25zdCBHQzNEaW50KikpCitHTF9QUk9DKHZvaWQsIGdsU3RlbmNp
bEZ1bmNTZXBhcmF0ZSwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCwgR0MzRHVpbnQpKQor
R0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxPcFNlcGFyYXRlLCAoR0MzRGVudW0sIEdDM0RlbnVt
LCBHQzNEZW51bSwgR0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0xZiwgKEdDM0Rp
bnQsIEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFmdiwgKEdDM0RpbnQsIEdD
M0RzaXplaSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpLCAo
R0MzRGludCwgR0MzRGludCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpdiwgKEdDM0RpbnQs
IEdDM0RzaXplaSwgY29uc3QgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yZiwg
KEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3Jt
MmZ2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9p
ZCwgZ2xVbmlmb3JtMmksIChHQzNEaW50LCBHQzNEaW50LCBHQzNEaW50KSkKK0dMX1BST0Modm9p
ZCwgZ2xVbmlmb3JtMml2LCAoR0MzRGludCwgR0MzRHNpemVpLCBjb25zdCBHQzNEaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNmLCAoR0MzRGludCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQs
IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNmdiwgKEdDM0RpbnQsIEdDM0Rz
aXplaSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNpLCAoR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9y
bTNpdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgY29uc3QgR0MzRGludCopKQorR0xfUFJPQyh2b2lk
LCBnbFVuaWZvcm00ZiwgKEdDM0RpbnQsIEdDM0RmbG9hdCwgR0MzRGZsb2F0LCBHQzNEZmxvYXQs
IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRmdiwgKEdDM0RpbnQsIEdDM0Rz
aXplaSwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRpLCAoR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCkpCitHTF9QUk9DKHZvaWQs
IGdsVW5pZm9ybTRpdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwgY29uc3QgR0MzRGludCopKQorR0xf
UFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXgyZnYsIChHQzNEaW50LCBHQzNEc2l6ZWksIEdDM0Ri
b29sZWFuLCBjb25zdCBHQzNEZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4
M2Z2LCAoR0MzRGludCwgR0MzRHNpemVpLCBHQzNEYm9vbGVhbiwgY29uc3QgR0MzRGZsb2F0Kikp
CitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybU1hdHJpeDRmdiwgKEdDM0RpbnQsIEdDM0RzaXplaSwg
R0MzRGJvb2xlYW4sIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVzZVByb2dy
YW0sIChHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsVmFsaWRhdGVQcm9ncmFtLCAoR0MzRHVp
bnQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjFmLCAoR0MzRHVpbnQsIGNvbnN0IEdD
M0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliMWZ2LCAoR0MzRHVpbnQsIGNv
bnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjJmLCAoR0MzRHVp
bnQsIGNvbnN0IEdDM0RmbG9hdCwgY29uc3QgR0MzRGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xW
ZXJ0ZXhBdHRyaWIyZnYsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0KikpCitHTF9QUk9DKHZv
aWQsIGdsVmVydGV4QXR0cmliM2YsIChHQzNEdWludCwgY29uc3QgR0MzRGZsb2F0LCBjb25zdCBH
QzNEZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmli
M2Z2LCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRl
eEF0dHJpYjRmLCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCwgY29uc3QgR0MzRGZsb2F0LCBj
b25zdCBHQzNEZmxvYXQsIGNvbnN0IEdDM0RmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4
QXR0cmliNGZ2LCAoR0MzRHVpbnQsIGNvbnN0IEdDM0RmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBn
bFZlcnRleEF0dHJpYlBvaW50ZXIsIChHQzNEdWludCwgR0MzRGludCwgR0MzRGVudW0sIEdDM0Ri
b29sZWFuLCBHQzNEc2l6ZWksIGNvbnN0IHZvaWQqKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5k
ZXggMmViZGNmYS4uNjY2NzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTU1LDEwOSAr
NTUsNiBAQCB0eXBlZGVmIGNoYXIgR0xjaGFyOwogI2RlZmluZSBHTF9ERVBUSDI0X1NURU5DSUw4
IDB4ODhGMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChBUElFTlRSWSkKLSNkZWZpbmUgQVBJRU5U
UlkKLSNlbmRpZgotCi0jaWZkZWYgUVRfT1BFTkdMX0VTXzIKLXR5cGVkZWYgR0xzaXplaXB0ciBH
THNpemVpcHRyVHlwZTsKLXR5cGVkZWYgR0xpbnRwdHIgR0xpbnRwdHJUeXBlOwotI2Vsc2UKLXR5
cGVkZWYgcHRyZGlmZl90IEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBwdHJkaWZmX3QgR0xpbnRw
dHJUeXBlOwotI2VuZGlmCi0KLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQWN0aXZlVGV4dHVy
ZVR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBdHRhY2hTaGFkZXJU
eXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQXR0
cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsQmluZEJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRGcmFtZWJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRSZW5kZXJidWZmZXJUeXBlKSAoR0xl
bnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZENvbG9yVHlwZSkg
KEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlKShHTGVudW0sIEdMZW51bSk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSkoR0xlbnVtIHNy
Y1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJEYXRhVHlwZSkgKEdMZW51bSwgR0xzaXpl
aXB0clR5cGUsIGNvbnN0IEdMdm9pZCosIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEJ1ZmZlclN1YkRhdGFUeXBlKSAoR0xlbnVtLCBHTGludHB0clR5cGUsIEdMc2l6ZWlwdHJU
eXBlLCBjb25zdCBHTHZvaWQqKTsKLXR5cGVkZWYgR0xlbnVtIChBUElFTlRSWSogZ2xDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bENvbXBpbGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0x1aW50IChBUElFTlRSWSog
Z2xDcmVhdGVQcm9ncmFtVHlwZSkgKCk7Ci10eXBlZGVmIEdMdWludCAoQVBJRU5UUlkqIGdsQ3Jl
YXRlU2hhZGVyVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0
ZUJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVQcm9ncmFtVHlwZSkgKEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlKSAo
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVs
ZXRlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERldGFj
aFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChHTHVpbnQpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclR5cGUpIChHTGVudW0s
IEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRFR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdM
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuQnVmZmVyc1R5cGUpIChHTHNpemVp
LCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuZXJhdGVNaXBtYXBUeXBl
KSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkZyYW1lYnVm
ZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
R2VuUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0QWN0aXZlQXR0cmliVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0QWN0aXZlVW5pZm9ybVR5cGUpIChHTHVpbnQsIEdMdWludCwgR0xzaXplaSwg
R0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkq
LCBHTHVpbnQqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBnbEdldEF0dHJpYkxvY2F0aW9u
VHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZU
eXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBhcmFtcyk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFByb2dyYW1JbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwg
R0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbWl2
VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUpIChHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEdldFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRTaGFkZXJTb3VyY2VUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNp
emVpKiwgY2hhciopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybUxvY2F0
aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZXRVbmlmb3JtZnZUeXBlKSAoR0x1aW50LCBHTGludCwgR0xmbG9hdCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZXRVbmlmb3JtaXZUeXBlKSAoR0x1aW50LCBHTGludCwgR0xpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliZnZUeXBlKSAoR0x1
aW50LCBHTGVudW0sIEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVy
dGV4QXR0cmliaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2VHlwZSkgKEdMdWludCwgR0xlbnVt
LCBHTHZvaWQqKik7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNCdWZmZXJUeXBl
KSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc0ZyYW1lYnVmZmVy
VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNQcm9ncmFt
VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNSZW5kZXJi
dWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1No
YWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xMaW5rUHJvZ3Jh
bVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xSZW5kZXJidWZmZXJT
dG9yYWdlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsU2FtcGxlQ292ZXJhZ2VUeXBlKSAoR0xjbGFtcGYsIEdMYm9vbGVh
bik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQs
IEdMc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xpbnQs
IEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVU
eXBlKSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2ls
T3BTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0pOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZUeXBlKSAoR0xpbnQsIEdMZmxvYXQpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBj
b25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xaVR5cGUp
IChHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWl2VHlw
ZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xVbmlmb3JtMmZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBH
TGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yaVR5cGUpIChHTGlu
dCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJpdlR5
cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVW5pZm9ybTNmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNmdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2lU
eXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xVbmlmb3JtM2l2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdM
ZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlm
b3JtNGZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGlu
dCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGl2VHlwZSkgKEdM
aW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xV
bmlmb3JtTWF0cml4MmZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdM
ZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUp
IChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdM
Ym9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVc2VQ
cm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZhbGlkYXRl
UHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhB
dHRyaWIxZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjJmVHlwZSkgKEdMdWludCwgY29u
c3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZl
cnRleEF0dHJpYjJmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliM2ZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0
LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVmVydGV4QXR0cmliM2Z2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlKSAoR0x1aW50LCBjb25z
dCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYlBvaW50
ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBHTGJvb2xlYW4sIEdMc2l6ZWksIGNvbnN0
IEdMdm9pZCopOwotCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2lmIFVTRShURVhUVVJFX01BUFBFUikKQEAgLTE2OCwx
MyArNjUsMTAgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbAogI2VuZGlmCiB7CiBw
dWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdyk7CisgICAgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRCosIEhvc3RXaW5kb3cqKTsKICAgICB+
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCi0gICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1
cm4gbV92YWxpZDsgfQotCiAgICAgUUdMV2lkZ2V0KiBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7Ci0g
ICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBU
ZXh0dXJlKiBtYXNrKSBjb25zdDsKICNlbmRpZgpAQCAtMTgyLDEyMyArNzYsMTQgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0
ZW0qLCBRV2lkZ2V0Kik7CiAgICAgUVJlY3RGIGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogCi0gICAg
Z2xBY3RpdmVUZXh0dXJlVHlwZSBhY3RpdmVUZXh0dXJlOwotICAgIGdsQXR0YWNoU2hhZGVyVHlw
ZSBhdHRhY2hTaGFkZXI7Ci0gICAgZ2xCaW5kQXR0cmliTG9jYXRpb25UeXBlIGJpbmRBdHRyaWJM
b2NhdGlvbjsKLSAgICBnbEJpbmRCdWZmZXJUeXBlIGJpbmRCdWZmZXI7Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXJUeXBlIGJpbmRGcmFtZWJ1ZmZlcjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXJUeXBl
IGJpbmRSZW5kZXJidWZmZXI7Ci0gICAgZ2xCbGVuZENvbG9yVHlwZSBibGVuZENvbG9yOwotICAg
IGdsQmxlbmRFcXVhdGlvblR5cGUgYmxlbmRFcXVhdGlvbjsKLSAgICBnbEJsZW5kRXF1YXRpb25T
ZXBhcmF0ZVR5cGUgYmxlbmRFcXVhdGlvblNlcGFyYXRlOwotICAgIGdsQmxlbmRGdW5jU2VwYXJh
dGVUeXBlIGJsZW5kRnVuY1NlcGFyYXRlOwotICAgIGdsQnVmZmVyRGF0YVR5cGUgYnVmZmVyRGF0
YTsKLSAgICBnbEJ1ZmZlclN1YkRhdGFUeXBlIGJ1ZmZlclN1YkRhdGE7Ci0gICAgZ2xDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzVHlwZSBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzOwotICAgIGdsQ29tcGls
ZVNoYWRlclR5cGUgY29tcGlsZVNoYWRlcjsKLSAgICBnbENyZWF0ZVByb2dyYW1UeXBlIGNyZWF0
ZVByb2dyYW07Ci0gICAgZ2xDcmVhdGVTaGFkZXJUeXBlIGNyZWF0ZVNoYWRlcjsKLSAgICBnbERl
bGV0ZUJ1ZmZlcnNUeXBlIGRlbGV0ZUJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNU
eXBlIGRlbGV0ZUZyYW1lYnVmZmVyczsKLSAgICBnbERlbGV0ZVByb2dyYW1UeXBlIGRlbGV0ZVBy
b2dyYW07Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzVHlwZSBkZWxldGVSZW5kZXJidWZmZXJz
OwotICAgIGdsRGVsZXRlU2hhZGVyVHlwZSBkZWxldGVTaGFkZXI7Ci0gICAgZ2xEZXRhY2hTaGFk
ZXJUeXBlIGRldGFjaFNoYWRlcjsKLSAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUg
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlU
eXBlIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXJUeXBlIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkRUeXBlIGZyYW1lYnVmZmVyVGV4dHVyZTJEOwotICAgIGdsR2VuQnVmZmVyc1R5cGUgZ2VuQnVm
ZmVyczsKLSAgICBnbEdlbmVyYXRlTWlwbWFwVHlwZSBnZW5lcmF0ZU1pcG1hcDsKLSAgICBnbEdl
bkZyYW1lYnVmZmVyc1R5cGUgZ2VuRnJhbWVidWZmZXJzOwotICAgIGdsR2VuUmVuZGVyYnVmZmVy
c1R5cGUgZ2VuUmVuZGVyYnVmZmVyczsKLSAgICBnbEdldEFjdGl2ZUF0dHJpYlR5cGUgZ2V0QWN0
aXZlQXR0cmliOwotICAgIGdsR2V0QWN0aXZlVW5pZm9ybVR5cGUgZ2V0QWN0aXZlVW5pZm9ybTsK
LSAgICBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUgZ2V0QXR0YWNoZWRTaGFkZXJzOwotICAgIGds
R2V0QXR0cmliTG9jYXRpb25UeXBlIGdldEF0dHJpYkxvY2F0aW9uOwotICAgIGdsR2V0QnVmZmVy
UGFyYW1ldGVyaXZUeXBlIGdldEJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXZUeXBlIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2OwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlIGdldFByb2dyYW1JbmZvTG9nOwot
ICAgIGdsR2V0UHJvZ3JhbWl2VHlwZSBnZXRQcm9ncmFtaXY7Ci0gICAgZ2xHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRT
aGFkZXJJbmZvTG9nVHlwZSBnZXRTaGFkZXJJbmZvTG9nOwotICAgIGdsR2V0U2hhZGVyaXZUeXBl
IGdldFNoYWRlcml2OwotICAgIGdsR2V0U2hhZGVyU291cmNlVHlwZSBnZXRTaGFkZXJTb3VyY2U7
Ci0gICAgZ2xHZXRVbmlmb3JtZnZUeXBlIGdldFVuaWZvcm1mdjsKLSAgICBnbEdldFVuaWZvcm1p
dlR5cGUgZ2V0VW5pZm9ybWl2OwotICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uVHlwZSBnZXRVbmlm
b3JtTG9jYXRpb247Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUgZ2V0VmVydGV4QXR0cmli
ZnY7Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUgZ2V0VmVydGV4QXR0cmliaXY7Ci0gICAg
Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnY7Ci0g
ICAgZ2xJc0J1ZmZlclR5cGUgaXNCdWZmZXI7Ci0gICAgZ2xJc0ZyYW1lYnVmZmVyVHlwZSBpc0Zy
YW1lYnVmZmVyOwotICAgIGdsSXNQcm9ncmFtVHlwZSBpc1Byb2dyYW07Ci0gICAgZ2xJc1JlbmRl
cmJ1ZmZlclR5cGUgaXNSZW5kZXJidWZmZXI7Ci0gICAgZ2xJc1NoYWRlclR5cGUgaXNTaGFkZXI7
Ci0gICAgZ2xMaW5rUHJvZ3JhbVR5cGUgbGlua1Byb2dyYW07Ci0gICAgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlVHlwZSByZW5kZXJidWZmZXJTdG9yYWdlOwotICAgIGdsU2FtcGxlQ292ZXJhZ2VUeXBl
IHNhbXBsZUNvdmVyYWdlOwotICAgIGdsU2hhZGVyU291cmNlVHlwZSBzaGFkZXJTb3VyY2U7Ci0g
ICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSBzdGVuY2lsRnVuY1NlcGFyYXRlOwotICAgIGds
U3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUgc3RlbmNpbE1hc2tTZXBhcmF0ZTsKLSAgICBnbFN0ZW5j
aWxPcFNlcGFyYXRlVHlwZSBzdGVuY2lsT3BTZXBhcmF0ZTsKLSAgICBnbFVuaWZvcm0xZlR5cGUg
dW5pZm9ybTFmOwotICAgIGdsVW5pZm9ybTFmdlR5cGUgdW5pZm9ybTFmdjsKLSAgICBnbFVuaWZv
cm0xaVR5cGUgdW5pZm9ybTFpOwotICAgIGdsVW5pZm9ybTFpdlR5cGUgdW5pZm9ybTFpdjsKLSAg
ICBnbFVuaWZvcm0yZlR5cGUgdW5pZm9ybTJmOwotICAgIGdsVW5pZm9ybTJmdlR5cGUgdW5pZm9y
bTJmdjsKLSAgICBnbFVuaWZvcm0yaVR5cGUgdW5pZm9ybTJpOwotICAgIGdsVW5pZm9ybTJpdlR5
cGUgdW5pZm9ybTJpdjsKLSAgICBnbFVuaWZvcm0zZlR5cGUgdW5pZm9ybTNmOwotICAgIGdsVW5p
Zm9ybTNmdlR5cGUgdW5pZm9ybTNmdjsKLSAgICBnbFVuaWZvcm0zaVR5cGUgdW5pZm9ybTNpOwot
ICAgIGdsVW5pZm9ybTNpdlR5cGUgdW5pZm9ybTNpdjsKLSAgICBnbFVuaWZvcm00ZlR5cGUgdW5p
Zm9ybTRmOwotICAgIGdsVW5pZm9ybTRmdlR5cGUgdW5pZm9ybTRmdjsKLSAgICBnbFVuaWZvcm00
aVR5cGUgdW5pZm9ybTRpOwotICAgIGdsVW5pZm9ybTRpdlR5cGUgdW5pZm9ybTRpdjsKLSAgICBn
bFVuaWZvcm1NYXRyaXgyZnZUeXBlIHVuaWZvcm1NYXRyaXgyZnY7Ci0gICAgZ2xVbmlmb3JtTWF0
cml4M2Z2VHlwZSB1bmlmb3JtTWF0cml4M2Z2OwotICAgIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUg
dW5pZm9ybU1hdHJpeDRmdjsKLSAgICBnbFVzZVByb2dyYW1UeXBlIHVzZVByb2dyYW07Ci0gICAg
Z2xWYWxpZGF0ZVByb2dyYW1UeXBlIHZhbGlkYXRlUHJvZ3JhbTsKLSAgICBnbFZlcnRleEF0dHJp
YjFmVHlwZSB2ZXJ0ZXhBdHRyaWIxZjsKLSAgICBnbFZlcnRleEF0dHJpYjFmdlR5cGUgdmVydGV4
QXR0cmliMWZ2OwotICAgIGdsVmVydGV4QXR0cmliMmZUeXBlIHZlcnRleEF0dHJpYjJmOwotICAg
IGdsVmVydGV4QXR0cmliMmZ2VHlwZSB2ZXJ0ZXhBdHRyaWIyZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRy
aWIzZlR5cGUgdmVydGV4QXR0cmliM2Y7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlIHZlcnRl
eEF0dHJpYjNmdjsKLSAgICBnbFZlcnRleEF0dHJpYjRmVHlwZSB2ZXJ0ZXhBdHRyaWI0ZjsKLSAg
ICBnbFZlcnRleEF0dHJpYjRmdlR5cGUgdmVydGV4QXR0cmliNGZ2OwotICAgIGdsVmVydGV4QXR0
cmliUG9pbnRlclR5cGUgdmVydGV4QXR0cmliUG9pbnRlcjsKLQotICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4
dDsKICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CiAgICAgUUdMV2lkZ2V0KiBtX2dsV2lk
Z2V0OwogICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0OwotICAgIFFSZWN0RiBtX2Jv
dW5kaW5nUmVjdDsKLSAgICBHTHVpbnQgbV90ZXh0dXJlOwotICAgIEdMdWludCBtX2NhbnZhc0Zi
bzsKLSAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwot
ICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAgTGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50
PiBtX3N5bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRl
bnNpb25zOwotCi1wcml2YXRlOgogCiAgICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3Ry
aW5nJiBwcm9jKTsKLSAgICBib29sIG1fdmFsaWQ7CiB9OwogCi0jaWYgZGVmaW5lZCAoUVRfT1BF
TkdMX0VTXzIpIAotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNlCi0j
ZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBl
PihnZXRQcm9jQWRkcmVzcygjUHJvYykpOwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIGRlZmluZWQgKFFUX09QRU5HTF9F
U18yKQpAQCAtMzA4LDE3ICs5MywxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMy
Q29tcGxpYW50KCkgY29uc3QKICNlbmRpZgogfQogCi1HcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQotICAgIDogbV9hdHRycyhhdHRycykKK0dy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCisgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKICAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93KQogICAgICwgbV9n
bFdpZGdldCgwKQogICAgICwgbV92aWV3cG9ydEdMV2lkZ2V0KDApCi0gICAgLCBtX3RleHR1cmUo
MCkKLSAgICAsIG1fY2FudmFzRmJvKDApCi0gICAgLCBtX2N1cnJlbnRGYm8oMCkKLSAgICAsIG1f
ZGVwdGhCdWZmZXIoMCkKLSAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQotICAgICwgbV92
YWxpZCh0cnVlKQogewogICAgIG1fdmlld3BvcnRHTFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRn
ZXQoKTsKIApAQCAtMzI3LDE1NCArMTA2LDE4IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAg
ICAgZWxzZQogICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3IFFHTFdpZGdldCgpOwogCi0gICAgaWYg
KCFtX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0Nv
bnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgbV92
YWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gR2VvbWV0cnkg
Y2FuIGJlIHNldCB0byB6ZXJvIGJlY2F1c2UgbV9nbFdpZGdldCBpcyB1c2VkIG9ubHkgZm9yIGl0
cyBRR0xDb250ZXh0LgogICAgIG1fZ2xXaWRnZXQtPnNldEdlb21ldHJ5KDAsIDAsIDAsIDApOwog
Ci0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxz
ZTsKLSNlbHNlCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgbV9hdHRycy5kZXB0
aCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwotCiAgICAg
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAotICAgIGFjdGl2ZVRleHR1cmUgPSBHRVRfUFJP
Q19BRERSRVNTKGdsQWN0aXZlVGV4dHVyZSk7Ci0gICAgYXR0YWNoU2hhZGVyID0gR0VUX1BST0Nf
QUREUkVTUyhnbEF0dGFjaFNoYWRlcik7Ci0gICAgYmluZEF0dHJpYkxvY2F0aW9uID0gR0VUX1BS
T0NfQUREUkVTUyhnbEJpbmRBdHRyaWJMb2NhdGlvbik7Ci0gICAgYmluZEJ1ZmZlciA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xCaW5kQnVmZmVyKTsKLSAgICBiaW5kRnJhbWVidWZmZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsQmluZEZyYW1lYnVmZmVyKTsKLSAgICBiaW5kUmVuZGVyYnVmZmVyID0gR0VU
X1BST0NfQUREUkVTUyhnbEJpbmRSZW5kZXJidWZmZXIpOwotICAgIGJsZW5kQ29sb3IgPSBHRVRf
UFJPQ19BRERSRVNTKGdsQmxlbmRDb2xvcik7Ci0gICAgYmxlbmRFcXVhdGlvbiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uKTsKLSAgICBibGVuZEVxdWF0aW9uU2VwYXJhdGUgPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKTsKLSAgICBibGVuZEZ1bmNT
ZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEZ1bmNTZXBhcmF0ZSk7Ci0gICAgYnVm
ZmVyRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJEYXRhKTsKLSAgICBidWZmZXJTdWJE
YXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlclN1YkRhdGEpOwotICAgIGNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk7
Ci0gICAgY29tcGlsZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDb21waWxlU2hhZGVyKTsK
LSAgICBjcmVhdGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVByb2dyYW0pOwot
ICAgIGNyZWF0ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVTaGFkZXIpOwotICAg
IGRlbGV0ZUJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlQnVmZmVycyk7Ci0gICAg
ZGVsZXRlRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUZyYW1lYnVmZmVy
cyk7Ci0gICAgZGVsZXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVQcm9ncmFt
KTsKLSAgICBkZWxldGVSZW5kZXJidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVJl
bmRlcmJ1ZmZlcnMpOwotICAgIGRlbGV0ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxl
dGVTaGFkZXIpOwotICAgIGRldGFjaFNoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZXRhY2hT
aGFkZXIpOwotICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5
ID0gR0VUX1BST0NfQUREUkVTUyhnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcik7Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJlMkQgPSBHRVRfUFJPQ19BRERSRVNTKGds
RnJhbWVidWZmZXJUZXh0dXJlMkQpOwotICAgIGdlbkJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNT
KGdsR2VuQnVmZmVycyk7Ci0gICAgZ2VuZXJhdGVNaXBtYXAgPSBHRVRfUFJPQ19BRERSRVNTKGds
R2VuZXJhdGVNaXBtYXApOwotICAgIGdlbkZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZW5GcmFtZWJ1ZmZlcnMpOwotICAgIGdlblJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERS
RVNTKGdsR2VuUmVuZGVyYnVmZmVycyk7Ci0gICAgZ2V0QWN0aXZlQXR0cmliID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldEFjdGl2ZUF0dHJpYik7Ci0gICAgZ2V0QWN0aXZlVW5pZm9ybSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVVbmlmb3JtKTsKLSAgICBnZXRBdHRhY2hlZFNoYWRlcnMg
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0YWNoZWRTaGFkZXJzKTsKLSAgICBnZXRBdHRyaWJM
b2NhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRyaWJMb2NhdGlvbik7Ci0gICAgZ2V0
QnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QnVmZmVyUGFyYW1ldGVy
aXYpOwotICAgIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KTsKLSAgICBnZXRQ
cm9ncmFtSW5mb0xvZyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFtSW5mb0xvZyk7Ci0g
ICAgZ2V0UHJvZ3JhbWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1pdik7Ci0gICAg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYpOwotICAgIGdldFNoYWRlckluZm9Mb2cgPSBHRVRfUFJPQ19BRERS
RVNTKGdsR2V0U2hhZGVySW5mb0xvZyk7Ci0gICAgZ2V0U2hhZGVyaXYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsR2V0U2hhZGVyaXYpOwotICAgIGdldFNoYWRlclNvdXJjZSA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZXRTaGFkZXJTb3VyY2UpOwotICAgIGdldFVuaWZvcm1mdiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZXRVbmlmb3JtZnYpOwotICAgIGdldFVuaWZvcm1pdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZXRVbmlmb3JtaXYpOwotICAgIGdldFVuaWZvcm1Mb2NhdGlvbiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZXRVbmlmb3JtTG9jYXRpb24pOwotICAgIGdldFZlcnRleEF0dHJpYmZ2ID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYmZ2KTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJpdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJpdik7Ci0gICAgZ2V0VmVydGV4QXR0
cmliUG9pbnRlcnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYp
OwotICAgIGlzQnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzQnVmZmVyKTsKLSAgICBpc0Zy
YW1lYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzRnJhbWVidWZmZXIpOwotICAgIGlzUHJv
Z3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1Byb2dyYW0pOwotICAgIGlzUmVuZGVyYnVmZmVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbElzUmVuZGVyYnVmZmVyKTsKLSAgICBpc1NoYWRlciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xJc1NoYWRlcik7Ci0gICAgbGlua1Byb2dyYW0gPSBHRVRfUFJPQ19B
RERSRVNTKGdsTGlua1Byb2dyYW0pOwotICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgPSBHRVRfUFJP
Q19BRERSRVNTKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSk7Ci0gICAgc2FtcGxlQ292ZXJhZ2UgPSBH
RVRfUFJPQ19BRERSRVNTKGdsU2FtcGxlQ292ZXJhZ2UpOwotICAgIHNoYWRlclNvdXJjZSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xTaGFkZXJTb3VyY2UpOwotICAgIHN0ZW5jaWxGdW5jU2VwYXJhdGUg
PSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSk7Ci0gICAgc3RlbmNpbE1h
c2tTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsTWFza1NlcGFyYXRlKTsKLSAg
ICBzdGVuY2lsT3BTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsT3BTZXBhcmF0
ZSk7Ci0gICAgdW5pZm9ybTFmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZik7Ci0gICAg
dW5pZm9ybTFmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWZ2KTsKLSAgICB1bmlmb3Jt
MWkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpKTsKLSAgICB1bmlmb3JtMWl2ID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaXYpOwotICAgIHVuaWZvcm0yZiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtMmYpOwotICAgIHVuaWZvcm0yZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTJmdik7Ci0gICAgdW5pZm9ybTJpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0y
aSk7Ci0gICAgdW5pZm9ybTJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMml2KTsKLSAg
ICB1bmlmb3JtM2YgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmKTsKLSAgICB1bmlmb3Jt
M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZnYpOwotICAgIHVuaWZvcm0zaSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2kpOwotICAgIHVuaWZvcm0zaXYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVW5pZm9ybTNpdik7Ci0gICAgdW5pZm9ybTRmID0gR0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm00Zik7Ci0gICAgdW5pZm9ybTRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
NGZ2KTsKLSAgICB1bmlmb3JtNGkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpKTsKLSAg
ICB1bmlmb3JtNGl2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00aXYpOwotICAgIHVuaWZv
cm1NYXRyaXgyZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDJmdik7Ci0gICAg
dW5pZm9ybU1hdHJpeDNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4M2Z2KTsK
LSAgICB1bmlmb3JtTWF0cml4NGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXg0
ZnYpOwotICAgIHVzZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVXNlUHJvZ3JhbSk7Ci0g
ICAgdmFsaWRhdGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFZhbGlkYXRlUHJvZ3JhbSk7
Ci0gICAgdmVydGV4QXR0cmliMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMWYp
OwotICAgIHZlcnRleEF0dHJpYjFmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIx
ZnYpOwotICAgIHZlcnRleEF0dHJpYjJmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJp
YjJmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0
cmliMmZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWIzZik7Ci0gICAgdmVydGV4QXR0cmliM2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjNmdik7Ci0gICAgdmVydGV4QXR0cmliNGYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliNGYpOwotICAgIHZlcnRleEF0dHJpYjRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWI0ZnYpOwotICAgIHZlcnRleEF0dHJpYlBvaW50ZXIgPSBHRVRfUFJPQ19BRERS
RVNTKGdsVmVydGV4QXR0cmliUG9pbnRlcik7Ci0KLSAgICBpZiAoIW1fdmFsaWQpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5z
aW9ucyBhcmUgbm90IGF2YWlsYWJsZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgotICAgIGdlbkZyYW1lYnVmZmVy
cygvKiBjb3VudCAqLyAxLCAmbV9jYW52YXNGYm8pOwotCi0gICAgZ2xHZW5UZXh0dXJlcygxLCAm
bV90ZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBH
cmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywg
R3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
V1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xCaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBpZiAobV9hdHRy
cy5kZXB0aCkKLSAgICAgICAgZ2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9kZXB0
aEJ1ZmZlcik7Ci0KICNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAgICBnbEVuYWJsZShH
TF9QT0lOVF9TUFJJVEUpOwogICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJ
WkUpOwogI2VuZGlmCi0KLSAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0aWFsIGNs
ZWFyIGNvbG9yIHRvIGJsYWNrLgotICAgIG1fY3VycmVudEZibyA9IG1fY2FudmFzRmJvOwotICAg
IGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFz
RmJvKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQogewotICAg
IG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgaWYgKG1fZ2xXaWRnZXQtPmlzVmFsaWQo
KSkgewotICAgICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAg
IGRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgICAgICBkZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1fY2FudmFzRmJvKTsKLSAgICB9CiAgICAgZGVsZXRlIG1fZ2xXaWRn
ZXQ7CiAgICAgbV9nbFdpZGdldCA9IDA7CiB9CkBAIC00OTcsNjkgKzE0MCwxMiBAQCBzdGF0aWMg
aW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50MzIgcGl4ZWwpCiAgICAgcmV0dXJuICgo
cGl4ZWwgPDwgMTYpICYgMHhmZjAwMDApIHwgKChwaXhlbCA+PiAxNikgJiAweGZmKSB8IChwaXhl
bCAmIDB4ZmYwMGZmMDApOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJl
c2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGlmICh3aWR0aCA9PSBtX2JvdW5k
aW5nUmVjdC53aWR0aCgpICYmIGhlaWdodCA9PSBtX2JvdW5kaW5nUmVjdC5oZWlnaHQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9ib3VuZGluZ1JlY3QgPSBRUmVjdEYoUVBvaW50RigwLCAw
KSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKLQotICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0KLSAgICAvLyBDcmVhdGUgY29sb3IgYnVmZmVyCi0gICAgZ2xCaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKLSAgICBpZiAobV9hdHRycy5h
bHBoYSkKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhlaWdodCwg
LyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKLSAgICBlbHNlCi0gICAgICAgIGdsVGV4
SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQiwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0IsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBk
YXRhICovIDApOwotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIDApOwotCi0gICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKLSAgICAgICAgLy8gQ3JlYXRlIGRl
cHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCi0gICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0jaWYgZGVmaW5lZChR
VF9PUEVOR0xfRVNfMikKLSAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRl
eHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYs
IHdpZHRoLCBoZWlnaHQpOwotI2Vsc2UKLSAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAg
ICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdo
dCk7Ci0jZW5kaWYKLSAgICAgICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCAwKTsKLSAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4K
LSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Nh
bnZhc0Zibyk7Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUsIDApOwotICAgIGlmIChtX2F0dHJzLmRl
cHRoKQotICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSNpZiAhZGVmaW5lZChR
VF9PUEVOR0xfRVNfMikKLSAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICBmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2VuZGlmCi0KLSAgICBHTGVudW0gc3RhdHVzID0gY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOwotICAg
IGlmIChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7
Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlh
bGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IGNs
ZWFyRmxhZ3MgPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKLSAgICBpZiAo
bV9hdHRycy5kZXB0aCkKLSAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQlVGRkVSX0JJVDsKLSAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICBjbGVh
ckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7Ci0KLSAgICBn
bENsZWFyKGNsZWFyRmxhZ3MpOwotICAgIGdsRmx1c2goKTsKLX0KLQogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spIGNv
bnN0CiB7CiAgICAgaWYgKHRleHR1cmVNYXBwZXItPmlzT3BlbkdMQmFja2VkKCkpIHsKICAgICAg
ICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJH
TCo+KHRleHR1cmVNYXBwZXIpOwotICAgICAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0
dXJlLCAhbV9hdHRycy5hbHBoYSwgRmxvYXRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBtYXRyaXgs
IG9wYWNpdHksIG1hc2ssIHRydWUgLyogZmxpcCAqLyk7CisgICAgICAgIHRleG1hcEdMLT5kcmF3
VGV4dHVyZShtX2NvbnRleHQtPm1fY29tcG9zaXRvclRleHR1cmUsICFtX2NvbnRleHQtPm1fYXR0
cnMuYWxwaGEsIEZsb2F0U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrLCB0cnVlIC8qIGZsaXAgKi8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01Njks
MjEgKzE1NSwyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZQogICAgIHBhaW50ZXItPnNldFRy
YW5zZm9ybShtYXRyaXgpOwogICAgIHBhaW50ZXItPnNldE9wYWNpdHkob3BhY2l0eSk7CiAKKyAg
ICBjb25zdCBpbnQgaGVpZ2h0ID0gbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQ7CisgICAgY29u
c3QgaW50IHdpZHRoID0gbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aDsKKwogICAgIC8vIEFsdGVy
bmF0aXZlbHkgcmVhZCBwaXhlbHMgdG8gYSBtZW1vcnkgYnVmZmVyLgotICAgIFFJbWFnZSBvZmZz
Y3JlZW5JbWFnZShtX2JvdW5kaW5nUmVjdC53aWR0aCgpLCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQo
KSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBRSW1hZ2Ugb2Zmc2NyZWVuSW1hZ2Uod2lk
dGgsIGhlaWdodCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKICAgICBxdWludDMyKiBpbWFnZVBp
eGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7
CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKLSAgICBnbFJlYWRQ
aXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIG1fYm91bmRpbmdSZWN0LndpZHRoKCksIG1fYm91
bmRpbmdSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKLQotICAgIGJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisgICAgbV9j
b250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fY29udGV4dC0+bV9mYm8pOworICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8g
MCwgd2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CisgICAgbV9jb250ZXh0LT5nbEJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9i
b3VuZEZCTyk7CiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQg
d2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdAogICAgIC8vIFdlIG5lZWQgUkdCMzIg
b3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0LgogICAgIHF1aW50
MzIqIHBpeGVsc1NyYyA9IGltYWdlUGl4ZWxzOwotICAgIGNvbnN0IGludCBoZWlnaHQgPSBzdGF0
aWNfY2FzdDxpbnQ+KG1fYm91bmRpbmdSZWN0LmhlaWdodCgpKTsKLSAgICBjb25zdCBpbnQgd2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fYm91bmRpbmdSZWN0LndpZHRoKCkpOwogICAgIGNvbnN0
IGludCBoYWxmSGVpZ2h0ID0gaGVpZ2h0IC8gMjsKICAgICBmb3IgKGludCByb3cgPSAwOyByb3cg
PCBoYWxmSGVpZ2h0OyArK3JvdykgewogICAgICAgICBjb25zdCBpbnQgdGFyZ2V0SWR4ID0gKGhl
aWdodCAtIDEgLSByb3cpICogd2lkdGg7CkBAIC02MTAsNyArMTk2LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGUKIAogUVJlY3RGIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJvdW5kaW5n
UmVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYm91bmRpbmdSZWN0OworICAgIHJldHVybiBR
UmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1f
Y29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
aWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCkBAIC02MjMsNyArMjA5LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29u
c3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICAvLyB3aXRoIGJyb3dzZXJzIE9wZW5HTCBjb250ZXh0
LgogICAgIFFHTFdpZGdldCogdmlld3BvcnRHTFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRnZXQo
KTsKICAgICBpZiAodmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IG1fdmll
d3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IHBhaW50ZXItPmRldmljZSgpKSB7
Ci0gICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fdGV4dHVyZSk7
CisgICAgICAgIHZpZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fY29udGV4dC0+
bV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYzMiwx
MCArMjE4LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRl
ciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBp
eGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7
CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKKyAgICBtX2NvbnRl
eHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9j
b250ZXh0LT5tX2Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCBy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwotCi0gICAgYmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsK
KyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKIAogICAgIC8vIE9wZW5HTCBnaXZlcyB1
cyBBQkdSIG9uIDMyIGJpdHMsIGFuZCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0
CiAgICAgLy8gV2UgbmVlZCBSR0IzMiBvciBBUkdCMzJfUE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0
aGUgdG9wIGxlZnQuCkBAIC02NzAsMTQgKzI1NSwxMyBAQCB2b2lkKiBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpCiAKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDM7IGkrKykgewogICAgICAgICBTdHJpbmcgbmFtZVdpdGhFeHQgPSBw
cm9jICsgZXh0W2ldOwotCiAgICAgICAgIHZvaWQqIGFkZHIgPSBtX2dsV2lkZ2V0LT5jb250ZXh0
KCktPmdldFByb2NBZGRyZXNzKFFTdHJpbmcobmFtZVdpdGhFeHQpKTsKICAgICAgICAgaWYgKGFk
ZHIpIAogICAgICAgICAgICAgcmV0dXJuIGFkZHI7CiAgICAgfQogCiAgICAgTE9HX0VSUk9SKCJH
cmFwaGljc0NvbnRleHQzRDogRGlkIG5vdCBmaW5kIEdMIGZ1bmN0aW9uICVzIiwgcHJvYy51dGY4
KCkuZGF0YSgpKTsKLSAgICBtX3ZhbGlkID0gZmFsc2U7CisgICAgbV9jb250ZXh0LT5tX3Byb2Nz
QXJlVmFsaWQgPSBmYWxzZTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjkxLDE0ICsyNzUsODEg
QEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmkKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBo
aWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2lu
ZG93KiBob3N0V2luZG93LCBib29sKQotICAgIDogbV9pc1Jlc291cmNlU2FmZShmYWxzZSksIG1f
aW50ZXJuYWwoYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoYXR0cnMsIGhv
c3RXaW5kb3cpKSkKKyAgICA6IG1fcHJvY3NBcmVWYWxpZCh0cnVlKQorICAgICwgbV9jdXJyZW50
V2lkdGgoMCkKKyAgICAsIG1fY3VycmVudEhlaWdodCgwKQorICAgICwgbV9pc1Jlc291cmNlU2Fm
ZShmYWxzZSkKKyAgICAsIG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX3RleHR1cmUoMCkKKyAgICAs
IG1fY29tcG9zaXRvclRleHR1cmUoMCkKKyAgICAsIG1fZmJvKDApCisgICAgLCBtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcigwKQorICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCisgICAgLCBtX2lu
dGVybmFsQ29sb3JGb3JtYXQoMCkKKyAgICAsIG1fYm91bmRGQk8oMCkKKyAgICAsIG1fYWN0aXZl
VGV4dHVyZSgwKQorICAgICwgbV9ib3VuZFRleHR1cmUwKDApCisgICAgLCBtX211bHRpc2FtcGxl
RkJPKDApCisgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCisgICAgLCBt
X211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKKyAgICAsIG1faW50ZXJuYWwoYWRvcHRQdHIobmV3
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwodGhpcywgaG9zdFdpbmRvdykpKQogewotICAgIGlm
ICghbV9pbnRlcm5hbC0+aXNWYWxpZCgpKQotICAgICAgICBtX2ludGVybmFsLmNsZWFyKCk7Cisj
aWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsK
KyNlbHNlCisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgbV9hdHRycy5kZXB0aCA9
IHRydWU7CisjZW5kaWYKKyAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworCisgICAgaWYg
KCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgTE9HX0VSUk9S
KCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsK
KyAgICAgICAgbV9pbnRlcm5hbCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2RlZmluZSBHTF9QUk9DKFJldHVyblZhbHVl
LCBQcm9jLCBQYXJhbXMpIFByb2MgPSA6OlByb2M7CisjZWxzZQorI2RlZmluZSBHTF9QUk9DKFJl
dHVyblZhbHVlLCBQcm9jLCBQYXJhbXMpIFByb2MgPSByZWludGVycHJldF9jYXN0PFByb2MjI1R5
cGU+KG1faW50ZXJuYWwtPmdldFByb2NBZGRyZXNzKCNQcm9jKSk7CisjZW5kaWYKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRFByb2NzLmgiCisjdW5kZWYgR0xfUFJPQworCisgICAgaWYgKCFt
X3Byb2NzQXJlVmFsaWQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDog
QWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2YWlsYWJsZSIpOworICAgICAg
ICBtX2ludGVybmFsID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8v
IENyZWF0ZSBidWZmZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KKyAgICBnbEdlbkZyYW1lYnVmZmVy
cygvKiBjb3VudCAqLyAxLCAmbV9mYm8pOworCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb21w
b3NpdG9yVGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmYo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsK
KyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKKwor
ICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKworICAgIC8vIEJpbmQgY2FudmFzIEZC
TyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCisgICAgbV9ib3VuZEZCTyA9
IG1fZmJvOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9mYm8pOworICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQog
CiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIHsKKyAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworICAgIGlmIChtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9jb21w
b3NpdG9yVGV4dHVyZSk7CisgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0
aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8p
OworICAgIH0KIH0KIAogUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQz
RDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCkBAIC03MDgsNyArMzU5LDcgQEAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCgpCiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3Jt
VGV4dHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fdGV4dHVyZTsKKyAg
ICByZXR1cm4gbV9jb21wb3NpdG9yVGV4dHVyZTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKQEAgLTc0MSwxMyArMzkyLDYzIEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBH
cmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsK
KyAgICBpZiAoIW1faW50ZXJuYWwpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICgod2lkdGgg
PT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0ID09IG1fY3VycmVudEhlaWdodCkgfHwgKCFtX2lu
dGVybmFsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsK
ICAgICBtX2N1cnJlbnRIZWlnaHQgPSBoZWlnaHQ7CiAKLSAgICBtX2ludGVybmFsLT5yZXNoYXBl
KHdpZHRoLCBoZWlnaHQpOworICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CisKKyAgICAvLyBDcmVhdGUgY29sb3IgYnVmZmVyCisgICAgZ2xCaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgaWYg
KG1fYXR0cnMuYWxwaGEpCisgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRo
LCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZWxzZQorICAg
ICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVs
ICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAq
LyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgLyogZGF0YSAqLyAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwKTsKKworICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7CisgICAgICAgIC8v
IENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgorICAgICAgICBnbEJpbmRSZW5kZXJi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgICAgIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOworI2Vsc2UKKyAgICAgICAgaWYg
KG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwg
aGVpZ2h0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9DT01QT05FTlQsIHdpZHRoLCBoZWlnaHQpOworI2VuZGlmCisgICAgICAgIGdsQmluZFJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKyAgICB9CisKKyAg
ICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3Np
dG9yVGV4dHVyZSwgMCk7CisgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18y
KQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2Rl
cHRoU3RlbmNpbEJ1ZmZlcik7CisjZW5kaWYKKworICAgIEdMZW51bSBzdGF0dXMgPSBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBp
ZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgewor
ICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMgRkJPIGluaXRpYWxp
emF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBjbGVh
ckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1f
YXR0cnMuZGVwdGgpCisgICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgY2xlYXJG
bGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworCisgICAgZ2xD
bGVhcihjbGVhckZsYWdzKTsKKyAgICBnbEZsdXNoKCk7CiB9CiAKIEludFNpemUgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QKQEAgLTc1OCw3ICs0
NTksNyBAQCBJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVy
U2l6ZSgpIGNvbnN0CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0Rl
bnVtIHRleHR1cmUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIGdsQWN0aXZl
VGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hh
ZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBA
IC03NjYsNyArNDY3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9n
cmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0RzaXplaSBtYXhDb3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVj
dCogc2hhZGVycykKQEAgLTc3NywzMyArNDc4LDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBt
CiAgICAgfQogCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5nZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50
LCBzaGFkZXJzKTsKKyAgICBnbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwg
Y291bnQsIHNoYWRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmli
TG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAg
Z2xCaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZm
ZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5tX2N1cnJlbnRGYm8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5t
X2NhbnZhc0ZibzsKLSAgICBtX2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2lu
dGVybmFsLT5tX2N1cnJlbnRGYm8pOworICAgIG1fYm91bmRGQk8gPSBidWZmZXIgPyBidWZmZXIg
OiBtX2ZibzsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1fYm91bmRGQk8pOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVy
KHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCBy
ZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShH
QzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTgxNSw1NSArNTE2
LDU1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRDb2xvcihHQzNEY2xhbXBmIHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVl
LCBHQzNEY2xhbXBmIGFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBh
bHBoYSk7CisgICAgZ2xCbGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+YmxlbmRFcXVhdGlvbihtb2RlKTsKKyAgICBnbEJsZW5kRXF1YXRpb24obW9kZSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBt
b2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUo
bW9kZVJHQiwgbW9kZUFscGhhKTsKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdC
LCBtb2RlQWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0Mz
RGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIGdsQmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3Ip
OwotfSAgICAgICAKK30KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJh
dGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBH
QzNEZW51bSBkc3RBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBk
c3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0g
dXNhZ2UpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2Fn
ZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5idWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVmZmVy
RGF0YSh0YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBH
QzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlclN1YkRhdGEo
dGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIGdsQnVmZmVyU3ViRGF0YSh0YXJnZXQs
IG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpj
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyh0YXJnZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9y
KEdDM0RjbGFtcGYgciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkK
QEAgLTkwNCw3ICs2MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVy
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Y29t
cGlsZVNoYWRlcihzaGFkZXIpOworICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQg
eSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKQEAg
LTk1Miw3ICs2NTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dy
YW0pOwogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
cik7CisgICAgZ2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCkBAIC05NjQsNyArNjY1LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0Fy
cmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCkBAIC05
ODgsNyArNjg5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNh
cCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1
aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpmaW5pc2goKQpAQCAtMTAwNiwxMyArNzA3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmZsdXNoKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVy
YnVmZmVydGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZm
ZXIpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVu
dCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQg
bGV2ZWwpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRl
eHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFy
Z2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC0xMDI0LDcgKzcy
NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+Z2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdl
dCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAt
MTAzNywxNCArNzM4LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
YihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7
Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNE
OjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJv
Z3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RN
YWxsb2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50
IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFj
dGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUs
ICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4
TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFt
ZUxlbmd0aCkgewogICAgICAgICBmYXN0RnJlZShuYW1lKTsKQEAgLTEwNjksMTQgKzc3MCwxNCBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwt
PmdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRl
eHQzRDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQ
cm9ncmFtaXYoc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBu
YW1lID0gKEdMY2hhciopIGZhc3RNYWxsb2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVM
ZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAot
ICAgIG1faW50ZXJuYWwtPmdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9n
cmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7
CisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGlu
ZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAg
aWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTA5NywyMCAr
Nzk4LDIwIEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAg
ICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVy
biBtX2ludGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgp
LmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwt
Pm1fYXR0cnM7CisgICAgcmV0dXJuIG1fYXR0cnM7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRFcnJvcigpCiB7Ci0gICAgaWYgKG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJy
b3JzLnNpemUoKSA+IDApIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRv
ciBpdGVyID0gbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICBpZiAo
bV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkgeworICAgICAgICBMaXN0SGFzaFNldDxHQzNE
ZW51bT46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOwogICAgICAg
ICBHQzNEZW51bSBlcnIgPSAqaXRlcjsKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNF
cnJvcnMucmVtb3ZlKGl0ZXIpOworICAgICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRl
cik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCkBAIC0xMTM2LDcgKzgzNyw3IEBAIEdD
M0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVy
KGJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC0xMTUxLDcg
Kzg1Miw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBs
YXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAg
ICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVy
biBtX2ludGVybmFsLT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJ
c0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMTYwLDcgKzg2
MSw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5h
bC0+aXNQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsK
IH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQpAQCAtMTE2OSw3ICs4NzAsNyBAQCBHQzNEYm9vbGVh
biBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5k
ZXJidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1Jl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJl
bmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTExNzgsNyArODc5LDcgQEAgR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQog
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVy
KTsKKyAgICByZXR1cm4gZ2xJc1NoYWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTEy
MDAsNyArOTAxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9n
cmFtKHByb2dyYW0pOworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBw
YXJhbSkKQEAgLTEyNTEsMTMgKzk1MiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5k
ZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAg
ICAgICBicmVhazsKICAgICB9CiAjZW5kaWYKLSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJT
dG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2
YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGlu
dmVydCk7CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVp
IHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTI4Myw3ICs5ODQsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0
IFN0cmluZyYgc291cgogICAgIENTdHJpbmcgc291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4
KCk7CiAgICAgY29uc3QgY2hhciogZGF0YSA9IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVu
Z3RoID0gcHJlZml4ZWRTb3VyY2UubGVuZ3RoKCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291
cmNlKChHTHVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAg
IGdsU2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZs
ZW5ndGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51
bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKQEAgLTEyOTUsNyArOTk2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGlu
dCByZWYsIEdDM0R1aW50IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNE
dWludCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1h
c2spOworICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpA
QCAtMTMwNyw3ICsxMDA4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2so
R0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJh
dGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJh
dGUoZmFjZSwgbWFzayk7CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0Mz
RGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQpAQCAtMTMxOSw3ICsxMDIwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWls
LCBHQzNEZW51bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFy
YXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51
bSB6cGFzcykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFz
cyk7CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMzM3LDEyMSArMTAz
OCwxMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
MWYobG9jYXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rm
bG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYw
LCB2MSk7CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxv
YXQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBn
bFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXks
IEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9u
LCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2Nh
dGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRp
KGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBz
aXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5p
Zm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5z
cG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0
cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1N
YXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Ri
b29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAg
ICBnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2Us
IGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9z
ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xV
c2VQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0
ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ1OSw2MSArMTE2MCw2MSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9h
dCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRy
aWIxZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRy
aWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihp
bmRleCwgdjAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsK
KyAgICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBH
QzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2
MCwgdjEsIHYyKTsKKyAgICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7
CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwg
R0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0
dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRl
eCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhB
dHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdD
M0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5v
cm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVy
dGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCBy
ZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7
CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVk
LCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KG9mZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGlu
dCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE1
MzEsNyArMTIzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0Rl
bnVtIHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5h
bWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBw
YXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihH
QzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xNTQzLDcgKzEyNDQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEZmxvYXQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50
LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZh
bHVlKTsKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwg
YXR0YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0x
NTU1LDcgKzEyNTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUs
IHZhbHVlKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsK
IH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCkBAIC0xNTYzLDcgKzEyNjQsNyBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVu
Z3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3ND
b250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAK
ICAgICBHTHNpemVpIHNpemUgPSAwOwogCkBAIC0xNTcxLDcgKzEyNzIsNyBAQCBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwt
PmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGds
R2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBT
dHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTU4MiwxNCArMTI4
MywxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFy
YW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQs
IHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFk
ZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50
KiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwg
cGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwg
dmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xNTk3LDE0ICsxMjk4LDE0IEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xp
bnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBo
aWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVy
aXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsK
IAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZh
c3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAot
ICAgIG1faW50ZXJuYWwtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBp
bmZvKTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZv
KTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0x
NjE3LDE0ICsxMzE4LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291
cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwt
PmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVO
R1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0
M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9
IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNo
YWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVy
U291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0
KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTY0NywxMyArMTM0OCwxMyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIHBhcmFtTmFtZSwgRwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2
YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAg
IGdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRp
b24sIHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxv
Y2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAt
MTY2MSwxOSArMTM2MiwxOSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3Jt
TG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChw
cm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZs
b2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZh
bHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0
ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRy
aWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51
bSBwYXJhbU5hbWUpCkBAIC0xNjgxLDcgKzEzODIsNyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0g
cAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAg
R0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQ
b2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdDM0RzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwog
fQogCkBAIC0xNzAyLDcgKzE0MDMsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVCdWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVm
ZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQg
Ki8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIApAQCAtMTcxMCwyOCArMTQx
MSwyOCBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1
ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyog
Y291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8g
MSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJv
Z3JhbSgpOworICAgIHJldHVybiBnbENyZWF0ZVByb2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAw
OwotICAgIG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRs
ZSk7CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAg
IHJldHVybiBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0
eXBlKTsKKyAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RP
YmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQpAQCAtMTc0NSwzMSArMTQ0
NiwzMSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJl
KCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0
IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVC
dWZmZXJzKDEsICZidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVG
cmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJh
bWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwg
JmZyYW1lYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3Jh
bShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0p
OworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0
ZVNoYWRlcihzaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
KQpAQCAtMTc4MCwzMCArMTQ4MSwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpCiB7Ci0gICAgbV9pbnRlcm5hbC0+
bV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQo
ZXJyb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVk
KCkKIHsKLSAgICBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgbV9s
YXllckNvbXBvc2l0ZWQgPSB0cnVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJr
Q29udGV4dENoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBBbnkgYWNjZWxlcmF0ZWQgY29tcG9z
aXRvciBuZWVkcyB0byBiZSB0b2xkIHRvIHJlLXJlYWQgZnJvbSBoZXJlLgotICAgIG1faW50ZXJu
YWwtPm1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBm
YWxzZTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQ7CisgICAgcmV0
dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPm1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVu
c2lvbnMzRFF0KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zLmdldCgpOwor
ICAgIGlmICghbV9leHRlbnNpb25zKQorICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihu
ZXcgRXh0ZW5zaW9uczNEUXQpOworICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100527</attachid>
            <date>2011-07-12 11:21:40 -0700</date>
            <delta_ts>2011-07-12 14:31:43 -0700</delta_ts>
            <desc>use OpenGLShims resolver implementation</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>83700</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNjhjZjM4Li43M2I1YjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3
IEBACisyMDExLTA3LTEyICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29t
PgorCisgICAgICAgIFtRdF0gTWFrZSBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRyYW5zcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IE9w
ZW5HTFNoaW1zIHN5bWJvbCByZXNvbHZlciBmb3IgUXQKKworICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL09wZW5HTFNoaW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJv
dW5kaW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3ND
b250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGlj
c0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZv
cm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjppc1NoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6bGlua1Byb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJl
bmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpz
aGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5j
aWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnN0
ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnN0ZW5jaWxPcFNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTJpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2kpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dmFsaWRhdGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIyZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIzZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWI0Zik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpzeW50aGVzaXplR0xFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6bWFya0xheWVyQ29tcG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6bWFya0NvbnRleHRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorCiAyMDExLTA3LTA4ICBKZWZmcmV5IFBmYXUgIDxq
cGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGZyYW1ld29yayBmb3IgYSBuZXcvZHVtbXkg
WE1MRG9jdW1lbnRQYXJzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYzllNjQwNC4uMjYzZmVlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTM1NzEsNiArMzU3MSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9PcGVuR0xTaGltcy5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lv
bnMzRFF0LmgKIApAQCAtMzU5OSw2ICszNjAwLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uy5jcHAgXAogICAgICAgICBodG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4dC5jcHAgXAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgXAorICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvcXQvRHJhd2luZ0J1ZmZlclF0LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCAwY2JlN2UzLi44OTIzMWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgKQEAgLTg3LDYgKzg3LDkgQEAgY2xhc3MgRXh0ZW5zaW9uczNEOwogI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQogY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwog
I2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCitjbGFzcyBFeHRlbnNpb25zM0RRdDsKKyNlbmRpZgog
Y2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1hZ2VEYXRhOwpAQCAtODky
LDYgKzg5NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNp
Z25lZCBjaGFyKiBwaXhlbHMsIGludCBwaXhlbHNTaXplKTsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oUVQpCisgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRFF0OworICAgIE93blB0cjxFeHRl
bnNpb25zM0RRdD4gbV9leHRlbnNpb25zOworI2VuZGlmCisKICAgICBpbnQgbV9jdXJyZW50V2lk
dGgsIG1fY3VycmVudEhlaWdodDsKICAgICBib29sIG1faXNSZXNvdXJjZVNhZmU7CiAKQEAgLTkw
MCw3ICs5MDgsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1fd2ViR0xM
YXllcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIHR5cGVk
ZWYgc3RydWN0IHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKICAgICAgICAgU3RyaW5nIGxvZzsK
QEAgLTkwOCwxMCArOTE2LDEyIEBAIHB1YmxpYzoKICAgICB9IFNoYWRlclNvdXJjZUVudHJ5Owog
ICAgIEhhc2hNYXA8UGxhdGZvcm0zRE9iamVjdCwgU2hhZGVyU291cmNlRW50cnk+IG1fc2hhZGVy
U291cmNlTWFwOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNp
b25zM0RPcGVuR0w7CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKIAogICAgIE93
blB0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgogCiAgICAgQXR0
cmlidXRlcyBtX2F0dHJzOwogICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+ID4gbV92ZXJ0ZXhBcnJh
eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09w
ZW5HTFNoaW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09w
ZW5HTFNoaW1zLmNwcAppbmRleCA5MmQ3OWY5Li4xODIzZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwCkBAIC0y
NiwxMSArMjYsMjYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxRTGF0
aW4xU3RyaW5nPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9PUEVO
R0xfRVNfMikKKyNkZWZpbmUgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKEZ1bmN0aW9uTmFt
ZSwgc3VjY2VzcykgXAorICAgIG9wZW5HTEZ1bmN0aW9uVGFibGUoKS0+RnVuY3Rpb25OYW1lID0g
OjpGdW5jdGlvbk5hbWUKKyNlbHNlCiAjZGVmaW5lIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRS
WShGdW5jdGlvbk5hbWUsIHN1Y2Nlc3MpIFwKICAgICBvcGVuR0xGdW5jdGlvblRhYmxlKCktPkZ1
bmN0aW9uTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25OYW1lIyNUeXBlPihsb29rdXBP
cGVuR0xGdW5jdGlvbkFkZHJlc3MoI0Z1bmN0aW9uTmFtZSwgc3VjY2VzcykpCisjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oUVQpCitzdGF0aWMgdm9pZCogZ2V0
UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUpCit7CisgICAgcmV0dXJuIFFHTENvbnRl
eHQ6OmN1cnJlbnRDb250ZXh0KCktPmdldFByb2NBZGRyZXNzKFFMYXRpbjFTdHJpbmcocHJvY05h
bWUpKTsKK30KKyNlbHNlCiB0eXBlZGVmIHZvaWQqICgqZ2xHZXRQcm9jQWRkcmVzc1R5cGUpIChj
b25zdCBjaGFyKiBwcm9jTmFtZSk7CiBzdGF0aWMgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3Qg
Y2hhciogcHJvY05hbWUpCiB7CkBAIC00Nyw2ICs2Miw3IEBAIHN0YXRpYyB2b2lkKiBnZXRQcm9j
QWRkcmVzcyhjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIGRsc3ltKFJUTERf
REVGQVVMVCwgcHJvY05hbWUpOwogICAgIHJldHVybiBnZXRQcm9jQWRkcmVzc0Z1bmN0aW9uKHBy
b2NOYW1lKTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCogbG9va3VwT3BlbkdMRnVuY3Rpb25B
ZGRyZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCYgc3VjY2VzcykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5o
CmluZGV4IGE0MzFiMDMuLjAxMTI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaApAQCAtMTcsNyArMTcsMTEgQEAKICAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKICAqLwogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVk
ZSA8UUdMQ29udGV4dD4KKyNlbHNlCiAjaW5jbHVkZSA8R0wvZ2wuaD4KKyNlbmRpZgogCiB0eXBl
ZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSBPcGVuR0xGdW5jdGlvblRhYmxlOwogCkBA
IC0yMjQsNDIgKzIyOCw1NSBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7
CiAjZGVmaW5lIGdsQmluZEF0dHJpYkxvY2F0aW9uICAgICAgICAgICAgICAgICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbEJpbmRBdHRyaWJMb2NhdGlvbikKICNkZWZpbmUgZ2xCaW5kQnVmZmVyICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZEJ1ZmZlcikK
ICNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsQmluZEZyYW1lYnVmZmVyKQorI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZlciAg
ICAgICAgICAgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVAogI2RlZmluZSBnbEJpbmRS
ZW5kZXJidWZmZXJFWFQgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5k
UmVuZGVyYnVmZmVyKQorI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAgICAgICAgICAg
ICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQKICNkZWZpbmUgZ2xCbGVuZENvbG9yICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxlbmRDb2xvcikKICNkZWZp
bmUgZ2xCbGVuZEVxdWF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsQmxlbmRFcXVhdGlvbikKICNkZWZpbmUgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgICAg
ICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKQog
I2RlZmluZSBnbEJsZW5kRnVuY1NlcGFyYXRlICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xCbGVuZEZ1bmNTZXBhcmF0ZSkKICNkZWZpbmUgZ2xCbGl0RnJhbWVidWZmZXJF
WFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxpdEZyYW1lYnVmZmVy
KQorI2RlZmluZSBnbEJsaXRGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICBnbEJsaXRG
cmFtZWJ1ZmZlckVYVAogI2RlZmluZSBnbEJ1ZmZlckRhdGEgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCdWZmZXJEYXRhKQogI2RlZmluZSBnbEJ1ZmZlclN1
YkRhdGEgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCdWZmZXJT
dWJEYXRhKQogI2RlZmluZSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQgICAgICAgICAgICBM
T09LVVBfR0xfRlVOQ1RJT04oZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKQorI2RlZmluZSBnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXMgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXNFWFQKICNkZWZpbmUgZ2xDb21waWxlU2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsQ29tcGlsZVNoYWRlcikKICNkZWZpbmUgZ2xDcmVhdGVQcm9ncmFt
ICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQ3JlYXRlUHJvZ3Jh
bSkKICNkZWZpbmUgZ2xDcmVhdGVTaGFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsQ3JlYXRlU2hhZGVyKQogI2RlZmluZSBnbERlbGV0ZUJ1ZmZlcnMgICAg
ICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVCdWZmZXJzKQog
I2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xEZWxldGVGcmFtZWJ1ZmZlcnMpCisjZGVmaW5lIGdsRGVsZXRlRnJhbWVidWZm
ZXJzICAgICAgICAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhUCiAjZGVmaW5lIGds
RGVsZXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bERlbGV0ZVByb2dyYW0pCiAjZGVmaW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAgICAg
ICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMpCisjZGVmaW5l
IGdsRGVsZXRlUmVuZGVyYnVmZmVycyAgICAgICAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVyc0VYVAogI2RlZmluZSBnbERlbGV0ZVNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICBM
T09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVTaGFkZXIpCiAjZGVmaW5lIGdsRGV0YWNoU2hhZGVy
ICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERldGFjaFNoYWRl
cikKICNkZWZpbmUgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KQogI2RlZmluZSBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSkKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVY
VCAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIp
CisjZGVmaW5lIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgICAgICAgICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCAg
ICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQpCisj
ZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgICAgICAgICAgICAgICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkRFWFQKICNkZWZpbmUgZ2xHZW5CdWZmZXJzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuQnVmZmVycykKICNkZWZpbmUgZ2xHZW5lcmF0
ZU1pcG1hcEVYVCAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuZXJh
dGVNaXBtYXApCisjZGVmaW5lIGdsR2VuZXJhdGVNaXBtYXAgICAgICAgICAgICAgICAgICAgICAg
IGdsR2VuZXJhdGVNaXBtYXBFWFQKICNkZWZpbmUgZ2xHZW5GcmFtZWJ1ZmZlcnNFWFQgICAgICAg
ICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuRnJhbWVidWZmZXJzKQorI2RlZmlu
ZSBnbEdlbkZyYW1lYnVmZmVycyAgICAgICAgICAgICAgICAgICAgICBnbEdlbkZyYW1lYnVmZmVy
c0VYVAogI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xHZW5SZW5kZXJidWZmZXJzKQorI2RlZmluZSBnbEdlblJlbmRlcmJ1
ZmZlcnMgICAgICAgICAgICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQKICNkZWZpbmUg
Z2xHZXRBY3RpdmVBdHRyaWIgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9O
KGdsR2V0QWN0aXZlQXR0cmliKQogI2RlZmluZSBnbEdldEFjdGl2ZVVuaWZvcm0gICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRBY3RpdmVVbmlmb3JtKQogI2RlZmlu
ZSBnbEdldEF0dGFjaGVkU2hhZGVycyAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJ
T04oZ2xHZXRBdHRhY2hlZFNoYWRlcnMpCiAjZGVmaW5lIGdsR2V0QXR0cmliTG9jYXRpb24gICAg
ICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEF0dHJpYkxvY2F0aW9uKQot
I2RlZmluZSBnbEdldEJ1ZmZlclBhcmFtZXRlcml2ICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdikKICNkZWZpbmUgZ2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdkVYVCAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QnVmZmVyUGFy
YW1ldGVyaXYpCisjZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgICAgICAg
IGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQKICNkZWZpbmUgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdkVYVCBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdikKKyNkZWZpbmUgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdiAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVAogI2Rl
ZmluZSBnbEdldFByb2dyYW1JbmZvTG9nICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZXRQcm9ncmFtSW5mb0xvZykKICNkZWZpbmUgZ2xHZXRQcm9ncmFtaXYgICAgICAg
ICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0UHJvZ3JhbWl2KQogI2Rl
ZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikKKyNkZWZpbmUgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdiAgICAgICAgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVY
VAogI2RlZmluZSBnbEdldFNoYWRlckluZm9Mb2cgICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJJbmZvTG9nKQogI2RlZmluZSBnbEdldFNoYWRlcml2ICAg
ICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJpdikK
ICNkZWZpbmUgZ2xHZXRTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsR2V0U2hhZGVyU291cmNlKQpAQCAtMjcxLDEyICsyODgsMTYgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgewogI2RlZmluZSBnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRWZXJ0ZXhBdHRy
aWJQb2ludGVydikKICNkZWZpbmUgZ2xJc0J1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNCdWZmZXIpCiAjZGVmaW5lIGdsSXNGcmFtZWJ1ZmZl
ckVYVCAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzRnJhbWVidWZm
ZXIpCisjZGVmaW5lIGdsSXNGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgIGdsSXNG
cmFtZWJ1ZmZlckVYVAogI2RlZmluZSBnbElzUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc1Byb2dyYW0pCiAjZGVmaW5lIGdsSXNSZW5kZXJi
dWZmZXJFWFQgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzUmVuZGVy
YnVmZmVyKQorI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICBn
bElzUmVuZGVyYnVmZmVyRVhUCiAjZGVmaW5lIGdsSXNTaGFkZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzU2hhZGVyKQogI2RlZmluZSBnbExpbmtQ
cm9ncmFtICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xMaW5r
UHJvZ3JhbSkKICNkZWZpbmUgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUICAgICAgICAgICAgICAg
TE9PS1VQX0dMX0ZVTkNUSU9OKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSkKKyNkZWZpbmUgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlICAgICAgICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhU
CiAjZGVmaW5lIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSkKKyNkZWZpbmUgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGVFWFQKICNkZWZpbmUgZ2xTYW1wbGVDb3ZlcmFnZSAgICAgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsU2FtcGxlQ292ZXJhZ2UpCiAjZGVmaW5lIGdsU2hh
ZGVyU291cmNlICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbFNo
YWRlclNvdXJjZSkKICNkZWZpbmUgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBw
ZXJHTC5jcHAKaW5kZXggNmQ1ZjUxMC4uMmMwMjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAK
QEAgLTMzLDExICszMywxMyBAQAogI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgogI2VsaWYgT1Mo
TUFDX09TX1gpCiAjaW5jbHVkZSA8Z2wuaD4KKyNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PGNhaXJvL09wZW5HTFNoaW1zLmg+CiAjZWxzZQogI2luY2x1ZGUgPEdML2dsLmg+CiAjZW5kaWYK
IAotI2lmbmRlZiBURVhNQVBfT1BFTkdMX0VTXzIKKyNpZiAhZGVmaW5lZChURVhNQVBfT1BFTkdM
X0VTXzIpICYmICFQTEFURk9STShRVCkKIGV4dGVybiAiQyIgewogICAgIHZvaWQgZ2xVbmlmb3Jt
MWYoR0xpbnQsIEdMZmxvYXQpOwogICAgIHZvaWQgZ2xVbmlmb3JtMWkoR0xpbnQsIEdMaW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggMmViZGNmYS4uYTIyYjE3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgogCiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKKyNpbmNsdWRlIDxjYWlyby9PcGVuR0xT
aGltcy5oPgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJF
eHRlbnNpb25zM0RRdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNTUsMTA5
ICs1Niw2IEBAIHR5cGVkZWYgY2hhciBHTGNoYXI7CiAjZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJ
TDggMHg4OEYwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEFQSUVOVFJZKQotI2RlZmluZSBBUElF
TlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xfRVNfMgotdHlwZWRlZiBHTHNpemVpcHRy
IEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0ciBHTGludHB0clR5cGU7Ci0jZWxzZQot
dHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIHB0cmRpZmZfdCBHTGlu
dHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBY3RpdmVUZXh0
dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEF0dGFjaFNoYWRl
clR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRB
dHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUpIChH
TGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kQ29sb3JUeXBl
KSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUpKEdMZW51bSwgR0xlbnVtKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlKShHTGVudW0g
c3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRhdGFUeXBlKSAoR0xlbnVtLCBHTHNp
emVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdMaW50cHRyVHlwZSwgR0xzaXplaXB0
clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBHTGVudW0gKEFQSUVOVFJZKiBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZ
KiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVkZWYgR0x1aW50IChBUElFTlRSWSogZ2xD
cmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVs
ZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVByb2dyYW1UeXBlKSAoR0x1
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUp
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xE
ZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGV0
YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51
bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwg
R0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5CdWZmZXJzVHlwZSkgKEdMc2l6
ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5lcmF0ZU1pcG1hcFR5
cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuRnJhbWVi
dWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdMc2l6
ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXpl
aSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0QXR0cmliTG9jYXRp
b25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFt
aXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSkgKEdM
dWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdM
c2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRVbmlmb3JtTG9j
YXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUpIChH
THVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRW
ZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlKSAoR0x1aW50LCBHTGVu
dW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc0J1ZmZlclR5
cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzRnJhbWVidWZm
ZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1Byb2dy
YW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1JlbmRl
cmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElz
U2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbExpbmtQcm9n
cmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5cGUpIChHTGNsYW1wZiwgR0xib29s
ZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hhZGVyU291cmNlVHlwZSkgKEdMdWlu
dCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE1hc2tTZXBhcmF0
ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5j
aWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUpIChHTGludCwgR0xmbG9hdCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFpVHlw
ZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xaXZU
eXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJpVHlwZSkgKEdM
aW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMml2
VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2Z2VHlwZSkgKEdMaW50LCBHTHNp
emVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0z
aVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5cGUpIChHTGludCwgR0xmbG9hdCwg
R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVu
aWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdM
aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aXZUeXBlKSAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3Qg
R0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4M2Z2VHlw
ZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUpIChHTGludCwgR0xzaXplaSwg
R0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVz
ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmFsaWRh
dGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRl
eEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZUeXBlKSAoR0x1aW50LCBj
b25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxv
YXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9p
bnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29u
c3QgR0x2b2lkKik7Ci0KIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQpAQCAtMTY4
LDEzICs2NiwxMCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsCiAjZW5kaWYKIHsK
IHB1YmxpYzoKLSAgICBHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KTsKKyAgICBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEKiwgSG9zdFdpbmRvdyopOwogICAg
IH5HcmFwaGljc0NvbnRleHQzREludGVybmFsKCk7CiAKLSAgICBib29sIGlzVmFsaWQoKSB7IHJl
dHVybiBtX3ZhbGlkOyB9Ci0KICAgICBRR0xXaWRnZXQqIGdldFZpZXdwb3J0R0xXaWRnZXQoKTsK
LSAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1h
cFRleHR1cmUqIG1hc2spIGNvbnN0OwogI2VuZGlmCkBAIC0xODIsMTIzICs3NywxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNz
SXRlbSosIFFXaWRnZXQqKTsKICAgICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CiAKLSAg
ICBnbEFjdGl2ZVRleHR1cmVUeXBlIGFjdGl2ZVRleHR1cmU7Ci0gICAgZ2xBdHRhY2hTaGFkZXJU
eXBlIGF0dGFjaFNoYWRlcjsKLSAgICBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUgYmluZEF0dHJp
YkxvY2F0aW9uOwotICAgIGdsQmluZEJ1ZmZlclR5cGUgYmluZEJ1ZmZlcjsKLSAgICBnbEJpbmRG
cmFtZWJ1ZmZlclR5cGUgYmluZEZyYW1lYnVmZmVyOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlclR5
cGUgYmluZFJlbmRlcmJ1ZmZlcjsKLSAgICBnbEJsZW5kQ29sb3JUeXBlIGJsZW5kQ29sb3I7Ci0g
ICAgZ2xCbGVuZEVxdWF0aW9uVHlwZSBibGVuZEVxdWF0aW9uOwotICAgIGdsQmxlbmRFcXVhdGlv
blNlcGFyYXRlVHlwZSBibGVuZEVxdWF0aW9uU2VwYXJhdGU7Ci0gICAgZ2xCbGVuZEZ1bmNTZXBh
cmF0ZVR5cGUgYmxlbmRGdW5jU2VwYXJhdGU7Ci0gICAgZ2xCdWZmZXJEYXRhVHlwZSBidWZmZXJE
YXRhOwotICAgIGdsQnVmZmVyU3ViRGF0YVR5cGUgYnVmZmVyU3ViRGF0YTsKLSAgICBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXNUeXBlIGNoZWNrRnJhbWVidWZmZXJTdGF0dXM7Ci0gICAgZ2xDb21w
aWxlU2hhZGVyVHlwZSBjb21waWxlU2hhZGVyOwotICAgIGdsQ3JlYXRlUHJvZ3JhbVR5cGUgY3Jl
YXRlUHJvZ3JhbTsKLSAgICBnbENyZWF0ZVNoYWRlclR5cGUgY3JlYXRlU2hhZGVyOwotICAgIGds
RGVsZXRlQnVmZmVyc1R5cGUgZGVsZXRlQnVmZmVyczsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
c1R5cGUgZGVsZXRlRnJhbWVidWZmZXJzOwotICAgIGdsRGVsZXRlUHJvZ3JhbVR5cGUgZGVsZXRl
UHJvZ3JhbTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlIGRlbGV0ZVJlbmRlcmJ1ZmZl
cnM7Ci0gICAgZ2xEZWxldGVTaGFkZXJUeXBlIGRlbGV0ZVNoYWRlcjsKLSAgICBnbERldGFjaFNo
YWRlclR5cGUgZGV0YWNoU2hhZGVyOwotICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlw
ZSBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eVR5cGUgZW5hYmxlVmVydGV4QXR0cmliQXJyYXk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlclR5cGUgZnJhbWVidWZmZXJSZW5kZXJidWZmZXI7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRFR5cGUgZnJhbWVidWZmZXJUZXh0dXJlMkQ7Ci0gICAgZ2xHZW5CdWZmZXJzVHlwZSBnZW5C
dWZmZXJzOwotICAgIGdsR2VuZXJhdGVNaXBtYXBUeXBlIGdlbmVyYXRlTWlwbWFwOwotICAgIGds
R2VuRnJhbWVidWZmZXJzVHlwZSBnZW5GcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xHZW5SZW5kZXJidWZm
ZXJzVHlwZSBnZW5SZW5kZXJidWZmZXJzOwotICAgIGdsR2V0QWN0aXZlQXR0cmliVHlwZSBnZXRB
Y3RpdmVBdHRyaWI7Ci0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSBnZXRBY3RpdmVVbmlmb3Jt
OwotICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSBnZXRBdHRhY2hlZFNoYWRlcnM7Ci0gICAg
Z2xHZXRBdHRyaWJMb2NhdGlvblR5cGUgZ2V0QXR0cmliTG9jYXRpb247Ci0gICAgZ2xHZXRCdWZm
ZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0QnVmZmVyUGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXY7Ci0gICAgZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUgZ2V0UHJvZ3JhbUluZm9Mb2c7
Ci0gICAgZ2xHZXRQcm9ncmFtaXZUeXBlIGdldFByb2dyYW1pdjsKLSAgICBnbEdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdl
dFNoYWRlckluZm9Mb2dUeXBlIGdldFNoYWRlckluZm9Mb2c7Ci0gICAgZ2xHZXRTaGFkZXJpdlR5
cGUgZ2V0U2hhZGVyaXY7Ci0gICAgZ2xHZXRTaGFkZXJTb3VyY2VUeXBlIGdldFNoYWRlclNvdXJj
ZTsKLSAgICBnbEdldFVuaWZvcm1mdlR5cGUgZ2V0VW5pZm9ybWZ2OwotICAgIGdsR2V0VW5pZm9y
bWl2VHlwZSBnZXRVbmlmb3JtaXY7Ci0gICAgZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlIGdldFVu
aWZvcm1Mb2NhdGlvbjsKLSAgICBnbEdldFZlcnRleEF0dHJpYmZ2VHlwZSBnZXRWZXJ0ZXhBdHRy
aWJmdjsKLSAgICBnbEdldFZlcnRleEF0dHJpYml2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJpdjsKLSAg
ICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2VHlwZSBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydjsK
LSAgICBnbElzQnVmZmVyVHlwZSBpc0J1ZmZlcjsKLSAgICBnbElzRnJhbWVidWZmZXJUeXBlIGlz
RnJhbWVidWZmZXI7Ci0gICAgZ2xJc1Byb2dyYW1UeXBlIGlzUHJvZ3JhbTsKLSAgICBnbElzUmVu
ZGVyYnVmZmVyVHlwZSBpc1JlbmRlcmJ1ZmZlcjsKLSAgICBnbElzU2hhZGVyVHlwZSBpc1NoYWRl
cjsKLSAgICBnbExpbmtQcm9ncmFtVHlwZSBsaW5rUHJvZ3JhbTsKLSAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VUeXBlIHJlbmRlcmJ1ZmZlclN0b3JhZ2U7Ci0gICAgZ2xTYW1wbGVDb3ZlcmFnZVR5
cGUgc2FtcGxlQ292ZXJhZ2U7Ci0gICAgZ2xTaGFkZXJTb3VyY2VUeXBlIHNoYWRlclNvdXJjZTsK
LSAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlIHN0ZW5jaWxGdW5jU2VwYXJhdGU7Ci0gICAg
Z2xTdGVuY2lsTWFza1NlcGFyYXRlVHlwZSBzdGVuY2lsTWFza1NlcGFyYXRlOwotICAgIGdsU3Rl
bmNpbE9wU2VwYXJhdGVUeXBlIHN0ZW5jaWxPcFNlcGFyYXRlOwotICAgIGdsVW5pZm9ybTFmVHlw
ZSB1bmlmb3JtMWY7Ci0gICAgZ2xVbmlmb3JtMWZ2VHlwZSB1bmlmb3JtMWZ2OwotICAgIGdsVW5p
Zm9ybTFpVHlwZSB1bmlmb3JtMWk7Ci0gICAgZ2xVbmlmb3JtMWl2VHlwZSB1bmlmb3JtMWl2Owot
ICAgIGdsVW5pZm9ybTJmVHlwZSB1bmlmb3JtMmY7Ci0gICAgZ2xVbmlmb3JtMmZ2VHlwZSB1bmlm
b3JtMmZ2OwotICAgIGdsVW5pZm9ybTJpVHlwZSB1bmlmb3JtMmk7Ci0gICAgZ2xVbmlmb3JtMml2
VHlwZSB1bmlmb3JtMml2OwotICAgIGdsVW5pZm9ybTNmVHlwZSB1bmlmb3JtM2Y7Ci0gICAgZ2xV
bmlmb3JtM2Z2VHlwZSB1bmlmb3JtM2Z2OwotICAgIGdsVW5pZm9ybTNpVHlwZSB1bmlmb3JtM2k7
Ci0gICAgZ2xVbmlmb3JtM2l2VHlwZSB1bmlmb3JtM2l2OwotICAgIGdsVW5pZm9ybTRmVHlwZSB1
bmlmb3JtNGY7Ci0gICAgZ2xVbmlmb3JtNGZ2VHlwZSB1bmlmb3JtNGZ2OwotICAgIGdsVW5pZm9y
bTRpVHlwZSB1bmlmb3JtNGk7Ci0gICAgZ2xVbmlmb3JtNGl2VHlwZSB1bmlmb3JtNGl2OwotICAg
IGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUgdW5pZm9ybU1hdHJpeDJmdjsKLSAgICBnbFVuaWZvcm1N
YXRyaXgzZnZUeXBlIHVuaWZvcm1NYXRyaXgzZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2VHlw
ZSB1bmlmb3JtTWF0cml4NGZ2OwotICAgIGdsVXNlUHJvZ3JhbVR5cGUgdXNlUHJvZ3JhbTsKLSAg
ICBnbFZhbGlkYXRlUHJvZ3JhbVR5cGUgdmFsaWRhdGVQcm9ncmFtOwotICAgIGdsVmVydGV4QXR0
cmliMWZUeXBlIHZlcnRleEF0dHJpYjFmOwotICAgIGdsVmVydGV4QXR0cmliMWZ2VHlwZSB2ZXJ0
ZXhBdHRyaWIxZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUgdmVydGV4QXR0cmliMmY7Ci0g
ICAgZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlIHZlcnRleEF0dHJpYjJmdjsKLSAgICBnbFZlcnRleEF0
dHJpYjNmVHlwZSB2ZXJ0ZXhBdHRyaWIzZjsKLSAgICBnbFZlcnRleEF0dHJpYjNmdlR5cGUgdmVy
dGV4QXR0cmliM2Z2OwotICAgIGdsVmVydGV4QXR0cmliNGZUeXBlIHZlcnRleEF0dHJpYjRmOwot
ICAgIGdsVmVydGV4QXR0cmliNGZ2VHlwZSB2ZXJ0ZXhBdHRyaWI0ZnY7Ci0gICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyVHlwZSB2ZXJ0ZXhBdHRyaWJQb2ludGVyOwotCi0gICAgR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgbV9hdHRyczsKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250
ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAgICBRR0xXaWRnZXQqIG1fZ2xX
aWRnZXQ7CiAgICAgUUdMV2lkZ2V0KiBtX3ZpZXdwb3J0R0xXaWRnZXQ7Ci0gICAgUVJlY3RGIG1f
Ym91bmRpbmdSZWN0OwotICAgIEdMdWludCBtX3RleHR1cmU7Ci0gICAgR0x1aW50IG1fY2FudmFz
RmJvOwotICAgIEdMdWludCBtX2N1cnJlbnRGYm87Ci0gICAgR0x1aW50IG1fZGVwdGhCdWZmZXI7
Ci0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZDsKLSAgICBMaXN0SGFzaFNldDx1bnNpZ25lZCBp
bnQ+IG1fc3ludGhldGljRXJyb3JzOwotCi0gICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4
dGVuc2lvbnM7Ci0KLXByaXZhdGU6Ci0KLSAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBT
dHJpbmcmIHByb2MpOwotICAgIGJvb2wgbV92YWxpZDsKIH07CiAKLSNpZiBkZWZpbmVkIChRVF9P
UEVOR0xfRVNfMikgCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgUHJvYwotI2Vsc2UK
LSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSByZWludGVycHJldF9jYXN0PFByb2MjI1R5
cGU+KGdldFByb2NBZGRyZXNzKCNQcm9jKSk7Ci0jZW5kaWYKLQogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7CiAjaWYgZGVmaW5lZCAoUVRfT1BFTkdM
X0VTXzIpCkBAIC0zMDgsMTcgKzkyLDExIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xF
UzJDb21wbGlhbnQoKSBjb25zdAogI2VuZGlmCiB9CiAKLUdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi0gICAgOiBtX2F0dHJzKGF0dHJzKQor
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9ob3N0V2luZG93KGhvc3RXaW5kb3cpCiAgICAgLCBt
X2dsV2lkZ2V0KDApCiAgICAgLCBtX3ZpZXdwb3J0R0xXaWRnZXQoMCkKLSAgICAsIG1fdGV4dHVy
ZSgwKQotICAgICwgbV9jYW52YXNGYm8oMCkKLSAgICAsIG1fY3VycmVudEZibygwKQotICAgICwg
bV9kZXB0aEJ1ZmZlcigwKQotICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCi0gICAgLCBt
X3ZhbGlkKHRydWUpCiB7CiAgICAgbV92aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdp
ZGdldCgpOwogCkBAIC0zMjcsMTU0ICsxMDUsMTggQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQK
ICAgICBlbHNlCiAgICAgICAgIG1fZ2xXaWRnZXQgPSBuZXcgUUdMV2lkZ2V0KCk7CiAKLSAgICBp
ZiAoIW1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNz
Q29udGV4dDNEOiBRR0xXaWRnZXQgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICBt
X3ZhbGlkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBHZW9tZXRy
eSBjYW4gYmUgc2V0IHRvIHplcm8gYmVjYXVzZSBtX2dsV2lkZ2V0IGlzIHVzZWQgb25seSBmb3Ig
aXRzIFFHTENvbnRleHQuCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwgMCwgMCk7
CiAKLSNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZh
bHNlOwotI2Vsc2UKLSAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICBtX2F0dHJzLmRl
cHRoID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYXR0cnMuYW50aWFsaWFzID0gZmFsc2U7Ci0KICAg
ICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgYWN0aXZlVGV4dHVyZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKLSAgICBiaW5kQXR0cmliTG9jYXRpb24gPSBHRVRf
UFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKLSAgICBiaW5kQnVmZmVyID0gR0VU
X1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIgPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xvciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKLSAgICBibGVuZEVxdWF0aW9uID0gR0VUX1BS
T0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24pOwotICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOwotICAgIGJsZW5kRnVu
Y1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKLSAgICBi
dWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1ZmZlclN1
YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFkZXIp
OwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJvZ3JhbSk7
Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7Ci0g
ICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKLSAg
ICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZm
ZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVByb2dy
YW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRl
UmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERl
bGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERldGFj
aFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVT
UyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0cmliQXJy
YXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2VuRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVT
UyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKLSAgICBnZXRBY3RpdmVBdHRyaWIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKLSAgICBnZXRBY3RpdmVVbmlmb3JtID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOwotICAgIGdldEF0dGFjaGVkU2hhZGVy
cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpOwotICAgIGdldEF0dHJp
YkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKLSAgICBn
ZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQYXJhbWV0
ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOwotICAgIGdl
dFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsK
LSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2KTsKLSAg
ICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKLSAgICBnZXRTaGFkZXJpdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAgZ2V0U2hhZGVyU291cmNlID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BST0NfQUREUkVT
UyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliZnYpOwotICAgIGdldFZlcnRleEF0dHJpYml2
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2KTsKLSAgICBnZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOwotICAgIGlz
RnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0gICAgaXNQ
cm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5kZXJidWZm
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOwotICAgIGlzU2hhZGVyID0g
R0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVDb3ZlcmFnZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291cmNlID0g
R0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNTZXBhcmF0
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAgICBzdGVuY2ls
TWFza1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUpOwot
ICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNlcGFy
YXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmKTsKLSAg
ICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOwotICAgIHVuaWZv
cm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOwotICAgIHVuaWZvcm0xaXYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7Ci0gICAgdW5pZm9ybTJmID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3JtMmkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYpOwot
ICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2YpOwotICAgIHVuaWZv
cm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7Ci0gICAgdW5pZm9ybTNpID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAgICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3JtNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGkpOwot
ICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7Ci0gICAgdW5p
Zm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKLSAg
ICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgzZnYp
OwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJp
eDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsK
LSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQcm9ncmFt
KTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIx
Zik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJp
YjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0
cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJpYjNmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4QXR0cmliNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVydGV4QXR0cmliUG9pbnRlciA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsKLQotICAgIGlmICghbV92YWxpZCkgewotICAg
ICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBleHRl
bnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCi0gICAgZ2VuRnJhbWVidWZm
ZXJzKC8qIGNvdW50ICovIDEsICZtX2NhbnZhc0Zibyk7Ci0KLSAgICBnbEdlblRleHR1cmVzKDEs
ICZtX3RleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9T
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlmIChtX2F0
dHJzLmRlcHRoKQotICAgICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Rl
cHRoQnVmZmVyKTsKLQogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGdsRW5hYmxl
KEdMX1BPSU5UX1NQUklURSk7CiAgICAgZ2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRf
U0laRSk7CiAjZW5kaWYKLQotICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwg
Y2xlYXIgY29sb3IgdG8gYmxhY2suCi0gICAgbV9jdXJyZW50RmJvID0gbV9jYW52YXNGYm87Ci0g
ICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52
YXNGYm8pOwotICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCiBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCiB7Ci0g
ICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBpZiAobV9nbFdpZGdldC0+aXNWYWxp
ZCgpKSB7Ci0gICAgICAgIDo6Z2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICAg
ICAgZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aEJ1ZmZlcik7Ci0gICAgICAgIGRlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbV9jYW52YXNGYm8pOwotICAgIH0KICAgICBkZWxldGUgbV9nbFdp
ZGdldDsKICAgICBtX2dsV2lkZ2V0ID0gMDsKIH0KQEAgLTQ5Nyw2OSArMTM5LDEyIEBAIHN0YXRp
YyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVpbnQzMiBwaXhlbCkKICAgICByZXR1cm4g
KChwaXhlbCA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBp
eGVsICYgMHhmZjAwZmYwMCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgaWYgKHdpZHRoID09IG1fYm91
bmRpbmdSZWN0LndpZHRoKCkgJiYgaGVpZ2h0ID09IG1fYm91bmRpbmdSZWN0LmhlaWdodCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX2JvdW5kaW5nUmVjdCA9IFFSZWN0RihRUG9pbnRGKDAs
IDApLCBRU2l6ZUYod2lkdGgsIGhlaWdodCkpOwotCi0gICAgbV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLQotICAgIC8vIENyZWF0ZSBjb2xvciBidWZmZXIKLSAgICBnbEJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUpOwotICAgIGlmIChtX2F0dHJz
LmFscGhhKQotICAgICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0
LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwotICAgIGVsc2UKLSAgICAgICAgZ2xU
ZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBH
cmFwaGljc0NvbnRleHQzRDo6UkdCLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8q
IGRhdGEgKi8gMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgMCk7Ci0KLSAgICBpZiAobV9hdHRycy5kZXB0aCkgewotICAgICAgICAvLyBDcmVhdGUg
ZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4KLSAgICAgICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSNpZiBkZWZpbmVk
KFFUX09QRU5HTF9FU18yKQotICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQx
Niwgd2lkdGgsIGhlaWdodCk7Ci0jZWxzZQotICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsKQot
ICAgICAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVp
Z2h0KTsKLSNlbmRpZgotICAgICAgICBiaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIDApOwotICAgIH0KLQotICAgIC8vIENvbnN0cnVjdCBjYW52YXMgRkJP
LgotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y2FudmFzRmJvKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7Ci0gICAgaWYgKG1fYXR0cnMu
ZGVwdGgpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lmICFkZWZpbmVk
KFFUX09QRU5HTF9FU18yKQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIGZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0jZW5kaWYKLQotICAgIEdMZW51bSBzdGF0dXMgPSBj
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7Ci0g
ICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFzIEZCTyBpbml0
aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQg
Y2xlYXJGbGFncyA9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUOwotICAgIGlm
IChtX2F0dHJzLmRlcHRoKQotICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9CVUZGRVJfQklUOwotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIGNs
ZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQlVGRkVSX0JJVDsKLQotICAg
IGdsQ2xlYXIoY2xlYXJGbGFncyk7Ci0gICAgZ2xGbHVzaCgpOwotfQotCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykg
Y29uc3QKIHsKICAgICBpZiAodGV4dHVyZU1hcHBlci0+aXNPcGVuR0xCYWNrZWQoKSkgewogICAg
ICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBl
ckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgICAgIHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX3Rl
eHR1cmUsICFtX2F0dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJp
eCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKKyAgICAgICAgdGV4bWFwR0wtPmRy
YXdUZXh0dXJlKG1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSwgIW1fY29udGV4dC0+bV9h
dHRycy5hbHBoYSwgRmxvYXRTaXplKDEsIDEpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHks
IG1hc2ssIHRydWUgLyogZmxpcCAqLyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU2
OSwyMSArMTU0LDIxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlCiAgICAgcGFpbnRlci0+c2V0
VHJhbnNmb3JtKG1hdHJpeCk7CiAgICAgcGFpbnRlci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKIAor
ICAgIGNvbnN0IGludCBoZWlnaHQgPSBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodDsKKyAgICBj
b25zdCBpbnQgd2lkdGggPSBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoOworCiAgICAgLy8gQWx0
ZXJuYXRpdmVseSByZWFkIHBpeGVscyB0byBhIG1lbW9yeSBidWZmZXIuCi0gICAgUUltYWdlIG9m
ZnNjcmVlbkltYWdlKG1fYm91bmRpbmdSZWN0LndpZHRoKCksIG1fYm91bmRpbmdSZWN0LmhlaWdo
dCgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJbWFnZSBvZmZzY3JlZW5JbWFnZSh3
aWR0aCwgaGVpZ2h0LCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwogICAgIHF1aW50MzIqIGltYWdl
UGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2UuYml0cygp
KTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgYmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwotICAgIGdsUmVh
ZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgbV9ib3VuZGluZ1JlY3Qud2lkdGgoKSwgbV9i
b3VuZGluZ1JlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwotCi0gICAgYmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKKyAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4
dC0+bV9mYm8pOworICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgd2lkdGgs
IGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJ
R05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOwogCiAgICAgLy8g
T3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0
aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9QTSwgd2l0aCB0
aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KICAgICBxdWludDMyKiBwaXhlbHNTcmMgPSBpbWFn
ZVBpeGVsczsKLSAgICBjb25zdCBpbnQgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihtX2JvdW5k
aW5nUmVjdC5oZWlnaHQoKSk7Ci0gICAgY29uc3QgaW50IHdpZHRoID0gc3RhdGljX2Nhc3Q8aW50
PihtX2JvdW5kaW5nUmVjdC53aWR0aCgpKTsKICAgICBjb25zdCBpbnQgaGFsZkhlaWdodCA9IGhl
aWdodCAvIDI7CiAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgaGFsZkhlaWdodDsgKytyb3cp
IHsKICAgICAgICAgY29uc3QgaW50IHRhcmdldElkeCA9IChoZWlnaHQgLSAxIC0gcm93KSAqIHdp
ZHRoOwpAQCAtNjEwLDcgKzE5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlCiAKIFFSZWN0
RiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGluZ1JlY3QoKSBjb25zdAogewotICAg
IHJldHVybiBtX2JvdW5kaW5nUmVjdDsKKyAgICByZXR1cm4gUVJlY3RGKFFQb2ludEYoMCwgMCks
IFFTaXplRihtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhl
aWdodCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qIG9wdGlvbiwgUVdp
ZGdldCogd2lkZ2V0KQpAQCAtNjIzLDcgKzIwOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
CiAgICAgLy8gd2l0aCBicm93c2VycyBPcGVuR0wgY29udGV4dC4KICAgICBRR0xXaWRnZXQqIHZp
ZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CiAgICAgaWYgKHZpZXdwb3J0
R0xXaWRnZXQgJiYgdmlld3BvcnRHTFdpZGdldCA9PSBtX3ZpZXdwb3J0R0xXaWRnZXQgJiYgdmll
d3BvcnRHTFdpZGdldCA9PSBwYWludGVyLT5kZXZpY2UoKSkgewotICAgICAgICB2aWV3cG9ydEdM
V2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBtX3RleHR1cmUpOworICAgICAgICB2aWV3cG9ydEdM
V2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBtX2NvbnRleHQtPm1fY29tcG9zaXRvclRleHR1cmUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02MzIsMTAgKzIxNyw5IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFT
dHlsZU9wdGlvbkdyYXBoCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9j
YXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKICAgICBnbFJlYWRQaXhl
bHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBp
bWFnZVBpeGVscyk7Ci0KLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKIAogICAgIC8v
IE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJpdHMsIGFuZCB3aXRoIHRoZSBvcmlnaW4gYXQg
dGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVlZCBSR0IzMiBvciBBUkdCMzJfUE0sIHdpdGgg
dGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCkBAIC02NjQsMjMgKzI0OCw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFT
dHlsZU9wdGlvbkdyYXBoCiAgICAgcGFpbnRlci0+ZHJhd0ltYWdlKC8qIHggKi8gMCwgLyogeSAq
LyAwLCBvZmZzY3JlZW5JbWFnZSk7CiB9CiAKLXZvaWQqIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OmdldFByb2NBZGRyZXNzKGNvbnN0IFN0cmluZyYgcHJvYykKLXsKLSAgICBTdHJpbmcgZXh0
WzNdID0geyAiIiwgIkFSQiIsICJFWFQiIH07Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7
IGkrKykgewotICAgICAgICBTdHJpbmcgbmFtZVdpdGhFeHQgPSBwcm9jICsgZXh0W2ldOwotCi0g
ICAgICAgIHZvaWQqIGFkZHIgPSBtX2dsV2lkZ2V0LT5jb250ZXh0KCktPmdldFByb2NBZGRyZXNz
KFFTdHJpbmcobmFtZVdpdGhFeHQpKTsKLSAgICAgICAgaWYgKGFkZHIpIAotICAgICAgICAgICAg
cmV0dXJuIGFkZHI7Ci0gICAgfQotCi0gICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDog
RGlkIG5vdCBmaW5kIEdMIGZ1bmN0aW9uICVzIiwgcHJvYy51dGY4KCkuZGF0YSgpKTsKLSAgICBt
X3ZhbGlkID0gZmFsc2U7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIFBhc3NSZWZQdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKIHsKICAgICAvLyBUaGlzIGltcGxlbWVudGF0aW9u
IGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSBIb3N0
V2luZG93LgpAQCAtNjkxLDE0ICsyNTgsNzcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmkKIH0K
IAogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93LCBib29sKQotICAgIDog
bV9pc1Jlc291cmNlU2FmZShmYWxzZSksIG1faW50ZXJuYWwoYWRvcHRQdHIobmV3IEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoYXR0cnMsIGhvc3RXaW5kb3cpKSkKKyAgICA6IG1fY3VycmVudFdp
ZHRoKDApCisgICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKKyAgICAsIG1faXNSZXNvdXJjZVNhZmUo
ZmFsc2UpCisgICAgLCBtX2F0dHJzKGF0dHJzKQorICAgICwgbV90ZXh0dXJlKDApCisgICAgLCBt
X2NvbXBvc2l0b3JUZXh0dXJlKDApCisgICAgLCBtX2ZibygwKQorICAgICwgbV9kZXB0aFN0ZW5j
aWxCdWZmZXIoMCkKKyAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQorICAgICwgbV9pbnRl
cm5hbENvbG9yRm9ybWF0KDApCisgICAgLCBtX2JvdW5kRkJPKDApCisgICAgLCBtX2FjdGl2ZVRl
eHR1cmUoMCkKKyAgICAsIG1fYm91bmRUZXh0dXJlMCgwKQorICAgICwgbV9tdWx0aXNhbXBsZUZC
TygwKQorICAgICwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcigwKQorICAgICwgbV9t
dWx0aXNhbXBsZUNvbG9yQnVmZmVyKDApCisgICAgLCBtX2ludGVybmFsKGFkb3B0UHRyKG5ldyBH
cmFwaGljc0NvbnRleHQzREludGVybmFsKHRoaXMsIGhvc3RXaW5kb3cpKSkKIHsKLSAgICBpZiAo
IW1faW50ZXJuYWwtPmlzVmFsaWQoKSkKLSAgICAgICAgbV9pbnRlcm5hbC5jbGVhcigpOworI2lm
IGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgbV9hdHRycy5zdGVuY2lsID0gZmFsc2U7Cisj
ZWxzZQorICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIG1fYXR0cnMuZGVwdGggPSB0
cnVlOworI2VuZGlmCisgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKKworICAgIGlmICgh
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CisgICAgICAgIExPR19FUlJPUigi
R3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Cisg
ICAgICAgIG1faW50ZXJuYWwgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNj
ZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBp
bml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAg
IH0KKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgbV9pbnRlcm5hbCA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNh
bnZhcyBGQk8uCisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZmJvKTsK
KworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1
cmUpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250
ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFw
aGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAg
ICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1
ZmZlcik7CisKKyAgICAvLyBCaW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0aWFsIGNsZWFyIGNv
bG9yIHRvIGJsYWNrLgorICAgIG1fYm91bmRGQk8gPSBtX2ZibzsKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBnbENsZWFy
Q29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFw
aGljc0NvbnRleHQzRCgpCiB7CisgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKKyAgICBpZiAobV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CisgICAg
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOworICAgICAgICBn
bERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKKyAgICB9CiB9CiAKIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QoKQpAQCAtNzA4LDcgKzMzOCw3IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQogCiBQbGF0Zm9ybTNET2Jq
ZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2ludGVybmFsLT5tX3RleHR1cmU7CisgICAgcmV0dXJuIG1fY29tcG9zaXRvclRleHR1
cmU7CiB9CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC03NDEsMTMgKzM3
MSw2MyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVz
aGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CisgICAgaWYgKCFtX2ludGVybmFsKQorICAg
ICAgICByZXR1cm47CisKICAgICBpZiAoKHdpZHRoID09IG1fY3VycmVudFdpZHRoICYmIGhlaWdo
dCA9PSBtX2N1cnJlbnRIZWlnaHQpIHx8ICghbV9pbnRlcm5hbCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fY3VycmVudFdpZHRoID0gd2lkdGg7CiAgICAgbV9jdXJyZW50SGVpZ2h0ID0gaGVp
Z2h0OwogCi0gICAgbV9pbnRlcm5hbC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOworCisgICAgLy8gQ3JlYXRlIGNvbG9y
IGJ1ZmZlcgorICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGlmIChtX2F0dHJzLmFscGhhKQorICAgICAgICBn
bFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCAvKiBkYXRhICovIDApOworICAgIGVsc2UKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UkdCLCB3aWR0aCwgaGVpZ2h0LCAvKiBib3JkZXIgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAg
Z2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7CisKKyAgICBp
ZiAobV9hdHRycy5kZXB0aCkgeworICAgICAgICAvLyBDcmVhdGUgZGVwdGggYW5kIHN0ZW5jaWwg
YnVmZmVycy4KKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQorICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2LCB3aWR0
aCwgaGVpZ2h0KTsKKyNlbHNlCisgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCisgICAgICAg
ICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5ULCB3aWR0aCwgaGVpZ2h0
KTsKKyNlbmRpZgorICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgMCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IGNhbnZhcyBGQk8u
CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2Zibyk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUsIDApOworICAgIGlmICht
X2F0dHJzLmRlcHRoKQorICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1F
TlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVy
KTsKKyNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBpZiAobV9hdHRycy5zdGVuY2ls
KQorICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2VuZGlm
CisKKyAgICBHTGVudW0gc3RhdHVzID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUik7CisgICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGlj
c0NvbnRleHQzRDogQ2FudmFzIEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgY2xlYXJGbGFncyA9IEdyYXBoaWNzQ29udGV4dDNE
OjpDT0xPUl9CVUZGRVJfQklUOworICAgIGlmIChtX2F0dHJzLmRlcHRoKQorICAgICAgICBjbGVh
ckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9CVUZGRVJfQklUOworICAgIGlmICht
X2F0dHJzLnN0ZW5jaWwpCisgICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6
OlNURU5DSUxfQlVGRkVSX0JJVDsKKworICAgIGdsQ2xlYXIoY2xlYXJGbGFncyk7CisgICAgZ2xG
bHVzaCgpOwogfQogCiBJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpIGNvbnN0CkBAIC03NTgsNyArNDM4LDcgQEAgSW50U2l6ZSBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YWN0aXZl
VGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtNzY2LDcgKzQ0Niw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBs
YXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihw
cm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hl
ZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdD
M0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCkBAIC03NzcsMzMgKzQ1
NywzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbQogICAgIH0KIAogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QXR0YWNoZWRT
aGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7CisgICAgZ2xHZXRBdHRh
Y2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NF
UlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgs
IG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRC
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJp
bmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZl
cik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51
bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvID0g
YnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Ci0gICAgbV9pbnRlcm5h
bC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKKyAg
ICBtX2JvdW5kRkJPID0gYnVmZmVyID8gYnVmZmVyIDogbV9mYm87CisgICAgZ2xCaW5kRnJhbWVi
dWZmZXIodGFyZ2V0LCBtX2JvdW5kRkJPKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgcmVuZGVy
YnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7Cisg
ICAgZ2xCaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmUpCkBAIC04MTUsNTUgKzQ5NSw1NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVy
ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kQ29sb3IoR0MzRGNsYW1wZiByZWQsIEdD
M0RjbGFtcGYgZ3JlZW4sIEdDM0RjbGFtcGYgYmx1ZSwgR0MzRGNsYW1wZiBhbHBoYSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOworICAgIGdsQmxlbmRDb2xvcihy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJs
ZW5kRXF1YXRpb24oR0MzRGVudW0gbW9kZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb24obW9kZSk7Cisg
ICAgZ2xCbGVuZEVxdWF0aW9uKG1vZGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEVxdWF0aW9uU2VwYXJhdGUoR0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhh
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CisgICAg
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRm
YWN0b3IpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAg
ICBnbEJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKLX0gICAgICAgCit9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVu
dW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5i
bGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKKyAg
ICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJn
ZXQsIHNpemUsIC8qIGRhdGEgKi8gMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0
IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNp
emUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1
c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZv
aWQqIGRhdGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5idWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRh
KTsKKyAgICBnbEJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOwogfQog
CiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNE
ZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQp
OworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYg
ZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBAIC05MDQsNyArNTg0LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
IHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICBn
bENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29w
eVRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGludCBib3JkZXIpCkBAIC05NTIsNyArNjMyLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxh
dGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKHBy
b2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0Mz
RGVudW0gY2FwKQpAQCAtOTY0LDcgKzY0NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRp
c2FibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMoR0MzRGVudW0gbW9kZSwgR0MzRGlu
dCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtOTg4LDcgKzY2OCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGlu
ZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkKQEAgLTEwMDYsMTMg
KzY4NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFj
aG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBHQzNEaW50IGxldmVsKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsK
KyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0
LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFj
ZShHQzNEZW51bSBtb2RlKQpAQCAtMTAyNCw3ICs3MDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
bmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdlbmVyYXRlTWlwbWFwKHRhcmdl
dCk7CisgICAgZ2xHZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOwogfQogCiBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWlu
dCBpbmRleCwgQWN0aXZlSW5mbyYgaW5mbykKQEAgLTEwMzcsMTQgKzcxNywxNCBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBHQzNEdWludCBpbmRleAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAKICAgICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dy
YW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVO
R1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0Nv
bnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKIAogICAg
IEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKG1heExlbmd0aCk7CiAgICAgR0xz
aXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlw
ZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgs
IG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRB
Y3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXpl
LCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZy
ZWUobmFtZSk7CkBAIC0xMDY5LDE0ICs3NDksMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGUK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQg
bWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYoc3RhdGljX2Nhc3Q8
R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9M
RU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWlu
dD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RI
LCAmbWF4TGVuZ3RoKTsKIAogICAgIEdMY2hhciogbmFtZSA9IChHTGNoYXIqKSBmYXN0TWFsbG9j
KG1heExlbmd0aCk7CiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXpl
ID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7CiAKLSAgICBtX2ludGVybmFsLT5nZXRBY3RpdmVV
bmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZu
YW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShz
dGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0
aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFtZUxlbmd0aCkgewogICAgICAg
ICBmYXN0RnJlZShuYW1lKTsKQEAgLTEwOTcsMjAgKzc3NywyMCBAQCBpbnQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJgogICAgICAgICByZXR1cm4gLTE7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Z2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0
ZXMoKQogewotICAgIHJldHVybiBtX2ludGVybmFsLT5tX2F0dHJzOworICAgIHJldHVybiBtX2F0
dHJzOwogfQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewotICAg
IGlmIChtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7Ci0gICAgICAg
IExpc3RIYXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9IG1faW50ZXJuYWwtPm1fc3lu
dGhldGljRXJyb3JzLmJlZ2luKCk7CisgICAgaWYgKG1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+
IDApIHsKKyAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0gbV9z
eW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKICAgICAgICAgR0MzRGVudW0gZXJyID0gKml0ZXI7Ci0g
ICAgICAgIG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKKyAgICAg
ICAgbV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOwogICAgICAgICByZXR1cm4gZXJyOwog
ICAgIH0KIApAQCAtMTEzNiw3ICs4MTYsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RDo6aXNCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9G
QUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5pc0J1ZmZlcihidWZmZXIpOworICAgIHJldHVybiBnbElz
QnVmZmVyKGJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0Vu
YWJsZWQoR0MzRGVudW0gY2FwKQpAQCAtMTE1MSw3ICs4MzEsNyBAQCBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVy
KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7
CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQpAQCAtMTE2MCw3ICs4NDAsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICAgICAg
cmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUHJvZ3JhbShwcm9ncmFtKTsKKyAg
ICByZXR1cm4gZ2xJc1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikK
QEAgLTExNjksNyArODQ5LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVu
ZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogICAgICAgICByZXR1cm4g
R0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsK
KyAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOwogfQogCiBHQzNEYm9v
bGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CkBAIC0xMTc4LDcgKzg1OCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1No
YWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwog
ICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0
dXJuIG1faW50ZXJuYWwtPmlzU2hhZGVyKHNoYWRlcik7CisgICAgcmV0dXJuIGdsSXNTaGFkZXIo
c2hhZGVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzVGV4dHVyZShQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC0xMjAwLDcgKzg4MCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAg
ICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbExpbmtQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3Jl
aShHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQgcGFyYW0pCkBAIC0xMjUxLDEzICs5MzEsMTMg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0
YXJnZXQsIEdDM0RlbnVtIGludGVybmFsZm8KICAgICAgICAgYnJlYWs7CiAgICAgfQogI2VuZGlm
Ci0gICAgbV9pbnRlcm5hbC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdDM0Rib29sZWFuIGludmVydCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOworICAgIGdsU2FtcGxlQ292ZXJh
Z2UodmFsdWUsIGludmVydCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNjaXNzb3Io
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkK
QEAgLTEyODMsNyArOTYzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNl
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBjb25zdCBTdHJpbmcmIHNvdXIKICAgICBDU3RyaW5n
IHNvdXJjZUNTID0gcHJlZml4ZWRTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0IGNoYXIqIGRhdGEg
PSBzb3VyY2VDUy5kYXRhKCk7CiAgICAgaW50IGxlbmd0aCA9IHByZWZpeGVkU291cmNlLmxlbmd0
aCgpOwotICAgIG1faW50ZXJuYWwtPnNoYWRlclNvdXJjZSgoR0x1aW50KSBzaGFkZXIsIC8qIGNv
dW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKKyAgICBnbFNoYWRlclNvdXJjZSgoR0x1aW50KSBz
aGFkZXIsIC8qIGNvdW50ICovIDEsICZkYXRhLCAmbGVuZ3RoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1
aW50IG1hc2spCkBAIC0xMjk1LDcgKzk3NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0
ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBH
QzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxG
dW5jU2VwYXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKKyAgICBnbFN0ZW5jaWxGdW5jU2Vw
YXJhdGUoZmFjZSwgZnVuYywgcmVmLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKQEAgLTEzMDcsNyArOTg3LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQg
bWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgZ2xTdGVu
Y2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNz
KQpAQCAtMTMxOSw3ICs5OTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3Ao
R0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0g
ZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbE9wU2Vw
YXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5jaWxPcFNlcGFyYXRl
KGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Rm
bG9hdCB2YWx1ZSkKQEAgLTEzMzcsMTIxICsxMDE3LDEyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp0ZXhQYXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgIGdsVW5p
Zm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3Jt
MWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0yZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yZihsb2Nh
dGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yZnYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTNmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxv
YXQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5p
Zm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBn
bFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZs
b2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00Zihsb2Nh
dGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEs
IHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlm
b3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB2
MCk7CisgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNE
aW50IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9y
bTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0y
aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0Rp
bnQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5p
Zm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xV
bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYx
LCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwg
djEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGl2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6ZSwgdHJh
bnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQq
IGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24s
IHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlv
biwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm1NYXRyaXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3Nl
LCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm1NYXRyaXg0
ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJp
eDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCkBAIC0xNDU5LDYxICsxMTM5LDYxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZh
bGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dy
YW0pOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsVmFsaWRhdGVQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWYo
aW5kZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOworICAgIGds
VmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9h
dCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOworICAgIGdsVmVydGV4
QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZl
cnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4
LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAgIGdsVmVydGV4QXR0
cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52
ZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjNmdihpbmRl
eCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihH
QzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2Miwg
R0MzRGZsb2F0IHYzKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYz
KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0Mz
RGZsb2F0KiBhcnJheSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAg
IGdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwg
R0MzRGVudW0gdHlwZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwg
R0MzRGludHB0ciBvZmZzZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXpl
LCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
aW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxH
THZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTUzMSw3ICsxMjExLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEYm9vbGVhbiog
dmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5n
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0
QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0
KiB2YWx1ZSkKQEAgLTE1NDMsNyArMTIyMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGlu
dCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJn
ZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFy
YW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE1NTUsNyArMTIzNSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFs
dWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
UHJvZ3JhbWl2KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTE1NjMs
NyArMTI0Myw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdl
dFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAm
bGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6
SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAKQEAg
LTE1NzEsNyArMTI1MSw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUlu
Zm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIGlmICghaW5mbykKICAgICAgICAg
cmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwg
bGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBs
ZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFz
dEZyZWUoaW5mbyk7CkBAIC0xNTgyLDE0ICsxMjYyLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIEFTU0VSVChzaGFk
ZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdl
dFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAg
LTE1OTcsMTQgKzEyNzcsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJ
bmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJu
YWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdU
SCwgJmxlbmd0aCk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNE
OjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAg
ICBHTGNoYXIqIGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICgh
aW5mbykKICAgICAgICAgcmV0dXJuICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVySW5mb0xv
ZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZv
KTsKICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE2MTcsMTQgKzEyOTcsMTQgQEAgU3RyaW5nIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50
IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGlj
c0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hh
ZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEgsICZs
ZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0gMDsKICAgICBHTGNoYXIqIGluZm8gPSAoR0xj
aGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJu
ICIiOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAm
c2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBsZW5ndGgsICZzaXpl
LCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7
CkBAIC0xNjQ3LDEzICsxMzI3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWZ2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBn
bEdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBHQzNEaW50IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNjYxLDE5ICsxMzQxLDE5IEBAIEdDM0RpbnQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIGNvbnN0IFN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmdl
dFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVy
biBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNEdWludCBpbmRl
eCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4
QXR0cmliZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmli
ZnYoaW5kZXgsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUs
IHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVl
KTsKIH0KIAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSkKQEAgLTE2ODEsNyArMTM2
MSw3IEBAIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zm
c2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICAKICAgICBHTHZvaWQqIHBvaW50ZXIgPSAwOwotICAgIG1f
aW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZwb2lu
dGVyKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwYXJhbU5hbWUsICZw
b2ludGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihyZWludGVycHJl
dF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTE3MDIsNyArMTM4Miw3IEBAIFBs
YXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcigpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxl
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUp
OworICAgIGdsR2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4g
aGFuZGxlOwogfQogCkBAIC0xNzEwLDI4ICsxMzkwLDI4IEBAIFBsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1f
aW50ZXJuYWwtPmdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBn
bEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFu
ZGxlOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVQcm9n
cmFtKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IHJldHVybiBtX2ludGVybmFsLT5jcmVhdGVQcm9ncmFtKCk7CisgICAgcmV0dXJuIGdsQ3JlYXRl
UHJvZ3JhbSgpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVSZW5kZXJidWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuUmVuZGVy
YnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnMo
LyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZv
cm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKEdDM0RlbnVtIHR5cGUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1
cm4gbV9pbnRlcm5hbC0+Y3JlYXRlU2hhZGVyKHR5cGUpOworICAgIHJldHVybiBnbENyZWF0ZVNo
YWRlcih0eXBlKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3Jl
YXRlVGV4dHVyZSgpCkBAIC0xNzQ1LDMxICsxNDI1LDMxIEBAIFBsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZGVsZXRlQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlQnVmZmVy
cygxLCAmYnVmZmVyKTsKKyAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3Qg
ZnJhbWVidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsK
KyAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIoUGxh
dGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVSZW5kZXJidWZmZXJzKDEs
ICZyZW5kZXJidWZmZXIpOworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVm
ZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3Qgc2hhZGVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xEZWxl
dGVTaGFkZXIoc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4
dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBAIC0xNzgwLDMwICsxNDYwLDMwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXplR0xFcnJvcihHQzNEZW51
bSBlcnJvcikKIHsKLSAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3Ip
OworICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewotICAgIG1faW50ZXJuYWwtPm1fbGF5
ZXJDb21wb3NpdGVkID0gdHJ1ZTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiB7CiAgICAgLy8g
RklYTUU6IEFueSBhY2NlbGVyYXRlZCBjb21wb3NpdG9yIG5lZWRzIHRvIGJlIHRvbGQgdG8gcmUt
cmVhZCBmcm9tIGhlcmUuCi0gICAgbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQgPSBmYWxz
ZTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwogfQogCiBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ludGVybmFs
LT5tX2xheWVyQ29tcG9zaXRlZDsKKyAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAK
IEV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewotICAg
IGlmICghbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zKQotICAgICAgICBtX2ludGVybmFsLT5tX2V4
dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNEUXQpOwotICAgIHJldHVybiBtX2lu
dGVybmFsLT5tX2V4dGVuc2lvbnMuZ2V0KCk7CisgICAgaWYgKCFtX2V4dGVuc2lvbnMpCisgICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7CisgICAgcmV0
dXJuIG1fZXh0ZW5zaW9ucy5nZXQoKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwK
</data>
<flag name="commit-queue"
          id="95193"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100562</attachid>
            <date>2011-07-12 14:31:43 -0700</date>
            <delta_ts>2011-07-13 09:02:15 -0700</delta_ts>
            <desc>use OpenGLShims resolver implementation</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>84449</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNjhjZjM4Li4zMjU2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4
IEBACisyMDExLTA3LTEyICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29t
PgorCisgICAgICAgIFtRdF0gTWFrZSBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRyYW5zcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IE9w
ZW5HTFNoaW1zIHN5bWJvbCByZXNvbHZlciBmb3IgUXQKKworICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL09wZW5HTFNoaW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmJl
Z2luUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGlu
Z1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250
ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJi
dWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1w
bGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6bGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRFeHRlbnNpb25zKToKKwogMjAxMS0wNy0wOCAgSmVmZnJleSBQZmF1ICA8anBmYXVA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBmcmFtZXdvcmsgZm9yIGEgbmV3L2R1bW15IFhNTERv
Y3VtZW50UGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGM5ZTY0MDQuLmNlZWRkNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC0zNjA1LDYgKzM2MDUsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
R0w9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcAogCiAgICAgICAgIElOQ0xVREVQQVRIICs9ICQkUFdEL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dQorCisgICAgICAgIENPTkZJRyArPSBvcGVuZ2wtc2hpbXMKIH0KIAogY29udGFpbnMoREVGSU5F
UywgRU5BQkxFX01IVE1MPTEpIHsKQEAgLTM2NTIsOCArMzY1NCwxNCBAQCBjb250YWlucyhDT05G
SUcsIHRleG1hcCkgewogICAgICFzeW1iaWFuOiF3aW4zMi0qOmNvbnRhaW5zKFFUX0NPTkZJRywg
b3BlbmdsKSB7CiAgICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5oCiAgICAgICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKyAgICAgICAgQ09ORklHICs9IG9wZW5nbC1zaGltcwog
ICAgIH0KIH0gZWxzZSB7CiAgICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0xheWVyUXQuaAogICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NMYXllclF0LmNwcAogfQorCitjb250YWlucyhDT05GSUcsIG9wZW5nbC1zaGltcykgeworICAg
IEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaAorICAgIFNP
VVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwCit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggMGNiZTdlMy4uODkyMzFiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oCkBAIC04Nyw2ICs4Nyw5IEBAIGNsYXNzIEV4dGVuc2lvbnMzRDsKICNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKEdUSykKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKICNlbmRp
ZgorI2lmIFBMQVRGT1JNKFFUKQorY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CisjZW5kaWYKIGNsYXNz
IEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlRGF0YTsKQEAgLTg5Miw2ICs4
OTUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQg
Y2hhciogcGl4ZWxzLCBpbnQgcGl4ZWxzU2l6ZSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFU
KQorICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RRdDsKKyAgICBPd25QdHI8RXh0ZW5zaW9u
czNEUXQ+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgorCiAgICAgaW50IG1fY3VycmVudFdpZHRoLCBt
X2N1cnJlbnRIZWlnaHQ7CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwogCkBAIC05MDAsNyAr
OTA4LDcgQEAgcHVibGljOgogICAgIFJldGFpblB0cjxXZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICB0eXBlZGVmIHN0
cnVjdCB7CiAgICAgICAgIFN0cmluZyBzb3VyY2U7CiAgICAgICAgIFN0cmluZyBsb2c7CkBAIC05
MDgsMTAgKzkxNiwxMiBAQCBwdWJsaWM6CiAgICAgfSBTaGFkZXJTb3VyY2VFbnRyeTsKICAgICBI
YXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIFNoYWRlclNvdXJjZUVudHJ5PiBtX3NoYWRlclNvdXJj
ZU1hcDsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNE
T3BlbkdMOwogICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29tcGlsZXI7CiAKICAgICBPd25QdHI8
RXh0ZW5zaW9uczNET3BlbkdMPiBtX2V4dGVuc2lvbnM7CisjZW5kaWYKIAogICAgIEF0dHJpYnV0
ZXMgbV9hdHRyczsKICAgICBWZWN0b3I8VmVjdG9yPGZsb2F0PiA+IG1fdmVydGV4QXJyYXk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xT
aGltcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xT
aGltcy5jcHAKaW5kZXggOTJkNzlmOS4uMjQyZWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcApAQCAtMTcsNyAr
MTcsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoV0VCR0wpCisj
aWYgRU5BQkxFKFdFQkdMKSB8fCAoUExBVEZPUk0oUVQpICYmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkpCiAKICNkZWZpbmUgRElTQUJMRV9TSElNUwogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCkBA
IC0yNiwxMSArMjYsMjYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxR
TGF0aW4xU3RyaW5nPgorI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikKKyNkZWZpbmUgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKEZ1bmN0aW9u
TmFtZSwgc3VjY2VzcykgXAorICAgIG9wZW5HTEZ1bmN0aW9uVGFibGUoKS0+RnVuY3Rpb25OYW1l
ID0gOjpGdW5jdGlvbk5hbWUKKyNlbHNlCiAjZGVmaW5lIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9F
TlRSWShGdW5jdGlvbk5hbWUsIHN1Y2Nlc3MpIFwKICAgICBvcGVuR0xGdW5jdGlvblRhYmxlKCkt
PkZ1bmN0aW9uTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RnVuY3Rpb25OYW1lIyNUeXBlPihsb29r
dXBPcGVuR0xGdW5jdGlvbkFkZHJlc3MoI0Z1bmN0aW9uTmFtZSwgc3VjY2VzcykpCisjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgUExBVEZPUk0oUVQpCitzdGF0aWMgdm9pZCog
Z2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUpCit7CisgICAgcmV0dXJuIFFHTENv
bnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmdldFByb2NBZGRyZXNzKFFMYXRpbjFTdHJpbmcocHJv
Y05hbWUpKTsKK30KKyNlbHNlCiB0eXBlZGVmIHZvaWQqICgqZ2xHZXRQcm9jQWRkcmVzc1R5cGUp
IChjb25zdCBjaGFyKiBwcm9jTmFtZSk7CiBzdGF0aWMgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29u
c3QgY2hhciogcHJvY05hbWUpCiB7CkBAIC00Nyw2ICs2Miw3IEBAIHN0YXRpYyB2b2lkKiBnZXRQ
cm9jQWRkcmVzcyhjb25zdCBjaGFyKiBwcm9jTmFtZSkKICAgICAgICAgcmV0dXJuIGRsc3ltKFJU
TERfREVGQVVMVCwgcHJvY05hbWUpOwogICAgIHJldHVybiBnZXRQcm9jQWRkcmVzc0Z1bmN0aW9u
KHByb2NOYW1lKTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCogbG9va3VwT3BlbkdMRnVuY3Rp
b25BZGRyZXNzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCYgc3VjY2VzcykKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNo
aW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGlt
cy5oCmluZGV4IGE0MzFiMDMuLjAxMTI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaApAQCAtMTcsNyArMTcsMTEgQEAK
ICAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKICAqLwogCisjaWYgUExBVEZPUk0oUVQpCisjaW5j
bHVkZSA8UUdMQ29udGV4dD4KKyNlbHNlCiAjaW5jbHVkZSA8R0wvZ2wuaD4KKyNlbmRpZgogCiB0
eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSBPcGVuR0xGdW5jdGlvblRhYmxlOwog
CkBAIC0yMjQsNDIgKzIyOCw1NSBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJs
ZSB7CiAjZGVmaW5lIGdsQmluZEF0dHJpYkxvY2F0aW9uICAgICAgICAgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbEJpbmRBdHRyaWJMb2NhdGlvbikKICNkZWZpbmUgZ2xCaW5kQnVmZmVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZEJ1ZmZl
cikKICNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsQmluZEZyYW1lYnVmZmVyKQorI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZl
ciAgICAgICAgICAgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVAogI2RlZmluZSBnbEJp
bmRSZW5kZXJidWZmZXJFWFQgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xC
aW5kUmVuZGVyYnVmZmVyKQorI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAgICAgICAg
ICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQKICNkZWZpbmUgZ2xCbGVuZENvbG9yICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxlbmRDb2xvcikKICNk
ZWZpbmUgZ2xCbGVuZEVxdWF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZV
TkNUSU9OKGdsQmxlbmRFcXVhdGlvbikKICNkZWZpbmUgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
KQogI2RlZmluZSBnbEJsZW5kRnVuY1NlcGFyYXRlICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xCbGVuZEZ1bmNTZXBhcmF0ZSkKICNkZWZpbmUgZ2xCbGl0RnJhbWVidWZm
ZXJFWFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxpdEZyYW1lYnVm
ZmVyKQorI2RlZmluZSBnbEJsaXRGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICBnbEJs
aXRGcmFtZWJ1ZmZlckVYVAogI2RlZmluZSBnbEJ1ZmZlckRhdGEgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCdWZmZXJEYXRhKQogI2RlZmluZSBnbEJ1ZmZl
clN1YkRhdGEgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCdWZm
ZXJTdWJEYXRhKQogI2RlZmluZSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKQorI2RlZmluZSBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXNFWFQKICNkZWZpbmUgZ2xDb21waWxlU2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAg
TE9PS1VQX0dMX0ZVTkNUSU9OKGdsQ29tcGlsZVNoYWRlcikKICNkZWZpbmUgZ2xDcmVhdGVQcm9n
cmFtICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQ3JlYXRlUHJv
Z3JhbSkKICNkZWZpbmUgZ2xDcmVhdGVTaGFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsQ3JlYXRlU2hhZGVyKQogI2RlZmluZSBnbERlbGV0ZUJ1ZmZlcnMg
ICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVCdWZmZXJz
KQogI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xEZWxldGVGcmFtZWJ1ZmZlcnMpCisjZGVmaW5lIGdsRGVsZXRlRnJhbWVi
dWZmZXJzICAgICAgICAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhUCiAjZGVmaW5l
IGdsRGVsZXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElP
TihnbERlbGV0ZVByb2dyYW0pCiAjZGVmaW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMpCisjZGVm
aW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVycyAgICAgICAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVy
YnVmZmVyc0VYVAogI2RlZmluZSBnbERlbGV0ZVNoYWRlciAgICAgICAgICAgICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVTaGFkZXIpCiAjZGVmaW5lIGdsRGV0YWNoU2hh
ZGVyICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERldGFjaFNo
YWRlcikKICNkZWZpbmUgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KQogI2RlZmluZSBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ckVYVCAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIpCisjZGVmaW5lIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgICAgICAgICAgICAgIGdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJFWFQKICNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVY
VCAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQp
CisjZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgICAgICAgICAgICAgICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkRFWFQKICNkZWZpbmUgZ2xHZW5CdWZmZXJzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuQnVmZmVycykKICNkZWZpbmUgZ2xHZW5l
cmF0ZU1pcG1hcEVYVCAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2Vu
ZXJhdGVNaXBtYXApCisjZGVmaW5lIGdsR2VuZXJhdGVNaXBtYXAgICAgICAgICAgICAgICAgICAg
ICAgIGdsR2VuZXJhdGVNaXBtYXBFWFQKICNkZWZpbmUgZ2xHZW5GcmFtZWJ1ZmZlcnNFWFQgICAg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuRnJhbWVidWZmZXJzKQorI2Rl
ZmluZSBnbEdlbkZyYW1lYnVmZmVycyAgICAgICAgICAgICAgICAgICAgICBnbEdlbkZyYW1lYnVm
ZmVyc0VYVAogI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgICBM
T09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5SZW5kZXJidWZmZXJzKQorI2RlZmluZSBnbEdlblJlbmRl
cmJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQKICNkZWZp
bmUgZ2xHZXRBY3RpdmVBdHRyaWIgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsR2V0QWN0aXZlQXR0cmliKQogI2RlZmluZSBnbEdldEFjdGl2ZVVuaWZvcm0gICAgICAg
ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRBY3RpdmVVbmlmb3JtKQogI2Rl
ZmluZSBnbEdldEF0dGFjaGVkU2hhZGVycyAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZXRBdHRhY2hlZFNoYWRlcnMpCiAjZGVmaW5lIGdsR2V0QXR0cmliTG9jYXRpb24g
ICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEF0dHJpYkxvY2F0aW9u
KQotI2RlZmluZSBnbEdldEJ1ZmZlclBhcmFtZXRlcml2ICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdikKICNkZWZpbmUgZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdkVYVCAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYpCisjZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgICAg
ICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQKICNkZWZpbmUgZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdikKKyNkZWZpbmUgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdiAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVAog
I2RlZmluZSBnbEdldFByb2dyYW1JbmZvTG9nICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xHZXRQcm9ncmFtSW5mb0xvZykKICNkZWZpbmUgZ2xHZXRQcm9ncmFtaXYgICAg
ICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0UHJvZ3JhbWl2KQog
I2RlZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikKKyNkZWZpbmUgZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdiAgICAgICAgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dkVYVAogI2RlZmluZSBnbEdldFNoYWRlckluZm9Mb2cgICAgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJJbmZvTG9nKQogI2RlZmluZSBnbEdldFNoYWRlcml2
ICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJp
dikKICNkZWZpbmUgZ2xHZXRTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsR2V0U2hhZGVyU291cmNlKQpAQCAtMjcxLDEyICsyODgsMTYgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgewogI2RlZmluZSBnbEdldFZlcnRleEF0
dHJpYlBvaW50ZXJ2ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRWZXJ0ZXhB
dHRyaWJQb2ludGVydikKICNkZWZpbmUgZ2xJc0J1ZmZlciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNCdWZmZXIpCiAjZGVmaW5lIGdsSXNGcmFtZWJ1
ZmZlckVYVCAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzRnJhbWVi
dWZmZXIpCisjZGVmaW5lIGdsSXNGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgIGds
SXNGcmFtZWJ1ZmZlckVYVAogI2RlZmluZSBnbElzUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc1Byb2dyYW0pCiAjZGVmaW5lIGdsSXNSZW5k
ZXJidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzUmVu
ZGVyYnVmZmVyKQorI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyICAgICAgICAgICAgICAgICAgICAg
ICBnbElzUmVuZGVyYnVmZmVyRVhUCiAjZGVmaW5lIGdsSXNTaGFkZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzU2hhZGVyKQogI2RlZmluZSBnbExp
bmtQcm9ncmFtICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xM
aW5rUHJvZ3JhbSkKICNkZWZpbmUgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSkKKyNkZWZpbmUgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlICAgICAgICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
RVhUCiAjZGVmaW5lIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSkKKyNkZWZpbmUg
Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVFWFQKICNkZWZpbmUgZ2xTYW1wbGVDb3ZlcmFnZSAgICAgICAgICAgICAg
ICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsU2FtcGxlQ292ZXJhZ2UpCiAjZGVmaW5lIGds
U2hhZGVyU291cmNlICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bFNoYWRlclNvdXJjZSkKICNkZWZpbmUgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVy
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVN
YXBwZXJHTC5jcHAKaW5kZXggNmQ1ZjUxMC4uYjdhMTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikK
KyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxjYWlyby9PcGVuR0xTaGltcy5oPgorI2VsaWYg
ZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5j
bHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CiAjZWxpZiBPUyhNQUNfT1NfWCkKQEAgLTM3LDcgKzM5LDcg
QEAKICNpbmNsdWRlIDxHTC9nbC5oPgogI2VuZGlmCiAKLSNpZm5kZWYgVEVYTUFQX09QRU5HTF9F
U18yCisjaWYgIWRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKSAmJiAhUExBVEZPUk0oUVQpCiBl
eHRlcm4gIkMiIHsKICAgICB2b2lkIGdsVW5pZm9ybTFmKEdMaW50LCBHTGZsb2F0KTsKICAgICB2
b2lkIGdsVW5pZm9ybTFpKEdMaW50LCBHTGludCk7CkBAIC0zODgsNiArMzkwLDkgQEAgdm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmluaXRpYWxpemVTaGFkZXJzKCkKIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpiZWdpblBhaW50aW5nKCkKIHsKICNpZiBQTEFURk9STShRVCkKKyAgICBpZiAoIWluaXRpYWxp
emVPcGVuR0xTaGltcygpKQorICAgICAgICByZXR1cm47CisKICAgICBnbEdldEludGVnZXJ2KEdM
X0NVUlJFTlRfUFJPR1JBTSwgJm1fZGF0YS0+cHJldmlvdXNQcm9ncmFtKTsKICAgICBRUGFpbnRl
ciogcGFpbnRlciA9IG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgcGFpbnRlci0+
c2F2ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCAyZWJkY2ZhLi5hMjJiMTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFF0LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAKICNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgorI2luY2x1ZGUgPGNhaXJv
L09wZW5HTFNoaW1zLmg+CiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRFF0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC01NSwxMDkgKzU2LDYgQEAgdHlwZWRlZiBjaGFyIEdMY2hhcjsKICNkZWZpbmUgR0xfREVQVEgy
NF9TVEVOQ0lMOCAweDg4RjAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoQVBJRU5UUlkpCi0jZGVm
aW5lIEFQSUVOVFJZCi0jZW5kaWYKLQotI2lmZGVmIFFUX09QRU5HTF9FU18yCi10eXBlZGVmIEdM
c2l6ZWlwdHIgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIEdMaW50cHRyIEdMaW50cHRyVHlwZTsK
LSNlbHNlCi10eXBlZGVmIHB0cmRpZmZfdCBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYgcHRyZGlm
Zl90IEdMaW50cHRyVHlwZTsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEFj
dGl2ZVRleHR1cmVUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQXR0
YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgR0x1aW50LCBjb25zdCBjaGFyKik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRCdWZmZXJUeXBlKSAoR0xlbnVtLCBHTHVp
bnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kRnJhbWVidWZmZXJUeXBlKSAoR0xl
bnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kUmVuZGVyYnVmZmVy
VHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRD
b2xvclR5cGUpIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25UeXBlKSAoR0xlbnVtKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlVHlwZSkoR0xlbnVtLCBH
TGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEZ1bmNTZXBhcmF0ZVR5cGUp
KEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRz
dEFscGhhKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyRGF0YVR5cGUpIChHTGVu
dW0sIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xCdWZmZXJTdWJEYXRhVHlwZSkgKEdMZW51bSwgR0xpbnRwdHJUeXBlLCBH
THNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKik7Ci10eXBlZGVmIEdMZW51bSAoQVBJRU5UUlkq
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xDb21waWxlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMdWludCAo
QVBJRU5UUlkqIGdsQ3JlYXRlUHJvZ3JhbVR5cGUpICgpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVO
VFJZKiBnbENyZWF0ZVNoYWRlclR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xEZWxldGVCdWZmZXJzVHlwZSkgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUHJvZ3JhbVR5
cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVSZW5kZXJidWZm
ZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbERlbGV0ZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xEZXRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50KTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlKSAoR0x1aW50
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJUeXBl
KSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwg
R0x1aW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbkJ1ZmZlcnNUeXBl
KSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdlbmVyYXRl
TWlwbWFwVHlwZSkgKEdMZW51bSB0YXJnZXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZW5GcmFtZWJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgR0x1aW50Kik7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZUF0dHJpYlR5cGUpIChHTHVpbnQsIEdMdWlu
dCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlKSAoR0x1aW50LCBHTHVpbnQs
IEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlKSAoR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0x1aW50Kik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRBdHRy
aWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMaW50
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMaW50KiBwYXJhbXMpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtSW5mb0xvZ1R5cGUpIChHTHVpbnQs
IEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdl
dFByb2dyYW1pdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVu
dW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlckluZm9Mb2dU
eXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRTaGFkZXJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xz
aXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVOVFJZKiBnbEdldFVu
aWZvcm1Mb2NhdGlvblR5cGUpIChHTHVpbnQsIGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZmxvYXQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VW5pZm9ybWl2VHlwZSkgKEdMdWludCwgR0xp
bnQsIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYmZ2
VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEdldFZlcnRleEF0dHJpYml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUpIChHTHVp
bnQsIEdMZW51bSwgR0x2b2lkKiopOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElz
QnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5UUlkqIGdsSXNG
cmFtZWJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBn
bElzUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBn
bElzUmVuZGVyYnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoQVBJRU5U
UlkqIGdsSXNTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
TGlua1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZVR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNhbXBsZUNvdmVyYWdlVHlwZSkgKEdMY2xhbXBm
LCBHTGJvb2xlYW4pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTaGFkZXJTb3VyY2VUeXBl
KSAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxGdW5jU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVu
dW0sIEdMaW50LCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsTWFz
a1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsU3RlbmNpbE9wU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xlbnVt
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmVHlwZSkgKEdMaW50LCBHTGZs
b2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFmdlR5cGUpIChHTGludCwg
R0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlm
b3JtMWlUeXBlKSAoR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybTFpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmVHlwZSkgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJmdlR5cGUpIChHTGludCwgR0xzaXpl
aSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmlU
eXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVu
aWZvcm0yaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwg
R0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zZnZUeXBlKSAoR0xp
bnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VW5pZm9ybTNpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xp
bnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRmVHlwZSkgKEdMaW50LCBH
TGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVW5pZm9ybTRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGlUeXBlKSAoR0xpbnQsIEdMaW50LCBH
TGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRp
dlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVW5pZm9ybU1hdHJpeDJmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFu
LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRy
aXgzZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4NGZ2VHlwZSkgKEdMaW50LCBH
THNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVXNlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xWYWxpZGF0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVmVydGV4QXR0cmliMWZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMWZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xm
bG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZlR5cGUpIChH
THVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xWZXJ0ZXhBdHRyaWIyZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmVHlwZSkgKEdMdWludCwgY29u
c3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjNmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZUeXBlKSAoR0x1aW50
LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZs
b2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliNGZ2VHlwZSkgKEdM
dWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyVHlwZSkgKEdMdWludCwgR0xpbnQsIEdMZW51bSwgR0xib29sZWFuLCBHTHNp
emVpLCBjb25zdCBHTHZvaWQqKTsKLQogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CkBAIC0xNjgsMTMgKzY2LDEwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwKICNl
bmRpZgogewogcHVibGljOgotICAgIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpOworICAg
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqLCBIb3N0V2luZG93
Kik7CiAgICAgfkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKTsKIAotICAgIGJvb2wgaXNWYWxp
ZCgpIHsgcmV0dXJuIG1fdmFsaWQ7IH0KLQogICAgIFFHTFdpZGdldCogZ2V0Vmlld3BvcnRHTFdp
ZGdldCgpOwotICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIHZp
cnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0
eSwgQml0bWFwVGV4dHVyZSogbWFzaykgY29uc3Q7CiAjZW5kaWYKQEAgLTE4MiwxMjMgKzc3LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9u
R3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25z
dDsKIAotICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0aXZlVGV4dHVyZTsKLSAgICBnbEF0dGFj
aFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwotICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSBi
aW5kQXR0cmliTG9jYXRpb247Ci0gICAgZ2xCaW5kQnVmZmVyVHlwZSBiaW5kQnVmZmVyOwotICAg
IGdsQmluZEZyYW1lYnVmZmVyVHlwZSBiaW5kRnJhbWVidWZmZXI7Ci0gICAgZ2xCaW5kUmVuZGVy
YnVmZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVyOwotICAgIGdsQmxlbmRDb2xvclR5cGUgYmxlbmRD
b2xvcjsKLSAgICBnbEJsZW5kRXF1YXRpb25UeXBlIGJsZW5kRXF1YXRpb247Ci0gICAgZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5kRXF1YXRpb25TZXBhcmF0ZTsKLSAgICBnbEJsZW5k
RnVuY1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNTZXBhcmF0ZTsKLSAgICBnbEJ1ZmZlckRhdGFUeXBl
IGJ1ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhVHlwZSBidWZmZXJTdWJEYXRhOwotICAg
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1czsKLSAg
ICBnbENvbXBpbGVTaGFkZXJUeXBlIGNvbXBpbGVTaGFkZXI7Ci0gICAgZ2xDcmVhdGVQcm9ncmFt
VHlwZSBjcmVhdGVQcm9ncmFtOwotICAgIGdsQ3JlYXRlU2hhZGVyVHlwZSBjcmVhdGVTaGFkZXI7
Ci0gICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBkZWxldGVCdWZmZXJzOwotICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVQcm9ncmFtVHlw
ZSBkZWxldGVQcm9ncmFtOwotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUgZGVsZXRlUmVu
ZGVyYnVmZmVyczsKLSAgICBnbERlbGV0ZVNoYWRlclR5cGUgZGVsZXRlU2hhZGVyOwotICAgIGds
RGV0YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFkZXI7Ci0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAgICBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAgICBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcjsKLSAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZlclRleHR1cmUyRDsKLSAgICBnbEdlbkJ1ZmZlcnNU
eXBlIGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1hcFR5cGUgZ2VuZXJhdGVNaXBtYXA7
Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlIGdlbkZyYW1lYnVmZmVyczsKLSAgICBnbEdlblJl
bmRlcmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1ZmZlcnM7Ci0gICAgZ2xHZXRBY3RpdmVBdHRyaWJU
eXBlIGdldEFjdGl2ZUF0dHJpYjsKLSAgICBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlIGdldEFjdGl2
ZVVuaWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlIGdldEF0dGFjaGVkU2hhZGVy
czsKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSBnZXRBdHRyaWJMb2NhdGlvbjsKLSAgICBn
bEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRCdWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2VHlwZSBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nVHlwZSBnZXRQcm9ncmFt
SW5mb0xvZzsKLSAgICBnbEdldFByb2dyYW1pdlR5cGUgZ2V0UHJvZ3JhbWl2OwotICAgIGdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Owot
ICAgIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUgZ2V0U2hhZGVySW5mb0xvZzsKLSAgICBnbEdldFNo
YWRlcml2VHlwZSBnZXRTaGFkZXJpdjsKLSAgICBnbEdldFNoYWRlclNvdXJjZVR5cGUgZ2V0U2hh
ZGVyU291cmNlOwotICAgIGdsR2V0VW5pZm9ybWZ2VHlwZSBnZXRVbmlmb3JtZnY7Ci0gICAgZ2xH
ZXRVbmlmb3JtaXZUeXBlIGdldFVuaWZvcm1pdjsKLSAgICBnbEdldFVuaWZvcm1Mb2NhdGlvblR5
cGUgZ2V0VW5pZm9ybUxvY2F0aW9uOwotICAgIGdsR2V0VmVydGV4QXR0cmliZnZUeXBlIGdldFZl
cnRleEF0dHJpYmZ2OwotICAgIGdsR2V0VmVydGV4QXR0cmliaXZUeXBlIGdldFZlcnRleEF0dHJp
Yml2OwotICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlIGdldFZlcnRleEF0dHJpYlBv
aW50ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBlIGlzQnVmZmVyOwotICAgIGdsSXNGcmFtZWJ1ZmZl
clR5cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBnbElzUHJvZ3JhbVR5cGUgaXNQcm9ncmFtOwotICAg
IGdsSXNSZW5kZXJidWZmZXJUeXBlIGlzUmVuZGVyYnVmZmVyOwotICAgIGdsSXNTaGFkZXJUeXBl
IGlzU2hhZGVyOwotICAgIGdsTGlua1Byb2dyYW1UeXBlIGxpbmtQcm9ncmFtOwotICAgIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVyYnVmZmVyU3RvcmFnZTsKLSAgICBnbFNhbXBsZUNv
dmVyYWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsKLSAgICBnbFNoYWRlclNvdXJjZVR5cGUgc2hhZGVy
U291cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUgc3RlbmNpbEZ1bmNTZXBhcmF0
ZTsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlIHN0ZW5jaWxNYXNrU2VwYXJhdGU7Ci0g
ICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUgc3RlbmNpbE9wU2VwYXJhdGU7Ci0gICAgZ2xVbmlm
b3JtMWZUeXBlIHVuaWZvcm0xZjsKLSAgICBnbFVuaWZvcm0xZnZUeXBlIHVuaWZvcm0xZnY7Ci0g
ICAgZ2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0xaTsKLSAgICBnbFVuaWZvcm0xaXZUeXBlIHVuaWZv
cm0xaXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBlIHVuaWZvcm0yZjsKLSAgICBnbFVuaWZvcm0yZnZU
eXBlIHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlmb3JtMmlUeXBlIHVuaWZvcm0yaTsKLSAgICBnbFVu
aWZvcm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0gICAgZ2xVbmlmb3JtM2ZUeXBlIHVuaWZvcm0zZjsK
LSAgICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZvcm0zZnY7Ci0gICAgZ2xVbmlmb3JtM2lUeXBlIHVu
aWZvcm0zaTsKLSAgICBnbFVuaWZvcm0zaXZUeXBlIHVuaWZvcm0zaXY7Ci0gICAgZ2xVbmlmb3Jt
NGZUeXBlIHVuaWZvcm00ZjsKLSAgICBnbFVuaWZvcm00ZnZUeXBlIHVuaWZvcm00ZnY7Ci0gICAg
Z2xVbmlmb3JtNGlUeXBlIHVuaWZvcm00aTsKLSAgICBnbFVuaWZvcm00aXZUeXBlIHVuaWZvcm00
aXY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSB1bmlmb3JtTWF0cml4MmZ2OwotICAgIGds
VW5pZm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9ybU1hdHJpeDNmdjsKLSAgICBnbFVuaWZvcm1NYXRy
aXg0ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7Ci0gICAgZ2xVc2VQcm9ncmFtVHlwZSB1c2VQcm9n
cmFtOwotICAgIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSB2YWxpZGF0ZVByb2dyYW07Ci0gICAgZ2xW
ZXJ0ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0cmliMWY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZnZU
eXBlIHZlcnRleEF0dHJpYjFmdjsKLSAgICBnbFZlcnRleEF0dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRy
aWIyZjsKLSAgICBnbFZlcnRleEF0dHJpYjJmdlR5cGUgdmVydGV4QXR0cmliMmZ2OwotICAgIGds
VmVydGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0dHJpYjNmOwotICAgIGdsVmVydGV4QXR0cmliM2Z2
VHlwZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZlR5cGUgdmVydGV4QXR0
cmliNGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlIHZlcnRleEF0dHJpYjRmdjsKLSAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlIHZlcnRleEF0dHJpYlBvaW50ZXI7Ci0KLSAgICBHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOworICAgIEdyYXBoaWNzQ29udGV4dDNE
KiBtX2NvbnRleHQ7CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2luZG93OwogICAgIFFHTFdpZGdl
dCogbV9nbFdpZGdldDsKICAgICBRR0xXaWRnZXQqIG1fdmlld3BvcnRHTFdpZGdldDsKLSAgICBR
UmVjdEYgbV9ib3VuZGluZ1JlY3Q7Ci0gICAgR0x1aW50IG1fdGV4dHVyZTsKLSAgICBHTHVpbnQg
bV9jYW52YXNGYm87Ci0gICAgR0x1aW50IG1fY3VycmVudEZibzsKLSAgICBHTHVpbnQgbV9kZXB0
aEJ1ZmZlcjsKLSAgICBib29sIG1fbGF5ZXJDb21wb3NpdGVkOwotICAgIExpc3RIYXNoU2V0PHVu
c2lnbmVkIGludD4gbV9zeW50aGV0aWNFcnJvcnM7Ci0KLSAgICBPd25QdHI8RXh0ZW5zaW9uczNE
UXQ+IG1fZXh0ZW5zaW9uczsKLQotcHJpdmF0ZToKLQotICAgIHZvaWQqIGdldFByb2NBZGRyZXNz
KGNvbnN0IFN0cmluZyYgcHJvYyk7Ci0gICAgYm9vbCBtX3ZhbGlkOwogfTsKIAotI2lmIGRlZmlu
ZWQgKFFUX09QRU5HTF9FU18yKSAKLSNkZWZpbmUgR0VUX1BST0NfQUREUkVTUyhQcm9jKSBQcm9j
Ci0jZWxzZQotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIHJlaW50ZXJwcmV0X2Nhc3Q8
UHJvYyMjVHlwZT4oZ2V0UHJvY0FkZHJlc3MoI1Byb2MpKTsKLSNlbmRpZgotCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKICNpZiBkZWZpbmVkIChR
VF9PUEVOR0xfRVNfMikKQEAgLTMwOCwxNyArOTIsMTEgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLSAgICA6IG1fYXR0cnMo
YXR0cnMpCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVy
bmFsKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBIb3N0V2luZG93KiBob3N0V2luZG93KQor
ICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2hvc3RXaW5kb3coaG9zdFdpbmRvdykK
ICAgICAsIG1fZ2xXaWRnZXQoMCkKICAgICAsIG1fdmlld3BvcnRHTFdpZGdldCgwKQotICAgICwg
bV90ZXh0dXJlKDApCi0gICAgLCBtX2NhbnZhc0ZibygwKQotICAgICwgbV9jdXJyZW50RmJvKDAp
Ci0gICAgLCBtX2RlcHRoQnVmZmVyKDApCi0gICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkK
LSAgICAsIG1fdmFsaWQodHJ1ZSkKIHsKICAgICBtX3ZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3
cG9ydEdMV2lkZ2V0KCk7CiAKQEAgLTMyNywxNTQgKzEwNSwxOCBAQCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaWJ1dAogICAgIGVsc2UKICAgICAgICAgbV9nbFdpZGdldCA9IG5ldyBRR0xXaWRnZXQoKTsK
IAotICAgIGlmICghbV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIExPR19FUlJPUigi
R3JhcGhpY3NDb250ZXh0M0Q6IFFHTFdpZGdldCBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7Ci0g
ICAgICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IEdlb21ldHJ5IGNhbiBiZSBzZXQgdG8gemVybyBiZWNhdXNlIG1fZ2xXaWRnZXQgaXMgdXNlZCBv
bmx5IGZvciBpdHMgUUdMQ29udGV4dC4KICAgICBtX2dsV2lkZ2V0LT5zZXRHZW9tZXRyeSgwLCAw
LCAwLCAwKTsKIAotI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgbV9hdHRycy5zdGVu
Y2lsID0gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIG1f
YXR0cnMuZGVwdGggPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxz
ZTsKLQogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKLSAgICBhY3RpdmVUZXh0dXJl
ID0gR0VUX1BST0NfQUREUkVTUyhnbEFjdGl2ZVRleHR1cmUpOwotICAgIGF0dGFjaFNoYWRlciA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xBdHRhY2hTaGFkZXIpOwotICAgIGJpbmRBdHRyaWJMb2NhdGlv
biA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kQXR0cmliTG9jYXRpb24pOwotICAgIGJpbmRCdWZm
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEJ1ZmZlcik7Ci0gICAgYmluZEZyYW1lYnVmZmVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRGcmFtZWJ1ZmZlcik7Ci0gICAgYmluZFJlbmRlcmJ1
ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kUmVuZGVyYnVmZmVyKTsKLSAgICBibGVuZENv
bG9yID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kQ29sb3IpOwotICAgIGJsZW5kRXF1YXRpb24g
PSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvbik7Ci0gICAgYmxlbmRFcXVhdGlvblNl
cGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSk7Ci0gICAg
YmxlbmRGdW5jU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRGdW5jU2VwYXJhdGUp
OwotICAgIGJ1ZmZlckRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyRGF0YSk7Ci0gICAg
YnVmZmVyU3ViRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZmZXJTdWJEYXRhKTsKLSAgICBj
aGVja0ZyYW1lYnVmZmVyU3RhdHVzID0gR0VUX1BST0NfQUREUkVTUyhnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMpOwotICAgIGNvbXBpbGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ29tcGls
ZVNoYWRlcik7Ci0gICAgY3JlYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDcmVhdGVQ
cm9ncmFtKTsKLSAgICBjcmVhdGVTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlU2hh
ZGVyKTsKLSAgICBkZWxldGVCdWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZUJ1ZmZl
cnMpOwotICAgIGRlbGV0ZUZyYW1lYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVG
cmFtZWJ1ZmZlcnMpOwotICAgIGRlbGV0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVs
ZXRlUHJvZ3JhbSk7Ci0gICAgZGVsZXRlUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xEZWxldGVSZW5kZXJidWZmZXJzKTsKLSAgICBkZWxldGVTaGFkZXIgPSBHRVRfUFJPQ19BRERS
RVNTKGdsRGVsZXRlU2hhZGVyKTsKLSAgICBkZXRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNT
KGdsRGV0YWNoU2hhZGVyKTsKLSAgICBkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJP
Q19BRERSRVNTKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKLSAgICBlbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk7
Ci0gICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIpOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEID0gR0VUX1BST0Nf
QUREUkVTUyhnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKLSAgICBnZW5CdWZmZXJzID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdlbkJ1ZmZlcnMpOwotICAgIGdlbmVyYXRlTWlwbWFwID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdlbmVyYXRlTWlwbWFwKTsKLSAgICBnZW5GcmFtZWJ1ZmZlcnMgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2VuRnJhbWVidWZmZXJzKTsKLSAgICBnZW5SZW5kZXJidWZmZXJzID0gR0VU
X1BST0NfQUREUkVTUyhnbEdlblJlbmRlcmJ1ZmZlcnMpOwotICAgIGdldEFjdGl2ZUF0dHJpYiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVBdHRyaWIpOwotICAgIGdldEFjdGl2ZVVuaWZv
cm0gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlVW5pZm9ybSk7Ci0gICAgZ2V0QXR0YWNo
ZWRTaGFkZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dGFjaGVkU2hhZGVycyk7Ci0gICAg
Z2V0QXR0cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0cmliTG9jYXRpb24p
OwotICAgIGdldEJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEJ1ZmZl
clBhcmFtZXRlcml2KTsKLSAgICBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik7
Ci0gICAgZ2V0UHJvZ3JhbUluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbUlu
Zm9Mb2cpOwotICAgIGdldFByb2dyYW1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRQcm9ncmFt
aXYpOwotICAgIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KTsKLSAgICBnZXRTaGFkZXJJbmZvTG9nID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFNoYWRlckluZm9Mb2cpOwotICAgIGdldFNoYWRlcml2ID0gR0VU
X1BST0NfQUREUkVTUyhnbEdldFNoYWRlcml2KTsKLSAgICBnZXRTaGFkZXJTb3VyY2UgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyU291cmNlKTsKLSAgICBnZXRVbmlmb3JtZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybWZ2KTsKLSAgICBnZXRVbmlmb3JtaXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0VW5pZm9ybWl2KTsKLSAgICBnZXRVbmlmb3JtTG9jYXRpb24gPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJm
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJmdik7Ci0gICAgZ2V0VmVydGV4
QXR0cmliaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliaXYpOwotICAgIGdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2KTsKLSAgICBpc0J1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0J1ZmZlcik7
Ci0gICAgaXNGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc0ZyYW1lYnVmZmVyKTsK
LSAgICBpc1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNQcm9ncmFtKTsKLSAgICBpc1Jl
bmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1JlbmRlcmJ1ZmZlcik7Ci0gICAgaXNT
aGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNTaGFkZXIpOwotICAgIGxpbmtQcm9ncmFtID0g
R0VUX1BST0NfQUREUkVTUyhnbExpbmtQcm9ncmFtKTsKLSAgICByZW5kZXJidWZmZXJTdG9yYWdl
ID0gR0VUX1BST0NfQUREUkVTUyhnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UpOwotICAgIHNhbXBsZUNv
dmVyYWdlID0gR0VUX1BST0NfQUREUkVTUyhnbFNhbXBsZUNvdmVyYWdlKTsKLSAgICBzaGFkZXJT
b3VyY2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsU2hhZGVyU291cmNlKTsKLSAgICBzdGVuY2lsRnVu
Y1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpOwotICAg
IHN0ZW5jaWxNYXNrU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbE1hc2tTZXBh
cmF0ZSk7Ci0gICAgc3RlbmNpbE9wU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNp
bE9wU2VwYXJhdGUpOwotICAgIHVuaWZvcm0xZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
MWYpOwotICAgIHVuaWZvcm0xZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmdik7Ci0g
ICAgdW5pZm9ybTFpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaSk7Ci0gICAgdW5pZm9y
bTFpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWl2KTsKLSAgICB1bmlmb3JtMmYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJmKTsKLSAgICB1bmlmb3JtMmZ2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm0yZnYpOwotICAgIHVuaWZvcm0yaSA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xVbmlmb3JtMmkpOwotICAgIHVuaWZvcm0yaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bTJpdik7Ci0gICAgdW5pZm9ybTNmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zZik7Ci0g
ICAgdW5pZm9ybTNmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2Z2KTsKLSAgICB1bmlm
b3JtM2kgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpKTsKLSAgICB1bmlmb3JtM2l2ID0g
R0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaXYpOwotICAgIHVuaWZvcm00ZiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xVbmlmb3JtNGYpOwotICAgIHVuaWZvcm00ZnYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVW5pZm9ybTRmdik7Ci0gICAgdW5pZm9ybTRpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZv
cm00aSk7Ci0gICAgdW5pZm9ybTRpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGl2KTsK
LSAgICB1bmlmb3JtTWF0cml4MmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgy
ZnYpOwotICAgIHVuaWZvcm1NYXRyaXgzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1h
dHJpeDNmdik7Ci0gICAgdW5pZm9ybU1hdHJpeDRmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlm
b3JtTWF0cml4NGZ2KTsKLSAgICB1c2VQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbFVzZVBy
b2dyYW0pOwotICAgIHZhbGlkYXRlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWYWxpZGF0
ZVByb2dyYW0pOwotICAgIHZlcnRleEF0dHJpYjFmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjFmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliMWZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWIyZik7Ci0gICAgdmVydGV4QXR0cmliMmZ2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjJmdik7Ci0gICAgdmVydGV4QXR0cmliM2YgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVmVydGV4QXR0cmliM2YpOwotICAgIHZlcnRleEF0dHJpYjNmdiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xWZXJ0ZXhBdHRyaWIzZnYpOwotICAgIHZlcnRleEF0dHJpYjRmID0gR0VUX1BST0NfQURE
UkVTUyhnbFZlcnRleEF0dHJpYjRmKTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZnYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVmVydGV4QXR0cmliNGZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWJQb2ludGVyID0gR0VU
X1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYlBvaW50ZXIpOwotCi0gICAgaWYgKCFtX3ZhbGlk
KSB7Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IEFsbCBuZWVkZWQgT3Bl
bkdMIGV4dGVuc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIC8vIENyZWF0ZSBidWZmZXJzIGZvciB0aGUgY2FudmFzIEZCTy4KLSAgICBnZW5G
cmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fY2FudmFzRmJvKTsKLQotICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlO
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwotICAg
IGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwotCi0gICAg
aWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8g
MSwgJm1fZGVwdGhCdWZmZXIpOwotCiAjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAg
Z2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKICAgICBnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JB
TV9QT0lOVF9TSVpFKTsKICNlbmRpZgotCi0gICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBzZXQg
aW5pdGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KLSAgICBtX2N1cnJlbnRGYm8gPSBtX2NhbnZh
c0ZibzsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2NhbnZhc0Zibyk7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9
CiAKIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFs
KCkKIHsKLSAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGlmIChtX2dsV2lkZ2V0
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgOjpnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUp
OwotICAgICAgICBkZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoQnVmZmVyKTsKLSAgICAg
ICAgZGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2NhbnZhc0Zibyk7Ci0gICAgfQogICAgIGRlbGV0
ZSBtX2dsV2lkZ2V0OwogICAgIG1fZ2xXaWRnZXQgPSAwOwogfQpAQCAtNDk3LDY5ICsxMzksMTIg
QEAgc3RhdGljIGlubGluZSBxdWludDMyIHN3YXBCZ3JUb1JnYihxdWludDMyIHBpeGVsKQogICAg
IHJldHVybiAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYwMDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhm
ZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpZiAod2lkdGgg
PT0gbV9ib3VuZGluZ1JlY3Qud2lkdGgoKSAmJiBoZWlnaHQgPT0gbV9ib3VuZGluZ1JlY3QuaGVp
Z2h0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fYm91bmRpbmdSZWN0ID0gUVJlY3RGKFFQ
b2ludEYoMCwgMCksIFFTaXplRih3aWR0aCwgaGVpZ2h0KSk7Ci0KLSAgICBtX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotCi0gICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgotICAgIGdsQmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAgaWYg
KG1fYXR0cnMuYWxwaGEpCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRo
LCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7Ci0gICAgZWxzZQotICAg
ICAgICBnbFRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVs
ICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAq
LyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwgLyogZGF0YSAqLyAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwKTsKLQotICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7Ci0gICAgICAgIC8v
IENyZWF0ZSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLgotICAgICAgICBiaW5kUmVuZGVyYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2lm
IGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NP
TVBPTkVOVDE2LCB3aWR0aCwgaGVpZ2h0KTsKLSNlbHNlCi0gICAgICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwpCi0gICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdp
ZHRoLCBoZWlnaHQpOwotI2VuZGlmCi0gICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgMCk7Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0IGNh
bnZhcyBGQk8uCi0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9jYW52YXNGYm8pOwotICAgIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQw
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKLSAgICBpZiAo
bV9hdHRycy5kZXB0aCkKLSAgICAgICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVO
VCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Ci0jaWYg
IWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAg
ICAgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKLSNlbmRpZgotCi0gICAgR0xlbnVtIHN0
YXR1cyA9IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSKTsKLSAgICBpZiAoc3RhdHVzICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9D
T01QTEVURSkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMg
RkJPIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGludCBjbGVhckZsYWdzID0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7
Ci0gICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Ci0gICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAg
ICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklU
OwotCi0gICAgZ2xDbGVhcihjbGVhckZsYWdzKTsKLSAgICBnbEZsdXNoKCk7Ci19Ci0KICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJl
KiBtYXNrKSBjb25zdAogewogICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5pc09wZW5HTEJhY2tlZCgp
KSB7CiAgICAgICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKLSAgICAgICAgdGV4bWFwR0wtPmRyYXdUZXh0
dXJlKG1fdGV4dHVyZSwgIW1fYXR0cnMuYWxwaGEsIEZsb2F0U2l6ZSgxLCAxKSwgdGFyZ2V0UmVj
dCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCB0cnVlIC8qIGZsaXAgKi8pOworICAgICAgICB0ZXht
YXBHTC0+ZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX2NvbXBvc2l0b3JUZXh0dXJlLCAhbV9jb250
ZXh0LT5tX2F0dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwg
b3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNTY5LDIxICsxNTQsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGUKICAgICBwYWlu
dGVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKICAgICBwYWludGVyLT5zZXRPcGFjaXR5KG9wYWNp
dHkpOwogCisgICAgY29uc3QgaW50IGhlaWdodCA9IG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0
OworICAgIGNvbnN0IGludCB3aWR0aCA9IG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGg7CisKICAg
ICAvLyBBbHRlcm5hdGl2ZWx5IHJlYWQgcGl4ZWxzIHRvIGEgbWVtb3J5IGJ1ZmZlci4KLSAgICBR
SW1hZ2Ugb2Zmc2NyZWVuSW1hZ2UobV9ib3VuZGluZ1JlY3Qud2lkdGgoKSwgbV9ib3VuZGluZ1Jl
Y3QuaGVpZ2h0KCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgUUltYWdlIG9mZnNjcmVl
bkltYWdlKHdpZHRoLCBoZWlnaHQsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CiAgICAgcXVpbnQz
MiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFn
ZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7Ci0g
ICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCBtX2JvdW5kaW5nUmVjdC53aWR0
aCgpLCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7Ci0KLSAgICBiaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8p
OworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9jb250ZXh0LT5tX2Zibyk7CisgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAw
LCB3aWR0aCwgaGVpZ2h0LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CiAK
ICAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3Jp
Z2luIGF0IHRoZSBib3R0b20gbGVmdAogICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BN
LCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0LgogICAgIHF1aW50MzIqIHBpeGVsc1Ny
YyA9IGltYWdlUGl4ZWxzOwotICAgIGNvbnN0IGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KG1fYm91bmRpbmdSZWN0LmhlaWdodCgpKTsKLSAgICBjb25zdCBpbnQgd2lkdGggPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fYm91bmRpbmdSZWN0LndpZHRoKCkpOwogICAgIGNvbnN0IGludCBoYWxmSGVp
Z2h0ID0gaGVpZ2h0IC8gMjsKICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBoYWxmSGVpZ2h0
OyArK3JvdykgewogICAgICAgICBjb25zdCBpbnQgdGFyZ2V0SWR4ID0gKGhlaWdodCAtIDEgLSBy
b3cpICogd2lkdGg7CkBAIC02MTAsNyArMTk1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGUK
IAogUVJlY3RGIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fYm91bmRpbmdSZWN0OworICAgIHJldHVybiBRUmVjdEYoUVBvaW50
RigwLCAwKSwgUVNpemVGKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9j
dXJyZW50SGVpZ2h0KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFp
bnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0
aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCkBAIC02MjMsNyArMjA4LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0
aW9uR3JhcGgKICAgICAvLyB3aXRoIGJyb3dzZXJzIE9wZW5HTCBjb250ZXh0LgogICAgIFFHTFdp
ZGdldCogdmlld3BvcnRHTFdpZGdldCA9IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKICAgICBpZiAo
dmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IG1fdmlld3BvcnRHTFdpZGdl
dCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IHBhaW50ZXItPmRldmljZSgpKSB7Ci0gICAgICAgIHZp
ZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fdGV4dHVyZSk7CisgICAgICAgIHZp
ZXdwb3J0R0xXaWRnZXQtPmRyYXdUZXh0dXJlKHJlY3QsIG1fY29udGV4dC0+bV9jb21wb3NpdG9y
VGV4dHVyZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYzMiwxMCArMjE3LDkgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKICAgICBtX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOwogICAgIGds
UmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo
dCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIGltYWdlUGl4ZWxzKTsKLQotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOwog
CiAgICAgLy8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9y
aWdpbiBhdCB0aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9Q
TSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTY2NCwyMyArMjQ4LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoLyogeCAqLyAw
LCAvKiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQotewotICAgIFN0
cmluZyBleHRbM10gPSB7ICIiLCAiQVJCIiwgIkVYVCIgfTsKLQotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lV2l0aEV4dCA9IHByb2MgKyBleHRb
aV07Ci0KLSAgICAgICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+Z2V0UHJv
Y0FkZHJlc3MoUVN0cmluZyhuYW1lV2l0aEV4dCkpOwotICAgICAgICBpZiAoYWRkcikgCi0gICAg
ICAgICAgICByZXR1cm4gYWRkcjsKLSAgICB9Ci0KLSAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29u
dGV4dDNEOiBEaWQgbm90IGZpbmQgR0wgZnVuY3Rpb24gJXMiLCBwcm9jLnV0ZjgoKS5kYXRhKCkp
OwotICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICByZXR1cm4gMDsKLX0KLQogUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogewogICAgIC8vIFRoaXMgaW1wbGVt
ZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8g
dGhlIEhvc3RXaW5kb3cuCkBAIC02OTEsMTQgKzI1OCw3NyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpB
dHRyaQogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wp
Ci0gICAgOiBtX2lzUmVzb3VyY2VTYWZlKGZhbHNlKSwgbV9pbnRlcm5hbChhZG9wdFB0cihuZXcg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChhdHRycywgaG9zdFdpbmRvdykpKQorICAgIDogbV9j
dXJyZW50V2lkdGgoMCkKKyAgICAsIG1fY3VycmVudEhlaWdodCgwKQorICAgICwgbV9pc1Jlc291
cmNlU2FmZShmYWxzZSkKKyAgICAsIG1fYXR0cnMoYXR0cnMpCisgICAgLCBtX3RleHR1cmUoMCkK
KyAgICAsIG1fY29tcG9zaXRvclRleHR1cmUoMCkKKyAgICAsIG1fZmJvKDApCisgICAgLCBtX2Rl
cHRoU3RlbmNpbEJ1ZmZlcigwKQorICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCisgICAg
LCBtX2ludGVybmFsQ29sb3JGb3JtYXQoMCkKKyAgICAsIG1fYm91bmRGQk8oMCkKKyAgICAsIG1f
YWN0aXZlVGV4dHVyZSgwKQorICAgICwgbV9ib3VuZFRleHR1cmUwKDApCisgICAgLCBtX211bHRp
c2FtcGxlRkJPKDApCisgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCisg
ICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKKyAgICAsIG1faW50ZXJuYWwoYWRvcHRQ
dHIobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwodGhpcywgaG9zdFdpbmRvdykpKQogewot
ICAgIGlmICghbV9pbnRlcm5hbC0+aXNWYWxpZCgpKQotICAgICAgICBtX2ludGVybmFsLmNsZWFy
KCk7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBtX2F0dHJzLnN0ZW5jaWwgPSBm
YWxzZTsKKyNlbHNlCisgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgbV9hdHRycy5k
ZXB0aCA9IHRydWU7CisjZW5kaWYKKyAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOworCisg
ICAgaWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgTE9H
X0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxl
ZC4iKTsKKyAgICAgICAgbV9pbnRlcm5hbCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOworICAgIHN0YXRpYyBi
b29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgc3Vj
Y2VzcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOworICAgICAgICBpbml0aWFsaXplZCA9IHRy
dWU7CisgICAgfQorICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBtX2ludGVybmFsID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENyZWF0ZSBidWZmZXJzIGZv
ciB0aGUgY2FudmFzIEZCTy4KKyAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAm
bV9mYm8pOworCisgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3Np
dG9yVGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFw
aGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQ
X1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKKworICAgIGlmIChtX2F0dHJzLmRl
cHRoKQorICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKKworICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwg
Y2xlYXIgY29sb3IgdG8gYmxhY2suCisgICAgbV9ib3VuZEZCTyA9IG1fZmJvOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAg
IGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCiBHcmFwaGljc0NvbnRleHQz
RDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKIHsKKyAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOworICAgIGlmIChtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7Cisg
ICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwor
ICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8pOworICAgIH0KIH0KIAogUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCgpCkBAIC03MDgsNyArMzM4LDcgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCgpCiAKIFBsYXRm
b3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fdGV4dHVyZTsKKyAgICByZXR1cm4gbV9jb21wb3Np
dG9yVGV4dHVyZTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTc0
MSwxMyArMzcxLDYzIEBAIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKKyAgICBpZiAoIW1faW50ZXJu
YWwpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICgod2lkdGggPT0gbV9jdXJyZW50V2lkdGgg
JiYgaGVpZ2h0ID09IG1fY3VycmVudEhlaWdodCkgfHwgKCFtX2ludGVybmFsKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jdXJyZW50V2lkdGggPSB3aWR0aDsKICAgICBtX2N1cnJlbnRIZWln
aHQgPSBoZWlnaHQ7CiAKLSAgICBtX2ludGVybmFsLT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwor
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisKKyAgICAvLyBDcmVh
dGUgY29sb3IgYnVmZmVyCisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgaWYgKG1fYXR0cnMuYWxwaGEpCisg
ICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2
ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRl
ciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CisgICAgZWxzZQorICAgICAgICBnbFRleEltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIC8qIGxldmVsICovIDAsIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0IsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAw
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsK
KworICAgIGlmIChtX2F0dHJzLmRlcHRoKSB7CisgICAgICAgIC8vIENyZWF0ZSBkZXB0aCBhbmQg
c3RlbmNpbCBidWZmZXJzLgorICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2lmIGRlZmluZWQo
UVRfT1BFTkdMX0VTXzIpCisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOworI2Vsc2UKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkK
KyAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVO
REVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQsIHdpZHRo
LCBoZWlnaHQpOworI2VuZGlmCisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgY2Fu
dmFzIEZCTy4KKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fZmJvKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSwgMCk7Cisg
ICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpOworI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwpCisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5U
LCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7
CisjZW5kaWYKKworICAgIEdMZW51bSBzdGF0dXMgPSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBpZiAoc3RhdHVzICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURSkgeworICAgICAgICBMT0dfRVJST1Io
IkdyYXBoaWNzQ29udGV4dDNEOiBDYW52YXMgRkJPIGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBjbGVhckZsYWdzID0gR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQ7CisgICAgaWYgKG1fYXR0cnMuZGVwdGgpCisgICAg
ICAgIGNsZWFyRmxhZ3MgfD0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0JVRkZFUl9CSVQ7Cisg
ICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0Nv
bnRleHQzRDo6U1RFTkNJTF9CVUZGRVJfQklUOworCisgICAgZ2xDbGVhcihjbGVhckZsYWdzKTsK
KyAgICBnbEZsdXNoKCk7CiB9CiAKIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVy
bmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QKQEAgLTc1OCw3ICs0MzgsNyBAQCBJbnRTaXplIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNvbnN0CiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjphY3RpdmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC03NjYsNyArNDQ2LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQo
c2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsQXR0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtYXhD
b3VudCwgR0MzRHNpemVpKiBjb3VudCwgUGxhdGZvcm0zRE9iamVjdCogc2hhZGVycykKQEAgLTc3
NywzMyArNDU3LDMzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dGFjaGVkU2hhZGVy
cyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBtCiAgICAgfQogCiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRB
dHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKKyAgICBn
bEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRl
eCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKHRhcmdl
dCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVy
KEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5tX2N1cnJl
bnRGYm8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX2NhbnZhc0ZibzsKLSAgICBt
X2ludGVybmFsLT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1cnJlbnRG
Ym8pOworICAgIG1fYm91bmRGQk8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ZibzsKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1fYm91bmRGQk8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCByZW5kZXJidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwgcmVuZGVyYnVm
ZmVyKTsKKyAgICBnbEJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFBs
YXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTgxNSw1NSArNDk1LDU1IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCB0ZXh0dXJlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcihHQzNEY2xhbXBm
IHJlZCwgR0MzRGNsYW1wZiBncmVlbiwgR0MzRGNsYW1wZiBibHVlLCBHQzNEY2xhbXBmIGFscGhh
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+YmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgZ2xCbGVu
ZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBtb2RlKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRFcXVhdGlvbiht
b2RlKTsKKyAgICBnbEJsZW5kRXF1YXRpb24obW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBt
b2RlQWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhh
KTsKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMoR0MzRGVudW0gc2ZhY3RvciwgR0Mz
RGVudW0gZGZhY3RvcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogICAgIGdsQmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwotfSAgICAgICAKK30KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdC
LCBHQzNEZW51bSBkc3RSR0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBk
c3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZm
ZXJEYXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJE
YXRhKHRhcmdldCwgc2l6ZSwgLyogZGF0YSAqLyAwLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6
ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5idWZmZXJEYXRhKHRh
cmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUs
IGRhdGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0
YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwg
Y29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNp
emUsIGRhdGEpOworICAgIGdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0
YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKEdDM0RjbGFtcGYgciwgR0Mz
RGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkKQEAgLTkwNCw3ICs1ODQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyKQogewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Y29tcGlsZVNoYWRlcihzaGFkZXIp
OworICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcikKQEAgLTk1Miw3ICs2MzIsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIEFTU0VSVChz
aGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgZ2xEZXRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlz
YWJsZShHQzNEZW51bSBjYXApCkBAIC05NjQsNyArNjQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2Rl
LCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCkBAIC05ODgsNyArNjY4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmaW5pc2goKQpAQCAt
MTAwNiwxMyArNjg2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOworICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQs
IGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwg
bGV2ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC0xMDI0LDcgKzcwNCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuZXJhdGVNaXBt
YXAodGFyZ2V0KTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwKHRhcmdldCk7CiB9CiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAtMTAzNywxNCArNzE3LDE0IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIEdDM0R1aW50IGluZGV4CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+
Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdy
YXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhMZW5ndGgp
OwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZhc3RNYWxsb2MobWF4TGVuZ3RoKTsK
ICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdM
ZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFt
LCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAg
ICBnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0
aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKIAogICAgIGlmICghbmFtZUxlbmd0aCkgewogICAgICAg
ICBmYXN0RnJlZShuYW1lKTsKQEAgLTEwNjksMTQgKzc0OSwxNCBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVp
bnQgaW5kZQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAg
ICBHTGludCBtYXhMZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihzdGF0
aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZP
Uk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYoc3RhdGljX2Nh
c3Q8R0x1aW50Pihwcm9ncmFtKSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01B
WF9MRU5HVEgsICZtYXhMZW5ndGgpOwogCiAgICAgR0xjaGFyKiBuYW1lID0gKEdMY2hhciopIGZh
c3RNYWxsb2MobWF4TGVuZ3RoKTsKICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdM
aW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKIAotICAgIG1faW50ZXJuYWwtPmdl
dEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExl
bmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVV
bmlmb3JtKHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIGluZGV4LCBtYXhMZW5ndGgsICZu
YW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7
CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTA5NywyMCArNzc3LDIwIEBAIGludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRB
dHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBn
bEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0
QXR0cmlidXRlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPm1fYXR0cnM7CisgICAgcmV0
dXJuIG1fYXR0cnM7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigp
CiB7Ci0gICAgaWYgKG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsK
LSAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0gbV9pbnRlcm5h
bC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4oKTsKKyAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMu
c2l6ZSgpID4gMCkgeworICAgICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0
ZXIgPSBtX3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOwogICAgICAgICBHQzNEZW51bSBlcnIgPSAq
aXRlcjsKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIp
OworICAgICAgICBtX3N5bnRoZXRpY0Vycm9ycy5yZW1vdmUoaXRlcik7CiAgICAgICAgIHJldHVy
biBlcnI7CiAgICAgfQogCkBAIC0xMTM2LDcgKzgxNiw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1ZmZlcik7CisgICAgcmV0
dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC0xMTUxLDcgKzgzMSw3IEBAIEdDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJh
bWVidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0Zy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyKGZyYW1l
YnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMTYwLDcgKzg0MCw3IEBAIEdDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQog
ICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQcm9ncmFtKHByb2dy
YW0pOworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVy
YnVmZmVyKQpAQCAtMTE2OSw3ICs4NDksNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiAgICAgICAg
IHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJi
dWZmZXIpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAK
IEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKQEAgLTExNzgsNyArODU4LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xf
RkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gZ2xJ
c1NoYWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTEyMDAsNyArODgwLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
KQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBp
eGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTEyNTEsMTMg
KzkzMSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBicmVhazsKICAgICB9
CiAjZW5kaWYKLSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0
YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4g
aW52ZXJ0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CisgICAgZ2xTYW1w
bGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0KQpAQCAtMTI4Myw3ICs5NjMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFk
ZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogICAg
IENTdHJpbmcgc291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hh
ciogZGF0YSA9IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVuZ3RoID0gcHJlZml4ZWRTb3Vy
Y2UubGVuZ3RoKCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRl
ciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAgIGdsU2hhZGVyU291cmNlKChH
THVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJl
ZiwgR0MzRHVpbnQgbWFzaykKQEAgLTEyOTUsNyArOTc1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1h
c2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVt
IGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3RlbmNp
bEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTMwNyw3ICs5ODcsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBH
QzNEdWludCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKKyAg
ICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVu
dW0genBhc3MpCkBAIC0xMzE5LDcgKzk5OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0
ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBH
QzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVu
Y2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9w
U2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dGV4UGFyYW1ldGVyZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFt
ZSwgR0MzRGZsb2F0IHZhbHVlKQpAQCAtMTMzNywxMjEgKzEwMTcsMTIxIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmkoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGZsb2F0IHYwKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7Cisg
ICAgZ2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBn
bFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZs
b2F0IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9y
bTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXpl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+dW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEs
IEdDM0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7Cisg
ICAgZ2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXks
IEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OworICAgIGdsVW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYw
LCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9y
bTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGYobG9jYXRpb24s
IHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00ZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWkobG9j
YXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFy
cmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQg
djAsIEdDM0RpbnQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAg
Z2xVbmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0yaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2
MSwgR0MzRGludCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7Cisg
ICAgZ2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
KyAgICBnbFVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdD
M0RpbnQgdjEsIEdDM0RpbnQgdjIsIEdDM0RpbnQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGkobG9jYXRp
b24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2
MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00
aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJm
dihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJy
YXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgc2l6
ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBz
aXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdD
M0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9y
bU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlm
b3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51c2VQcm9ncmFtKHByb2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKQEAgLTE0NTksNjEgKzExMzksNjEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NF
UlQocHJvZ3JhbSk7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT52YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xW
YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhB
dHRyaWIxZihpbmRleCwgdjApOworICAgIGdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7
CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwg
R0MzRGZsb2F0IHYxKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CisgICAg
Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIy
ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxv
YXQgdjIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CisgICAgZ2xW
ZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmli
M2Z2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjRmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZs
b2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYx
LCB2MiwgdjMpOworICAgIGdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50IGlu
ZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJh
eSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGlu
dCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNEc2l6ZWkg
c3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5k
ZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJl
dF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNE
c2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCkBAIC0xNTMxLDcgKzEyMTEsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0Ri
b29sZWFuKiB2YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRl
cml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7Cisg
ICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEZmxvYXQqIHZhbHVlKQpAQCAtMTU0Myw3ICsxMjIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RmxvYXR2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcGFyYW1OYW1l
LCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBhcmFtTmFt
ZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTU1NSw3ICsxMjM1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpA
QCAtMTU2Myw3ICsxMjQzLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFt
SW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAgbV9pbnRl
cm5hbC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19M
RU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogCiAgICAgR0xzaXplaSBzaXplID0g
MDsKIApAQCAtMTU3MSw3ICsxMjUxLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQ
cm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgaWYgKCFpbmZvKQog
ICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtSW5mb0xvZyhw
cm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFByb2dyYW1JbmZvTG9nKHBy
b2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsK
ICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTE1ODIsMTQgKzEyNjIsMTQgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNE
ZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOworICAg
IGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgQVNT
RVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwor
ICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5n
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyKQpAQCAtMTU5NywxNCArMTI3NywxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IGxlbmd0aCA9IDA7Ci0gICAg
bV9pbnRlcm5hbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19M
T0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3ND
b250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUg
PSAwOwogICAgIEdMY2hhciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAg
ICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRT
aGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVz
dWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTYxNywxNCArMTI5NywxNCBAQCBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAg
ICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIs
IEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfU09VUkNFX0xFTkdUSCwgJmxlbmd0aCk7CisgICAg
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfU09VUkNFX0xF
TkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogICAgIEdMY2hhciogaW5m
byA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAgICAgaWYgKCFpbmZvKQogICAgICAg
ICByZXR1cm4gIiI7CiAKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBs
ZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFNoYWRlclNvdXJjZShzaGFkZXIsIGxlbmd0
aCwgJnNpemUsIGluZm8pOwogCiAgICAgU3RyaW5nIHJlc3VsdChpbmZvKTsKICAgICBmYXN0RnJl
ZShpbmZvKTsKQEAgLTE2NDcsMTMgKzEzMjcsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEcK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRVbmlm
b3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1mdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRV
bmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUp
OworICAgIGdsR2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIEdD
M0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE2NjEsMTkgKzEzNDEsMTkgQEAg
R0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgY29uc3QgU3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgCiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRl
cm5hbC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KEdDM0R1
aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5n
ZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0
ZXhBdHRyaWJmdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJh
bU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBh
cmFtTmFtZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBhcmFtTmFt
ZSwgdmFsdWUpOwogfQogCiBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRl
eEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcGFyYW1OYW1lKQpAQCAtMTY4
MSw3ICsxMzYxLDcgQEAgR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHAKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIAogICAgIEdMdm9pZCogcG9pbnRlciA9IDA7
Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFtTmFt
ZSwgJnBvaW50ZXIpOworICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBhcmFt
TmFtZSwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMTcwMiw3ICsxMzgy
LDcgQEAgUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyKCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWlu
dCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJuYWwtPmdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwg
JmhhbmRsZSk7CisgICAgZ2xHZW5CdWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAg
IHJldHVybiBoYW5kbGU7CiB9CiAKQEAgLTE3MTAsMjggKzEzOTAsMjggQEAgUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7
Ci0gICAgbV9pbnRlcm5hbC0+Z2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUp
OworICAgIGdsR2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJl
dHVybiBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZVByb2dyYW0oKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVByb2dyYW0oKTsKKyAgICByZXR1cm4g
Z2xDcmVhdGVQcm9ncmFtKCk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5n
ZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOworICAgIGdsR2VuUmVuZGVy
YnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKICAgICByZXR1cm4gaGFuZGxlOwogfQog
CiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVTaGFkZXIoR0MzRGVu
dW0gdHlwZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5jcmVhdGVTaGFkZXIodHlwZSk7CisgICAgcmV0dXJuIGds
Q3JlYXRlU2hhZGVyKHR5cGUpOwogfQogCiBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4
dDNEOjpjcmVhdGVUZXh0dXJlKCkKQEAgLTE3NDUsMzEgKzE0MjUsMzEgQEAgUGxhdGZvcm0zRE9i
amVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlVGV4dHVyZSgpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVCdWZmZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxl
dGVCdWZmZXJzKDEsICZidWZmZXIpOworICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCBmcmFtZWJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVi
dWZmZXIpOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+ZGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbERlbGV0ZVByb2dy
YW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVJlbmRlcmJ1
ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CisgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZy
ZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVTaGFkZXIoc2hhZGVyKTsKKyAg
ICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
ZWxldGVUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTE3ODAsMzAgKzE0NjAs
MzAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmUpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9y
KEdDM0RlbnVtIGVycm9yKQogewotICAgIG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLmFk
ZChlcnJvcik7CisgICAgbV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6bWFya0xheWVyQ29tcG9zaXRlZCgpCiB7Ci0gICAgbV9pbnRlcm5h
bC0+bV9sYXllckNvbXBvc2l0ZWQgPSB0cnVlOworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1
ZTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bWFya0NvbnRleHRDaGFuZ2VkKCkKIHsK
ICAgICAvLyBGSVhNRTogQW55IGFjY2VsZXJhdGVkIGNvbXBvc2l0b3IgbmVlZHMgdG8gYmUgdG9s
ZCB0byByZS1yZWFkIGZyb20gaGVyZS4KLSAgICBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9zaXRl
ZCA9IGZhbHNlOworICAgIG1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CiB9CiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWwtPm1fbGF5ZXJDb21wb3NpdGVkOworICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRl
ZDsKIH0KIAogRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygp
CiB7Ci0gICAgaWYgKCFtX2ludGVybmFsLT5tX2V4dGVuc2lvbnMpCi0gICAgICAgIG1faW50ZXJu
YWwtPm1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7Ci0gICAgcmV0
dXJuIG1faW50ZXJuYWwtPm1fZXh0ZW5zaW9ucy5nZXQoKTsKKyAgICBpZiAoIW1fZXh0ZW5zaW9u
cykKKyAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0KTsK
KyAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100678</attachid>
            <date>2011-07-13 09:02:15 -0700</date>
            <delta_ts>2011-07-18 14:53:37 -0700</delta_ts>
            <desc>use OpenGLShims resolver implementation</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>86116</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMjAyYzE1Li5iY2ViMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4
IEBACisyMDExLTA3LTEzICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29t
PgorCisgICAgICAgIFtRdF0gTWFrZSBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRyYW5zcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IE9w
ZW5HTFNoaW1zIHN5bWJvbCByZXNvbHZlciBmb3IgUXQKKworICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0UHJvY0FkZHJlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL09wZW5HTFNoaW1zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmJl
Z2luUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNEUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpib3VuZGlu
Z1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFp
bnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250
ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJi
dWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1w
bGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
c3ludGhlc2l6ZUdMRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
Om1hcmtMYXllckNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6Om1hcmtDb250ZXh0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6bGF5ZXJDb21wb3NpdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRFeHRlbnNpb25zKToKKwogMjAxMS0wNy0xMyAgSm9obiBLbm90dGVuYmVsdCAgPGpr
bm90dGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWZlcmVuY2UgR2VvbG9jYXRpb24gb2Jq
ZWN0IGZyb20gR2VvTm90aWZpZXIgYW5kIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IDhhOThhMmYuLjhmNWY0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zNjEwLDYg
KzM2MTAsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgewogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAogCiAgICAgICAgIElO
Q0xVREVQQVRIICs9ICQkUFdEL3BsYXRmb3JtL2dyYXBoaWNzL2dwdQorCisgICAgICAgIENPTkZJ
RyArPSBvcGVuZ2wtc2hpbXMKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01IVE1MPTEp
IHsKQEAgLTM2NTcsOCArMzY1OSwxNCBAQCBjb250YWlucyhDT05GSUcsIHRleG1hcCkgewogICAg
ICFzeW1iaWFuOiF3aW4zMi0qOmNvbnRhaW5zKFFUX0NPTkZJRywgb3BlbmdsKSB7CiAgICAgICAg
IEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5oCiAg
ICAgICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJH
TC5jcHAKKyAgICAgICAgQ09ORklHICs9IG9wZW5nbC1zaGltcwogICAgIH0KIH0gZWxzZSB7CiAg
ICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuaAogICAg
IFNPVVJDRVMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAogfQor
Citjb250YWlucyhDT05GSUcsIG9wZW5nbC1zaGltcykgeworICAgIEhFQURFUlMgKz0gcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaAorICAgIFNPVVJDRVMgKz0gcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCAxZDBmMmY4Li45
MWM2ZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmgKQEAgLTkxLDYgKzkxLDkgQEAgY2xhc3MgRXh0ZW5zaW9uczNEOwog
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKQogY2xhc3MgRXh0ZW5zaW9uczNET3Bl
bkdMOwogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCitjbGFzcyBFeHRlbnNpb25zM0RRdDsKKyNl
bmRpZgogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdlOwogY2xhc3MgSW1hZ2VEYXRhOwpA
QCAtODk5LDYgKzkwMiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkUmVuZGVyaW5nUmVzdWx0
cyh1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIGludCBwaXhlbHNTaXplKTsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oUVQpCisgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRFF0OworICAgIE93blB0
cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOworI2VuZGlmCisKICAgICBpbnQgbV9jdXJy
ZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKICAgICBib29sIG1faXNSZXNvdXJjZVNhZmU7CiAK
QEAgLTkwNyw3ICs5MTUsNyBAQCBwdWJsaWM6CiAgICAgUmV0YWluUHRyPFdlYkdMTGF5ZXI+IG1f
d2ViR0xMYXllcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEsp
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAg
IHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgU3RyaW5nIHNvdXJjZTsKICAgICAgICAgU3RyaW5n
IGxvZzsKQEAgLTkxNSwxMCArOTIzLDEyIEBAIHB1YmxpYzoKICAgICB9IFNoYWRlclNvdXJjZUVu
dHJ5OwogICAgIEhhc2hNYXA8UGxhdGZvcm0zRE9iamVjdCwgU2hhZGVyU291cmNlRW50cnk+IG1f
c2hhZGVyU291cmNlTWFwOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGZyaWVuZCBjbGFzcyBF
eHRlbnNpb25zM0RPcGVuR0w7CiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKIAog
ICAgIE93blB0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgogCiAg
ICAgQXR0cmlidXRlcyBtX2F0dHJzOwogICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+ID4gbV92ZXJ0
ZXhBcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL09wZW5HTFNoaW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL09wZW5HTFNoaW1zLmNwcAppbmRleCA5MmQ3OWY5Li4yNDJlZGViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3Bw
CkBAIC0xNyw3ICsxNyw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJM
RShXRUJHTCkKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IChQTEFURk9STShRVCkgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSkKIAogI2RlZmluZSBESVNBQkxFX1NISU1TCiAjaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKQEAgLTI2LDExICsyNiwyNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKFFUKQor
I2luY2x1ZGUgPFFMYXRpbjFTdHJpbmc+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKSAmJiBk
ZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2RlZmluZSBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5U
UlkoRnVuY3Rpb25OYW1lLCBzdWNjZXNzKSBcCisgICAgb3BlbkdMRnVuY3Rpb25UYWJsZSgpLT5G
dW5jdGlvbk5hbWUgPSA6OkZ1bmN0aW9uTmFtZQorI2Vsc2UKICNkZWZpbmUgQVNTSUdOX0ZVTkNU
SU9OX1RBQkxFX0VOVFJZKEZ1bmN0aW9uTmFtZSwgc3VjY2VzcykgXAogICAgIG9wZW5HTEZ1bmN0
aW9uVGFibGUoKS0+RnVuY3Rpb25OYW1lID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvbk5hbWUj
I1R5cGU+KGxvb2t1cE9wZW5HTEZ1bmN0aW9uQWRkcmVzcygjRnVuY3Rpb25OYW1lLCBzdWNjZXNz
KSkKKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiBQTEFURk9STShRVCkKK3N0
YXRpYyB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyKiBwcm9jTmFtZSkKK3sKKyAgICBy
ZXR1cm4gUUdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+Z2V0UHJvY0FkZHJlc3MoUUxhdGlu
MVN0cmluZyhwcm9jTmFtZSkpOworfQorI2Vsc2UKIHR5cGVkZWYgdm9pZCogKCpnbEdldFByb2NB
ZGRyZXNzVHlwZSkgKGNvbnN0IGNoYXIqIHByb2NOYW1lKTsKIHN0YXRpYyB2b2lkKiBnZXRQcm9j
QWRkcmVzcyhjb25zdCBjaGFyKiBwcm9jTmFtZSkKIHsKQEAgLTQ3LDYgKzYyLDcgQEAgc3RhdGlj
IHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIqIHByb2NOYW1lKQogICAgICAgICByZXR1
cm4gZGxzeW0oUlRMRF9ERUZBVUxULCBwcm9jTmFtZSk7CiAgICAgcmV0dXJuIGdldFByb2NBZGRy
ZXNzRnVuY3Rpb24ocHJvY05hbWUpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkKiBsb29rdXBP
cGVuR0xGdW5jdGlvbkFkZHJlc3MoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBib29sJiBzdWNj
ZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vT3BlbkdMU2hpbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L09wZW5HTFNoaW1zLmgKaW5kZXggYTQzMWIwMy4uZWZiZGY4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5oCkBAIC0xNyw3
ICsxNywxMSBAQAogICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKKyNpZiBQTEFURk9S
TShRVCkKKyNpbmNsdWRlIDxRR0xDb250ZXh0PgorI2Vsc2UKICNpbmNsdWRlIDxHTC9nbC5oPgor
I2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IF9PcGVuR0xGdW5jdGlvblRhYmxlIE9wZW5HTEZ1bmN0
aW9uVGFibGU7CiAKQEAgLTIyMyw0MyArMjI3LDU2IEBAIHR5cGVkZWYgc3RydWN0IF9PcGVuR0xG
dW5jdGlvblRhYmxlIHsKICNkZWZpbmUgZ2xBdHRhY2hTaGFkZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQXR0YWNoU2hhZGVyKQogI2RlZmluZSBnbEJpbmRB
dHRyaWJMb2NhdGlvbiAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5k
QXR0cmliTG9jYXRpb24pCiAjZGVmaW5lIGdsQmluZEJ1ZmZlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJpbmRCdWZmZXIpCi0jZGVmaW5lIGdsQmluZEZy
YW1lYnVmZmVyRVhUICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJpbmRG
cmFtZWJ1ZmZlcikKLSNkZWZpbmUgZ2xCaW5kUmVuZGVyYnVmZmVyRVhUICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZFJlbmRlcmJ1ZmZlcikKKyNkZWZpbmUgZ2xCaW5k
RnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIKKyNkZWZp
bmUgZ2xCaW5kRnJhbWVidWZmZXIgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsQmluZEZyYW1lYnVmZmVyKQorI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQgICAg
ICAgICAgICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIKKyNkZWZpbmUgZ2xCaW5kUmVuZGVyYnVm
ZmVyICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZFJlbmRlcmJ1
ZmZlcikKICNkZWZpbmUgZ2xCbGVuZENvbG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsQmxlbmRDb2xvcikKICNkZWZpbmUgZ2xCbGVuZEVxdWF0aW9uICAg
ICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxlbmRFcXVhdGlvbikK
ICNkZWZpbmUgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgICAgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKQogI2RlZmluZSBnbEJsZW5kRnVuY1Nl
cGFyYXRlICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCbGVuZEZ1bmNT
ZXBhcmF0ZSkKLSNkZWZpbmUgZ2xCbGl0RnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAg
TE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmxpdEZyYW1lYnVmZmVyKQorI2RlZmluZSBnbEJsaXRGcmFt
ZWJ1ZmZlckVYVCAgICAgICAgICAgICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlcgorI2RlZmluZSBn
bEJsaXRGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04o
Z2xCbGl0RnJhbWVidWZmZXIpCiAjZGVmaW5lIGdsQnVmZmVyRGF0YSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJ1ZmZlckRhdGEpCiAjZGVmaW5lIGdsQnVm
ZmVyU3ViRGF0YSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJ1
ZmZlclN1YkRhdGEpCi0jZGVmaW5lIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMpCisjZGVmaW5l
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cworI2RlZmluZSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMgICAgICAgICAgICAgICBM
T09LVVBfR0xfRlVOQ1RJT04oZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKQogI2RlZmluZSBnbENv
bXBpbGVTaGFkZXIgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xD
b21waWxlU2hhZGVyKQogI2RlZmluZSBnbENyZWF0ZVByb2dyYW0gICAgICAgICAgICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xDcmVhdGVQcm9ncmFtKQogI2RlZmluZSBnbENyZWF0
ZVNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xDcmVh
dGVTaGFkZXIpCiAjZGVmaW5lIGdsRGVsZXRlQnVmZmVycyAgICAgICAgICAgICAgICAgICAgICAg
IExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZUJ1ZmZlcnMpCi0jZGVmaW5lIGdsRGVsZXRlRnJh
bWVidWZmZXJzRVhUICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZUZy
YW1lYnVmZmVycykKKyNkZWZpbmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgICAgICAgICAgICAg
ICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMKKyNkZWZpbmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMgICAg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGVsZXRlRnJhbWVidWZmZXJzKQog
I2RlZmluZSBnbERlbGV0ZVByb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xEZWxldGVQcm9ncmFtKQotI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNF
WFQgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVSZW5kZXJidWZmZXJz
KQorI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQgICAgICAgICAgICAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMKKyNkZWZpbmUgZ2xEZWxldGVSZW5kZXJidWZmZXJzICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGVsZXRlUmVuZGVyYnVmZmVycykKICNkZWZpbmUg
Z2xEZWxldGVTaGFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9O
KGdsRGVsZXRlU2hhZGVyKQogI2RlZmluZSBnbERldGFjaFNoYWRlciAgICAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZXRhY2hTaGFkZXIpCiAjZGVmaW5lIGdsRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheSkKICNkZWZpbmUgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkpCi0jZGVmaW5lIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKQotI2RlZmluZSBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJERVhUICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRCkKKyNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCAg
ICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcikKKyNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCAgICAgICAg
ICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRAorI2RlZmluZSBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRCkKICNkZWZpbmUgZ2xHZW5CdWZmZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsR2VuQnVmZmVycykKLSNkZWZpbmUgZ2xHZW5lcmF0ZU1pcG1hcEVY
VCAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuZXJhdGVNaXBtYXAp
Ci0jZGVmaW5lIGdsR2VuRnJhbWVidWZmZXJzRVhUICAgICAgICAgICAgICAgICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbEdlbkZyYW1lYnVmZmVycykKLSNkZWZpbmUgZ2xHZW5SZW5kZXJidWZmZXJz
RVhUICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuUmVuZGVyYnVmZmVy
cykKKyNkZWZpbmUgZ2xHZW5lcmF0ZU1pcG1hcEVYVCAgICAgICAgICAgICAgICAgICAgZ2xHZW5l
cmF0ZU1pcG1hcAorI2RlZmluZSBnbEdlbmVyYXRlTWlwbWFwICAgICAgICAgICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5lcmF0ZU1pcG1hcCkKKyNkZWZpbmUgZ2xHZW5GcmFt
ZWJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMKKyNkZWZpbmUg
Z2xHZW5GcmFtZWJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9O
KGdsR2VuRnJhbWVidWZmZXJzKQorI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQgICAgICAg
ICAgICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMKKyNkZWZpbmUgZ2xHZW5SZW5kZXJidWZmZXJz
ICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuUmVuZGVyYnVmZmVy
cykKICNkZWZpbmUgZ2xHZXRBY3RpdmVBdHRyaWIgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsR2V0QWN0aXZlQXR0cmliKQogI2RlZmluZSBnbEdldEFjdGl2ZVVuaWZv
cm0gICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRBY3RpdmVVbmlm
b3JtKQogI2RlZmluZSBnbEdldEF0dGFjaGVkU2hhZGVycyAgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xHZXRBdHRhY2hlZFNoYWRlcnMpCiAjZGVmaW5lIGdsR2V0QXR0cmli
TG9jYXRpb24gICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEF0dHJp
YkxvY2F0aW9uKQorI2RlZmluZSBnbEdldEJ1ZmZlclBhcmFtZXRlcml2RVhUICAgICAgICAgICAg
ICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2CiAjZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYg
ICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEJ1ZmZlclBhcmFtZXRlcml2
KQotI2RlZmluZSBnbEdldEJ1ZmZlclBhcmFtZXRlcml2RVhUICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdikKLSNkZWZpbmUgZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdikKKyNkZWZpbmUgZ2xHZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2CisjZGVmaW5lIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgIExPT0tV
UF9HTF9GVU5DVElPTihnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KQogI2Rl
ZmluZSBnbEdldFByb2dyYW1JbmZvTG9nICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZXRQcm9ncmFtSW5mb0xvZykKICNkZWZpbmUgZ2xHZXRQcm9ncmFtaXYgICAgICAg
ICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0UHJvZ3JhbWl2KQotI2Rl
ZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikKKyNkZWZpbmUgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkVYVCAgICAgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdgor
I2RlZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2ICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikKICNkZWZpbmUgZ2xHZXRTaGFk
ZXJJbmZvTG9nICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0U2hh
ZGVySW5mb0xvZykKICNkZWZpbmUgZ2xHZXRTaGFkZXJpdiAgICAgICAgICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0U2hhZGVyaXYpCiAjZGVmaW5lIGdsR2V0U2hhZGVy
U291cmNlICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFNoYWRl
clNvdXJjZSkKQEAgLTI3MCwxMyArMjg3LDE3IEBAIHR5cGVkZWYgc3RydWN0IF9PcGVuR0xGdW5j
dGlvblRhYmxlIHsKICNkZWZpbmUgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiAgICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0VmVydGV4QXR0cmliaXYpCiAjZGVmaW5lIGdsR2V0
VmVydGV4QXR0cmliUG9pbnRlcnYgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2KQogI2RlZmluZSBnbElzQnVmZmVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc0J1ZmZlcikKLSNkZWZpbmUgZ2xJ
c0ZyYW1lYnVmZmVyRVhUICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGds
SXNGcmFtZWJ1ZmZlcikKKyNkZWZpbmUgZ2xJc0ZyYW1lYnVmZmVyRVhUICAgICAgICAgICAgICAg
ICAgICAgZ2xJc0ZyYW1lYnVmZmVyCisjZGVmaW5lIGdsSXNGcmFtZWJ1ZmZlciAgICAgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzRnJhbWVidWZmZXIpCiAjZGVmaW5l
IGdsSXNQcm9ncmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElP
TihnbElzUHJvZ3JhbSkKLSNkZWZpbmUgZ2xJc1JlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNSZW5kZXJidWZmZXIpCisjZGVmaW5lIGdsSXNS
ZW5kZXJidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgIGdsSXNSZW5kZXJidWZmZXIKKyNkZWZp
bmUgZ2xJc1JlbmRlcmJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsSXNSZW5kZXJidWZmZXIpCiAjZGVmaW5lIGdsSXNTaGFkZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzU2hhZGVyKQogI2RlZmluZSBnbExp
bmtQcm9ncmFtICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xM
aW5rUHJvZ3JhbSkKLSNkZWZpbmUgZ2xSZW5kZXJidWZmZXJTdG9yYWdlRVhUICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSkKLSNkZWZpbmUgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGds
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VFWFQgICAgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UKKyNkZWZpbmUgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGds
UmVuZGVyYnVmZmVyU3RvcmFnZSkKKyNkZWZpbmUgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVFWFQgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUKKyNkZWZpbmUgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGds
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKQogI2RlZmluZSBnbFNhbXBsZUNvdmVyYWdl
ICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xTYW1wbGVDb3ZlcmFn
ZSkKICNkZWZpbmUgZ2xTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsU2hhZGVyU291cmNlKQogI2RlZmluZSBnbFN0ZW5jaWxGdW5jU2VwYXJh
dGUgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xTdGVuY2lsRnVuY1NlcGFy
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA2ZDVmNTEwLi5iN2ExMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBl
ckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4
dHVyZU1hcHBlckdMLmNwcApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAotI2lmIGRlZmluZWQoVEVYTUFQ
X09QRU5HTF9FU18yKQorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPGNhaXJvL09wZW5HTFNo
aW1zLmg+CisjZWxpZiBkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikKICNpbmNsdWRlIDxHTEVT
Mi9nbDIuaD4KICNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KICNlbGlmIE9TKE1BQ19PU19YKQpA
QCAtMzcsNyArMzksNyBAQAogI2luY2x1ZGUgPEdML2dsLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBU
RVhNQVBfT1BFTkdMX0VTXzIKKyNpZiAhZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpICYmICFQ
TEFURk9STShRVCkKIGV4dGVybiAiQyIgewogICAgIHZvaWQgZ2xVbmlmb3JtMWYoR0xpbnQsIEdM
ZmxvYXQpOwogICAgIHZvaWQgZ2xVbmlmb3JtMWkoR0xpbnQsIEdMaW50KTsKQEAgLTM4OCw2ICsz
OTAsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6aW5pdGlhbGl6ZVNoYWRlcnMoKQogdm9pZCBU
ZXh0dXJlTWFwcGVyR0w6OmJlZ2luUGFpbnRpbmcoKQogewogI2lmIFBMQVRGT1JNKFFUKQorICAg
IGlmICghaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGds
R2V0SW50ZWdlcnYoR0xfQ1VSUkVOVF9QUk9HUkFNLCAmbV9kYXRhLT5wcmV2aW91c1Byb2dyYW0p
OwogICAgIFFQYWludGVyKiBwYWludGVyID0gbV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBwYWludGVyLT5zYXZlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4IDJlYmRjZmEu
LmEyMmIxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKIAogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCisj
aW5jbHVkZSA8Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKQEAgLTU1LDEwOSArNTYsNiBAQCB0eXBlZGVmIGNoYXIgR0xjaGFyOwogI2Rl
ZmluZSBHTF9ERVBUSDI0X1NURU5DSUw4IDB4ODhGMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChB
UElFTlRSWSkKLSNkZWZpbmUgQVBJRU5UUlkKLSNlbmRpZgotCi0jaWZkZWYgUVRfT1BFTkdMX0VT
XzIKLXR5cGVkZWYgR0xzaXplaXB0ciBHTHNpemVpcHRyVHlwZTsKLXR5cGVkZWYgR0xpbnRwdHIg
R0xpbnRwdHJUeXBlOwotI2Vsc2UKLXR5cGVkZWYgcHRyZGlmZl90IEdMc2l6ZWlwdHJUeXBlOwot
dHlwZWRlZiBwdHJkaWZmX3QgR0xpbnRwdHJUeXBlOwotI2VuZGlmCi0KLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsQWN0aXZlVGV4dHVyZVR5cGUpIChHTGVudW0pOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xBdHRhY2hTaGFkZXJUeXBlKSAoR0x1aW50LCBHTHVpbnQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xCaW5kQXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBHTHVpbnQs
IGNvbnN0IGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEJ1ZmZlclR5cGUp
IChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRGcmFtZWJ1
ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJp
bmRSZW5kZXJidWZmZXJUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xCbGVuZENvbG9yVHlwZSkgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYsIEdM
Y2xhbXBmKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRFcXVhdGlvblR5cGUpIChH
TGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVU
eXBlKShHTGVudW0sIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRnVu
Y1NlcGFyYXRlVHlwZSkoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0Fs
cGhhLCBHTGVudW0gZHN0QWxwaGEpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCdWZmZXJE
YXRhVHlwZSkgKEdMZW51bSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCosIEdMZW51bSk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlclN1YkRhdGFUeXBlKSAoR0xlbnVtLCBH
TGludHB0clR5cGUsIEdMc2l6ZWlwdHJUeXBlLCBjb25zdCBHTHZvaWQqKTsKLXR5cGVkZWYgR0xl
bnVtIChBUElFTlRSWSogZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzVHlwZSkgKEdMZW51bSk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbENvbXBpbGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5
cGVkZWYgR0x1aW50IChBUElFTlRSWSogZ2xDcmVhdGVQcm9ncmFtVHlwZSkgKCk7Ci10eXBlZGVm
IEdMdWludCAoQVBJRU5UUlkqIGdsQ3JlYXRlU2hhZGVyVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZUJ1ZmZlcnNUeXBlKSAoR0xzaXplaSwgY29uc3QgR0x1
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZUZyYW1lYnVmZmVyc1R5cGUp
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xE
ZWxldGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnNUeXBlKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbERldGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUpIChH
THVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRFR5cGUpIChHTGVudW0sIEdM
ZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
R2VuQnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsR2VuZXJhdGVNaXBtYXBUeXBlKSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEdlbkZyYW1lYnVmZmVyc1R5cGUpIChHTHNpemVpLCBHTHVpbnQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpLCBH
THVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QWN0aXZlQXR0cmliVHlwZSkg
KEdMdWludCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNo
YXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QWN0aXZlVW5pZm9ybVR5cGUpIChH
THVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFy
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUpIChH
THVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTHVpbnQqKTsKLXR5cGVkZWYgR0xpbnQgKEFQSUVO
VFJZKiBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0s
IEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xp
bnQqIHBhcmFtcyk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFByb2dyYW1JbmZvTG9n
VHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0UHJvZ3JhbWl2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlR5cGUp
IChHTGVudW0sIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0
U2hhZGVySW5mb0xvZ1R5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVt
LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJTb3VyY2VUeXBl
KSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiBHTGludCAoQVBJ
RU5UUlkqIGdsR2V0VW5pZm9ybUxvY2F0aW9uVHlwZSkgKEdMdWludCwgY29uc3QgY2hhciopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRVbmlmb3JtZnZUeXBlKSAoR0x1aW50LCBHTGlu
dCwgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRVbmlmb3JtaXZUeXBl
KSAoR0x1aW50LCBHTGludCwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0
VmVydGV4QXR0cmliZnZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliaXZUeXBlKSAoR0x1aW50LCBHTGVudW0s
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTHZvaWQqKik7Ci10eXBlZGVmIEdMYm9vbGVhbiAo
QVBJRU5UUlkqIGdsSXNCdWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChB
UElFTlRSWSogZ2xJc0ZyYW1lYnVmZmVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVh
biAoQVBJRU5UUlkqIGdsSXNQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIEdMYm9vbGVh
biAoQVBJRU5UUlkqIGdsSXNSZW5kZXJidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xi
b29sZWFuIChBUElFTlRSWSogZ2xJc1NoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xMaW5rUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xSZW5kZXJidWZmZXJTdG9yYWdlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTHNp
emVpLCBHTHNpemVpKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2FtcGxlQ292ZXJhZ2VU
eXBlKSAoR0xjbGFtcGYsIEdMYm9vbGVhbik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFNo
YWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0xp
bnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUp
IChHTGVudW0sIEdMZW51bSwgR0xpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMZW51bSwg
R0xlbnVtLCBHTGVudW0pOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZUeXBl
KSAoR0xpbnQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMWZ2
VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm0xaVR5cGUpIChHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xVbmlmb3JtMWl2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmZUeXBlKSAoR0xpbnQsIEdMZmxv
YXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMmZ2VHlwZSkg
KEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm0yaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVW5pZm9ybTJpdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTNmVHlwZSkgKEdMaW50LCBHTGZs
b2F0LCBHTGZsb2F0LCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bTNmdlR5cGUpIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xVbmlmb3JtM2lUeXBlKSAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2l2VHlwZSkgKEdMaW50LCBHTHNp
emVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGZU
eXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtNGZ2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25z
dCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aVR5cGUpIChH
TGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xVbmlmb3JtNGl2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSkgKEdMaW50LCBHTHNp
emVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25z
dCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXg0ZnZU
eXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xVc2VQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFZhbGlkYXRlUHJvZ3JhbVR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxv
YXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlKSAoR0x1
aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0
dHJpYjJmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjJmdlR5cGUpIChHTHVpbnQsIGNvbnN0
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliM2ZUeXBl
KSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliM2Z2VHlwZSkgKEdMdWludCwg
Y29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWI0
ZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxv
YXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRy
aWI0ZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlKSAoR0x1aW50LCBHTGludCwgR0xlbnVtLCBH
TGJvb2xlYW4sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCopOwotCiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2lmIFVTRShU
RVhUVVJFX01BUFBFUikKQEAgLTE2OCwxMyArNjYsMTAgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdyk7CisgICAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQz
RCosIEhvc3RXaW5kb3cqKTsKICAgICB+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpOwogCi0g
ICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV92YWxpZDsgfQotCiAgICAgUUdMV2lkZ2V0KiBn
ZXRWaWV3cG9ydEdMV2lkZ2V0KCk7Ci0gICAgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKSBjb25zdDsKICNlbmRpZgpAQCAt
MTgyLDEyMyArNzcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnQoUVBhaW50ZXIqLCBjb25z
dCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qLCBRV2lkZ2V0Kik7CiAgICAgUVJlY3RGIGJvdW5k
aW5nUmVjdCgpIGNvbnN0OwogCi0gICAgZ2xBY3RpdmVUZXh0dXJlVHlwZSBhY3RpdmVUZXh0dXJl
OwotICAgIGdsQXR0YWNoU2hhZGVyVHlwZSBhdHRhY2hTaGFkZXI7Ci0gICAgZ2xCaW5kQXR0cmli
TG9jYXRpb25UeXBlIGJpbmRBdHRyaWJMb2NhdGlvbjsKLSAgICBnbEJpbmRCdWZmZXJUeXBlIGJp
bmRCdWZmZXI7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXJUeXBlIGJpbmRGcmFtZWJ1ZmZlcjsKLSAg
ICBnbEJpbmRSZW5kZXJidWZmZXJUeXBlIGJpbmRSZW5kZXJidWZmZXI7Ci0gICAgZ2xCbGVuZENv
bG9yVHlwZSBibGVuZENvbG9yOwotICAgIGdsQmxlbmRFcXVhdGlvblR5cGUgYmxlbmRFcXVhdGlv
bjsKLSAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUgYmxlbmRFcXVhdGlvblNlcGFyYXRl
OwotICAgIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlIGJsZW5kRnVuY1NlcGFyYXRlOwotICAgIGds
QnVmZmVyRGF0YVR5cGUgYnVmZmVyRGF0YTsKLSAgICBnbEJ1ZmZlclN1YkRhdGFUeXBlIGJ1ZmZl
clN1YkRhdGE7Ci0gICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzVHlwZSBjaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzOwotICAgIGdsQ29tcGlsZVNoYWRlclR5cGUgY29tcGlsZVNoYWRlcjsKLSAgICBn
bENyZWF0ZVByb2dyYW1UeXBlIGNyZWF0ZVByb2dyYW07Ci0gICAgZ2xDcmVhdGVTaGFkZXJUeXBl
IGNyZWF0ZVNoYWRlcjsKLSAgICBnbERlbGV0ZUJ1ZmZlcnNUeXBlIGRlbGV0ZUJ1ZmZlcnM7Ci0g
ICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNUeXBlIGRlbGV0ZUZyYW1lYnVmZmVyczsKLSAgICBnbERl
bGV0ZVByb2dyYW1UeXBlIGRlbGV0ZVByb2dyYW07Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJz
VHlwZSBkZWxldGVSZW5kZXJidWZmZXJzOwotICAgIGdsRGVsZXRlU2hhZGVyVHlwZSBkZWxldGVT
aGFkZXI7Ci0gICAgZ2xEZXRhY2hTaGFkZXJUeXBlIGRldGFjaFNoYWRlcjsKLSAgICBnbERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheVR5cGUgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAgIGds
RW5hYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5OwotICAg
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJUeXBlIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyOwot
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRUeXBlIGZyYW1lYnVmZmVyVGV4dHVyZTJEOwotICAg
IGdsR2VuQnVmZmVyc1R5cGUgZ2VuQnVmZmVyczsKLSAgICBnbEdlbmVyYXRlTWlwbWFwVHlwZSBn
ZW5lcmF0ZU1pcG1hcDsKLSAgICBnbEdlbkZyYW1lYnVmZmVyc1R5cGUgZ2VuRnJhbWVidWZmZXJz
OwotICAgIGdsR2VuUmVuZGVyYnVmZmVyc1R5cGUgZ2VuUmVuZGVyYnVmZmVyczsKLSAgICBnbEdl
dEFjdGl2ZUF0dHJpYlR5cGUgZ2V0QWN0aXZlQXR0cmliOwotICAgIGdsR2V0QWN0aXZlVW5pZm9y
bVR5cGUgZ2V0QWN0aXZlVW5pZm9ybTsKLSAgICBnbEdldEF0dGFjaGVkU2hhZGVyc1R5cGUgZ2V0
QXR0YWNoZWRTaGFkZXJzOwotICAgIGdsR2V0QXR0cmliTG9jYXRpb25UeXBlIGdldEF0dHJpYkxv
Y2F0aW9uOwotICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldEJ1ZmZlclBhcmFtZXRl
cml2OwotICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZUeXBlIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2OwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2dU
eXBlIGdldFByb2dyYW1JbmZvTG9nOwotICAgIGdsR2V0UHJvZ3JhbWl2VHlwZSBnZXRQcm9ncmFt
aXY7Ci0gICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlR5cGUgZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXY7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSBnZXRTaGFkZXJJbmZvTG9n
OwotICAgIGdsR2V0U2hhZGVyaXZUeXBlIGdldFNoYWRlcml2OwotICAgIGdsR2V0U2hhZGVyU291
cmNlVHlwZSBnZXRTaGFkZXJTb3VyY2U7Ci0gICAgZ2xHZXRVbmlmb3JtZnZUeXBlIGdldFVuaWZv
cm1mdjsKLSAgICBnbEdldFVuaWZvcm1pdlR5cGUgZ2V0VW5pZm9ybWl2OwotICAgIGdsR2V0VW5p
Zm9ybUxvY2F0aW9uVHlwZSBnZXRVbmlmb3JtTG9jYXRpb247Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRy
aWJmdlR5cGUgZ2V0VmVydGV4QXR0cmliZnY7Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUg
Z2V0VmVydGV4QXR0cmliaXY7Ci0gICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlR5cGUgZ2V0
VmVydGV4QXR0cmliUG9pbnRlcnY7Ci0gICAgZ2xJc0J1ZmZlclR5cGUgaXNCdWZmZXI7Ci0gICAg
Z2xJc0ZyYW1lYnVmZmVyVHlwZSBpc0ZyYW1lYnVmZmVyOwotICAgIGdsSXNQcm9ncmFtVHlwZSBp
c1Byb2dyYW07Ci0gICAgZ2xJc1JlbmRlcmJ1ZmZlclR5cGUgaXNSZW5kZXJidWZmZXI7Ci0gICAg
Z2xJc1NoYWRlclR5cGUgaXNTaGFkZXI7Ci0gICAgZ2xMaW5rUHJvZ3JhbVR5cGUgbGlua1Byb2dy
YW07Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlVHlwZSByZW5kZXJidWZmZXJTdG9yYWdlOwot
ICAgIGdsU2FtcGxlQ292ZXJhZ2VUeXBlIHNhbXBsZUNvdmVyYWdlOwotICAgIGdsU2hhZGVyU291
cmNlVHlwZSBzaGFkZXJTb3VyY2U7Ci0gICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSBzdGVu
Y2lsRnVuY1NlcGFyYXRlOwotICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUgc3RlbmNpbE1h
c2tTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSBzdGVuY2lsT3BTZXBhcmF0
ZTsKLSAgICBnbFVuaWZvcm0xZlR5cGUgdW5pZm9ybTFmOwotICAgIGdsVW5pZm9ybTFmdlR5cGUg
dW5pZm9ybTFmdjsKLSAgICBnbFVuaWZvcm0xaVR5cGUgdW5pZm9ybTFpOwotICAgIGdsVW5pZm9y
bTFpdlR5cGUgdW5pZm9ybTFpdjsKLSAgICBnbFVuaWZvcm0yZlR5cGUgdW5pZm9ybTJmOwotICAg
IGdsVW5pZm9ybTJmdlR5cGUgdW5pZm9ybTJmdjsKLSAgICBnbFVuaWZvcm0yaVR5cGUgdW5pZm9y
bTJpOwotICAgIGdsVW5pZm9ybTJpdlR5cGUgdW5pZm9ybTJpdjsKLSAgICBnbFVuaWZvcm0zZlR5
cGUgdW5pZm9ybTNmOwotICAgIGdsVW5pZm9ybTNmdlR5cGUgdW5pZm9ybTNmdjsKLSAgICBnbFVu
aWZvcm0zaVR5cGUgdW5pZm9ybTNpOwotICAgIGdsVW5pZm9ybTNpdlR5cGUgdW5pZm9ybTNpdjsK
LSAgICBnbFVuaWZvcm00ZlR5cGUgdW5pZm9ybTRmOwotICAgIGdsVW5pZm9ybTRmdlR5cGUgdW5p
Zm9ybTRmdjsKLSAgICBnbFVuaWZvcm00aVR5cGUgdW5pZm9ybTRpOwotICAgIGdsVW5pZm9ybTRp
dlR5cGUgdW5pZm9ybTRpdjsKLSAgICBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlIHVuaWZvcm1NYXRy
aXgyZnY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4M2Z2VHlwZSB1bmlmb3JtTWF0cml4M2Z2OwotICAg
IGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUgdW5pZm9ybU1hdHJpeDRmdjsKLSAgICBnbFVzZVByb2dy
YW1UeXBlIHVzZVByb2dyYW07Ci0gICAgZ2xWYWxpZGF0ZVByb2dyYW1UeXBlIHZhbGlkYXRlUHJv
Z3JhbTsKLSAgICBnbFZlcnRleEF0dHJpYjFmVHlwZSB2ZXJ0ZXhBdHRyaWIxZjsKLSAgICBnbFZl
cnRleEF0dHJpYjFmdlR5cGUgdmVydGV4QXR0cmliMWZ2OwotICAgIGdsVmVydGV4QXR0cmliMmZU
eXBlIHZlcnRleEF0dHJpYjJmOwotICAgIGdsVmVydGV4QXR0cmliMmZ2VHlwZSB2ZXJ0ZXhBdHRy
aWIyZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUgdmVydGV4QXR0cmliM2Y7Ci0gICAgZ2xW
ZXJ0ZXhBdHRyaWIzZnZUeXBlIHZlcnRleEF0dHJpYjNmdjsKLSAgICBnbFZlcnRleEF0dHJpYjRm
VHlwZSB2ZXJ0ZXhBdHRyaWI0ZjsKLSAgICBnbFZlcnRleEF0dHJpYjRmdlR5cGUgdmVydGV4QXR0
cmliNGZ2OwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUgdmVydGV4QXR0cmliUG9pbnRl
cjsKLQotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cnM7CisgICAgR3Jh
cGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7
CiAgICAgUUdMV2lkZ2V0KiBtX2dsV2lkZ2V0OwogICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdM
V2lkZ2V0OwotICAgIFFSZWN0RiBtX2JvdW5kaW5nUmVjdDsKLSAgICBHTHVpbnQgbV90ZXh0dXJl
OwotICAgIEdMdWludCBtX2NhbnZhc0ZibzsKLSAgICBHTHVpbnQgbV9jdXJyZW50RmJvOwotICAg
IEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAgIGJvb2wgbV9sYXllckNvbXBvc2l0ZWQ7Ci0gICAg
TGlzdEhhc2hTZXQ8dW5zaWduZWQgaW50PiBtX3N5bnRoZXRpY0Vycm9yczsKLQotICAgIE93blB0
cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCog
Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKTsKLSAgICBib29sIG1fdmFsaWQ7CiB9
OwogCi0jaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpIAotI2RlZmluZSBHRVRfUFJPQ19BRERS
RVNTKFByb2MpIFByb2MKLSNlbHNlCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVp
bnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpOwotI2VuZGlm
Ci0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewog
I2lmIGRlZmluZWQgKFFUX09QRU5HTF9FU18yKQpAQCAtMzA4LDE3ICs5MiwxMSBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKICNlbmRpZgogfQogCi1H
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2luZG93KQot
ICAgIDogbV9hdHRycyhhdHRycykKK0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1faG9zdFdpbmRv
dyhob3N0V2luZG93KQogICAgICwgbV9nbFdpZGdldCgwKQogICAgICwgbV92aWV3cG9ydEdMV2lk
Z2V0KDApCi0gICAgLCBtX3RleHR1cmUoMCkKLSAgICAsIG1fY2FudmFzRmJvKDApCi0gICAgLCBt
X2N1cnJlbnRGYm8oMCkKLSAgICAsIG1fZGVwdGhCdWZmZXIoMCkKLSAgICAsIG1fbGF5ZXJDb21w
b3NpdGVkKGZhbHNlKQotICAgICwgbV92YWxpZCh0cnVlKQogewogICAgIG1fdmlld3BvcnRHTFdp
ZGdldCA9IGdldFZpZXdwb3J0R0xXaWRnZXQoKTsKIApAQCAtMzI3LDE1NCArMTA1LDE4IEBAIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAgICAgZWxzZQogICAgICAgICBtX2dsV2lkZ2V0ID0gbmV3
IFFHTFdpZGdldCgpOwogCi0gICAgaWYgKCFtX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9u
IGZhaWxlZC4iKTsKLSAgICAgICAgbV92YWxpZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gR2VvbWV0cnkgY2FuIGJlIHNldCB0byB6ZXJvIGJlY2F1c2UgbV9nbFdp
ZGdldCBpcyB1c2VkIG9ubHkgZm9yIGl0cyBRR0xDb250ZXh0LgogICAgIG1fZ2xXaWRnZXQtPnNl
dEdlb21ldHJ5KDAsIDAsIDAsIDApOwogCi0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAg
ICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKLSNlbHNlCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNp
bCkKLSAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2F0dHJzLmFu
dGlhbGlhcyA9IGZhbHNlOwotCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAotICAg
IGFjdGl2ZVRleHR1cmUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQWN0aXZlVGV4dHVyZSk7Ci0gICAg
YXR0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbEF0dGFjaFNoYWRlcik7Ci0gICAgYmlu
ZEF0dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRBdHRyaWJMb2NhdGlvbik7
Ci0gICAgYmluZEJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kQnVmZmVyKTsKLSAgICBi
aW5kRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEZyYW1lYnVmZmVyKTsKLSAg
ICBiaW5kUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRSZW5kZXJidWZmZXIp
OwotICAgIGJsZW5kQ29sb3IgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRDb2xvcik7Ci0gICAg
YmxlbmRFcXVhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uKTsKLSAgICBi
bGVuZEVxdWF0aW9uU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmxlbmRFcXVhdGlvblNl
cGFyYXRlKTsKLSAgICBibGVuZEZ1bmNTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVu
ZEZ1bmNTZXBhcmF0ZSk7Ci0gICAgYnVmZmVyRGF0YSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCdWZm
ZXJEYXRhKTsKLSAgICBidWZmZXJTdWJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlclN1
YkRhdGEpOwotICAgIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMgPSBHRVRfUFJPQ19BRERSRVNTKGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk7Ci0gICAgY29tcGlsZVNoYWRlciA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xDb21waWxlU2hhZGVyKTsKLSAgICBjcmVhdGVQcm9ncmFtID0gR0VUX1BST0NfQURE
UkVTUyhnbENyZWF0ZVByb2dyYW0pOwotICAgIGNyZWF0ZVNoYWRlciA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xDcmVhdGVTaGFkZXIpOwotICAgIGRlbGV0ZUJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNT
KGdsRGVsZXRlQnVmZmVycyk7Ci0gICAgZGVsZXRlRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQURE
UkVTUyhnbERlbGV0ZUZyYW1lYnVmZmVycyk7Ci0gICAgZGVsZXRlUHJvZ3JhbSA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xEZWxldGVQcm9ncmFtKTsKLSAgICBkZWxldGVSZW5kZXJidWZmZXJzID0gR0VU
X1BST0NfQUREUkVTUyhnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMpOwotICAgIGRlbGV0ZVNoYWRlciA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVTaGFkZXIpOwotICAgIGRldGFjaFNoYWRlciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xEZXRhY2hTaGFkZXIpOwotICAgIGRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAg
IGVuYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVTUyhnbEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KTsKLSAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik7Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJl
MkQgPSBHRVRfUFJPQ19BRERSRVNTKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQpOwotICAgIGdlbkJ1
ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2VuQnVmZmVycyk7Ci0gICAgZ2VuZXJhdGVNaXBt
YXAgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2VuZXJhdGVNaXBtYXApOwotICAgIGdlbkZyYW1lYnVm
ZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5GcmFtZWJ1ZmZlcnMpOwotICAgIGdlblJlbmRl
cmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2VuUmVuZGVyYnVmZmVycyk7Ci0gICAgZ2V0
QWN0aXZlQXR0cmliID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZUF0dHJpYik7Ci0gICAg
Z2V0QWN0aXZlVW5pZm9ybSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBY3RpdmVVbmlmb3JtKTsK
LSAgICBnZXRBdHRhY2hlZFNoYWRlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QXR0YWNoZWRT
aGFkZXJzKTsKLSAgICBnZXRBdHRyaWJMb2NhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRB
dHRyaWJMb2NhdGlvbik7Ci0gICAgZ2V0QnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYpOwotICAgIGdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KTsKLSAgICBnZXRQcm9ncmFtSW5mb0xvZyA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xHZXRQcm9ncmFtSW5mb0xvZyk7Ci0gICAgZ2V0UHJvZ3JhbWl2ID0gR0VUX1BST0NfQUREUkVT
UyhnbEdldFByb2dyYW1pdik7Ci0gICAgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOwotICAgIGdldFNoYWRl
ckluZm9Mb2cgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0U2hhZGVySW5mb0xvZyk7Ci0gICAgZ2V0
U2hhZGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0U2hhZGVyaXYpOwotICAgIGdldFNoYWRl
clNvdXJjZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJTb3VyY2UpOwotICAgIGdldFVu
aWZvcm1mdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtZnYpOwotICAgIGdldFVuaWZv
cm1pdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtaXYpOwotICAgIGdldFVuaWZvcm1M
b2NhdGlvbiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRVbmlmb3JtTG9jYXRpb24pOwotICAgIGdl
dFZlcnRleEF0dHJpYmZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYmZ2KTsK
LSAgICBnZXRWZXJ0ZXhBdHRyaWJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRy
aWJpdik7Ci0gICAgZ2V0VmVydGV4QXR0cmliUG9pbnRlcnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
R2V0VmVydGV4QXR0cmliUG9pbnRlcnYpOwotICAgIGlzQnVmZmVyID0gR0VUX1BST0NfQUREUkVT
UyhnbElzQnVmZmVyKTsKLSAgICBpc0ZyYW1lYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElz
RnJhbWVidWZmZXIpOwotICAgIGlzUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1Byb2dy
YW0pOwotICAgIGlzUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzUmVuZGVyYnVm
ZmVyKTsKLSAgICBpc1NoYWRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xJc1NoYWRlcik7Ci0gICAg
bGlua1Byb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsTGlua1Byb2dyYW0pOwotICAgIHJlbmRl
cmJ1ZmZlclN0b3JhZ2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsUmVuZGVyYnVmZmVyU3RvcmFnZSk7
Ci0gICAgc2FtcGxlQ292ZXJhZ2UgPSBHRVRfUFJPQ19BRERSRVNTKGdsU2FtcGxlQ292ZXJhZ2Up
OwotICAgIHNoYWRlclNvdXJjZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTaGFkZXJTb3VyY2UpOwot
ICAgIHN0ZW5jaWxGdW5jU2VwYXJhdGUgPSBHRVRfUFJPQ19BRERSRVNTKGdsU3RlbmNpbEZ1bmNT
ZXBhcmF0ZSk7Ci0gICAgc3RlbmNpbE1hc2tTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xT
dGVuY2lsTWFza1NlcGFyYXRlKTsKLSAgICBzdGVuY2lsT3BTZXBhcmF0ZSA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xTdGVuY2lsT3BTZXBhcmF0ZSk7Ci0gICAgdW5pZm9ybTFmID0gR0VUX1BST0NfQURE
UkVTUyhnbFVuaWZvcm0xZik7Ci0gICAgdW5pZm9ybTFmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtMWZ2KTsKLSAgICB1bmlmb3JtMWkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFp
KTsKLSAgICB1bmlmb3JtMWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xaXYpOwotICAg
IHVuaWZvcm0yZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmYpOwotICAgIHVuaWZvcm0y
ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJmdik7Ci0gICAgdW5pZm9ybTJpID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaSk7Ci0gICAgdW5pZm9ybTJpdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtMml2KTsKLSAgICB1bmlmb3JtM2YgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTNmKTsKLSAgICB1bmlmb3JtM2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0z
ZnYpOwotICAgIHVuaWZvcm0zaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2kpOwotICAg
IHVuaWZvcm0zaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNpdik7Ci0gICAgdW5pZm9y
bTRmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00Zik7Ci0gICAgdW5pZm9ybTRmdiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGZ2KTsKLSAgICB1bmlmb3JtNGkgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVW5pZm9ybTRpKTsKLSAgICB1bmlmb3JtNGl2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm00aXYpOwotICAgIHVuaWZvcm1NYXRyaXgyZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybU1hdHJpeDJmdik7Ci0gICAgdW5pZm9ybU1hdHJpeDNmdiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xVbmlmb3JtTWF0cml4M2Z2KTsKLSAgICB1bmlmb3JtTWF0cml4NGZ2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbFVuaWZvcm1NYXRyaXg0ZnYpOwotICAgIHVzZVByb2dyYW0gPSBHRVRfUFJPQ19B
RERSRVNTKGdsVXNlUHJvZ3JhbSk7Ci0gICAgdmFsaWRhdGVQcm9ncmFtID0gR0VUX1BST0NfQURE
UkVTUyhnbFZhbGlkYXRlUHJvZ3JhbSk7Ci0gICAgdmVydGV4QXR0cmliMWYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVmVydGV4QXR0cmliMWYpOwotICAgIHZlcnRleEF0dHJpYjFmdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZnYpOwotICAgIHZlcnRleEF0dHJpYjJmID0gR0VUX1BS
T0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjJmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIyZnYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMmZ2KTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIzZik7Ci0gICAgdmVydGV4QXR0cmliM2Z2ID0g
R0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjNmdik7Ci0gICAgdmVydGV4QXR0cmliNGYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliNGYpOwotICAgIHZlcnRleEF0dHJpYjRm
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0ZnYpOwotICAgIHZlcnRleEF0dHJp
YlBvaW50ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliUG9pbnRlcik7Ci0KLSAg
ICBpZiAoIW1fdmFsaWQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDog
QWxsIG5lZWRlZCBPcGVuR0wgZXh0ZW5zaW9ucyBhcmUgbm90IGF2YWlsYWJsZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMg
RkJPLgotICAgIGdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9jYW52YXNGYm8pOwot
Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUpOwotICAgIGdsVGV4UGFyYW1l
dGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7Ci0gICAgZ2xUZXhQ
YXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0Up
OwotICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBf
VE9fRURHRSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgMCk7Ci0KLSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgZ2VuUmVuZGVyYnVmZmVy
cygvKiBjb3VudCAqLyAxLCAmbV9kZXB0aEJ1ZmZlcik7Ci0KICNpZiAhZGVmaW5lZChRVF9PUEVO
R0xfRVNfMikKICAgICBnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwogICAgIGdsRW5hYmxlKEdM
X1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUpOwogI2VuZGlmCi0KLSAgICAvLyBCaW5kIGNhbnZh
cyBGQk8gYW5kIHNldCBpbml0aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgotICAgIG1fY3VycmVu
dEZibyA9IG1fY2FudmFzRmJvOwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAs
IDAuMCwgMC4wKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWwoKQogewotICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
aWYgKG1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewotICAgICAgICA6OmdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhC
dWZmZXIpOwotICAgICAgICBkZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fY2FudmFzRmJvKTsKLSAg
ICB9CiAgICAgZGVsZXRlIG1fZ2xXaWRnZXQ7CiAgICAgbV9nbFdpZGdldCA9IDA7CiB9CkBAIC00
OTcsNjkgKzEzOSwxMiBAQCBzdGF0aWMgaW5saW5lIHF1aW50MzIgc3dhcEJnclRvUmdiKHF1aW50
MzIgcGl4ZWwpCiAgICAgcmV0dXJuICgocGl4ZWwgPDwgMTYpICYgMHhmZjAwMDApIHwgKChwaXhl
bCA+PiAxNikgJiAweGZmKSB8IChwaXhlbCAmIDB4ZmYwMGZmMDApOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewot
ICAgIGlmICh3aWR0aCA9PSBtX2JvdW5kaW5nUmVjdC53aWR0aCgpICYmIGhlaWdodCA9PSBtX2Jv
dW5kaW5nUmVjdC5oZWlnaHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9ib3VuZGluZ1Jl
Y3QgPSBRUmVjdEYoUVBvaW50RigwLCAwKSwgUVNpemVGKHdpZHRoLCBoZWlnaHQpKTsKLQotICAg
IG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0KLSAgICAvLyBDcmVhdGUgY29sb3IgYnVmZmVy
Ci0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0
dXJlKTsKLSAgICBpZiAobV9hdHRycy5hbHBoYSkKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQz
RDo6UkdCQSwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsK
LSAgICBlbHNlCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgd2lkdGgsIGhlaWdo
dCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCAvKiBkYXRhICovIDApOwotICAgIGdsQmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwotCi0gICAgaWYgKG1fYXR0cnMuZGVwdGgp
IHsKLSAgICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCi0gICAgICAg
IGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0
aEJ1ZmZlcik7Ci0jaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICAgICAgcmVuZGVyYnVm
ZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwotI2Vsc2UKLSAgICAgICAg
aWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgs
IGhlaWdodCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7Ci0jZW5kaWYKLSAgICAgICAgYmluZFJlbmRlcmJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKLSAgICB9Ci0KLSAgICAv
LyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7Ci0gICAgZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUs
IDApOwotICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRo
QnVmZmVyKTsKLSNpZiAhZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICBpZiAobV9hdHRycy5z
dGVuY2lsKQotICAgICAgICBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQsIEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwotI2VuZGlmCi0K
LSAgICBHTGVudW0gc3RhdHVzID0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIpOwotICAgIGlmIChzdGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Ci0gICAgICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250
ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaW50IGNsZWFyRmxhZ3MgPSBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQlVGRkVSX0JJVDsKLSAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgY2xlYXJGbGFn
cyB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQlVGRkVSX0JJVDsKLSAgICBpZiAobV9hdHRy
cy5zdGVuY2lsKQotICAgICAgICBjbGVhckZsYWdzIHw9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVO
Q0lMX0JVRkZFUl9CSVQ7Ci0KLSAgICBnbENsZWFyKGNsZWFyRmxhZ3MpOwotICAgIGdsRmx1c2go
KTsKLX0KLQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVf
TUFQUEVSKQogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHks
IEJpdG1hcFRleHR1cmUqIG1hc2spIGNvbnN0CiB7CiAgICAgaWYgKHRleHR1cmVNYXBwZXItPmlz
T3BlbkdMQmFja2VkKCkpIHsKICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0
YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgICAgICB0ZXht
YXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0dXJlLCAhbV9hdHRycy5hbHBoYSwgRmxvYXRTaXplKDEs
IDEpLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ssIHRydWUgLyogZmxpcCAqLyk7
CisgICAgICAgIHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fY29tcG9zaXRvclRl
eHR1cmUsICFtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEsIEZsb2F0U2l6ZSgxLCAxKSwgdGFyZ2V0
UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCB0cnVlIC8qIGZsaXAgKi8pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC01NjksMjEgKzE1NCwyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZQogICAgIHBhaW50ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOwogICAgIHBhaW50ZXItPnNl
dE9wYWNpdHkob3BhY2l0eSk7CiAKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gbV9jb250ZXh0LT5t
X2N1cnJlbnRIZWlnaHQ7CisgICAgY29uc3QgaW50IHdpZHRoID0gbV9jb250ZXh0LT5tX2N1cnJl
bnRXaWR0aDsKKwogICAgIC8vIEFsdGVybmF0aXZlbHkgcmVhZCBwaXhlbHMgdG8gYSBtZW1vcnkg
YnVmZmVyLgotICAgIFFJbWFnZSBvZmZzY3JlZW5JbWFnZShtX2JvdW5kaW5nUmVjdC53aWR0aCgp
LCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBR
SW1hZ2Ugb2Zmc2NyZWVuSW1hZ2Uod2lkdGgsIGhlaWdodCwgUUltYWdlOjpGb3JtYXRfQVJHQjMy
KTsKICAgICBxdWludDMyKiBpbWFnZVBpeGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+
KG9mZnNjcmVlbkltYWdlLmJpdHMoKSk7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y2FudmFzRmJvKTsKLSAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIG1fYm91
bmRpbmdSZWN0LndpZHRoKCksIG1fYm91bmRpbmdSZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxz
KTsKLQotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIs
IG1fY3VycmVudEZibyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKKyAgICBnbFJlYWRQaXhlbHMoLyogeCAq
LyAwLCAvKiB5ICovIDAsIHdpZHRoLCBoZWlnaHQsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBH
cmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5t
X2JvdW5kRkJPKTsKIAogICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJpdHMsIGFu
ZCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVlZCBSR0Iz
MiBvciBBUkdCMzJfUE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCiAgICAgcXVp
bnQzMiogcGl4ZWxzU3JjID0gaW1hZ2VQaXhlbHM7Ci0gICAgY29uc3QgaW50IGhlaWdodCA9IHN0
YXRpY19jYXN0PGludD4obV9ib3VuZGluZ1JlY3QuaGVpZ2h0KCkpOwotICAgIGNvbnN0IGludCB3
aWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9ib3VuZGluZ1JlY3Qud2lkdGgoKSk7CiAgICAgY29u
c3QgaW50IGhhbGZIZWlnaHQgPSBoZWlnaHQgLyAyOwogICAgIGZvciAoaW50IHJvdyA9IDA7IHJv
dyA8IGhhbGZIZWlnaHQ7ICsrcm93KSB7CiAgICAgICAgIGNvbnN0IGludCB0YXJnZXRJZHggPSAo
aGVpZ2h0IC0gMSAtIHJvdykgKiB3aWR0aDsKQEAgLTYxMCw3ICsxOTUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZQogCiBRUmVjdEYgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Ym91bmRp
bmdSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9ib3VuZGluZ1JlY3Q7CisgICAgcmV0dXJu
IFFSZWN0RihRUG9pbnRGKDAsIDApLCBRU2l6ZUYobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwg
bV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
REludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3Jh
cGhpY3NJdGVtKiBvcHRpb24sIFFXaWRnZXQqIHdpZGdldCkKQEAgLTYyMyw3ICsyMDgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBj
b25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdMIGNvbnRl
eHQuCiAgICAgUUdMV2lkZ2V0KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdpZGdl
dCgpOwogICAgIGlmICh2aWV3cG9ydEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gbV92
aWV3cG9ydEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gcGFpbnRlci0+ZGV2aWNlKCkp
IHsKLSAgICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV90ZXh0dXJl
KTsKKyAgICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV9jb250ZXh0
LT5tX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjMy
LDEwICsyMTcsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHF1aW50MzIqIGltYWdl
UGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2UuYml0cygp
KTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgYmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOworICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5t
X2Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwotCi0gICAgYmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKKyAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+
bV9ib3VuZEZCTyk7CiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBh
bmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdAogICAgIC8vIFdlIG5lZWQgUkdC
MzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0LgpAQCAtNjY0
LDIzICsyNDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWlu
dGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHBhaW50ZXItPmRyYXdJ
bWFnZSgvKiB4ICovIDAsIC8qIHkgKi8gMCwgb2Zmc2NyZWVuSW1hZ2UpOwogfQogCi12b2lkKiBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHBy
b2MpCi17Ci0gICAgU3RyaW5nIGV4dFszXSA9IHsgIiIsICJBUkIiLCAiRVhUIiB9OwotCi0gICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICAgICAgU3RyaW5nIG5hbWVXaXRoRXh0
ID0gcHJvYyArIGV4dFtpXTsKLQotICAgICAgICB2b2lkKiBhZGRyID0gbV9nbFdpZGdldC0+Y29u
dGV4dCgpLT5nZXRQcm9jQWRkcmVzcyhRU3RyaW5nKG5hbWVXaXRoRXh0KSk7Ci0gICAgICAgIGlm
IChhZGRyKSAKLSAgICAgICAgICAgIHJldHVybiBhZGRyOwotICAgIH0KLQotICAgIExPR19FUlJP
UigiR3JhcGhpY3NDb250ZXh0M0Q6IERpZCBub3QgZmluZCBHTCBmdW5jdGlvbiAlcyIsIHByb2Mu
dXRmOCgpLmRhdGEoKSk7Ci0gICAgbV92YWxpZCA9IGZhbHNlOwotICAgIHJldHVybiAwOwotfQot
CiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7CiAgICAg
Ly8gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHJlbmRlcmlu
ZyBkaXJlY3RseSB0byB0aGUgSG9zdFdpbmRvdy4KQEAgLTY5MSwxNCArMjU4LDc3IEBAIFBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpCiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRl
eHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdywgYm9vbCkKLSAgICA6IG1faXNSZXNvdXJjZVNhZmUoZmFsc2UpLCBtX2ludGVybmFs
KGFkb3B0UHRyKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKGF0dHJzLCBob3N0V2luZG93
KSkpCisgICAgOiBtX2N1cnJlbnRXaWR0aCgwKQorICAgICwgbV9jdXJyZW50SGVpZ2h0KDApCisg
ICAgLCBtX2lzUmVzb3VyY2VTYWZlKGZhbHNlKQorICAgICwgbV9hdHRycyhhdHRycykKKyAgICAs
IG1fdGV4dHVyZSgwKQorICAgICwgbV9jb21wb3NpdG9yVGV4dHVyZSgwKQorICAgICwgbV9mYm8o
MCkKKyAgICAsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKDApCisgICAgLCBtX2xheWVyQ29tcG9zaXRl
ZChmYWxzZSkKKyAgICAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCgwKQorICAgICwgbV9ib3VuZEZC
TygwKQorICAgICwgbV9hY3RpdmVUZXh0dXJlKDApCisgICAgLCBtX2JvdW5kVGV4dHVyZTAoMCkK
KyAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5j
aWxCdWZmZXIoMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigwKQorICAgICwgbV9p
bnRlcm5hbChhZG9wdFB0cihuZXcgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCh0aGlzLCBob3N0
V2luZG93KSkpCiB7Ci0gICAgaWYgKCFtX2ludGVybmFsLT5pc1ZhbGlkKCkpCi0gICAgICAgIG1f
aW50ZXJuYWwuY2xlYXIoKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgIG1fYXR0
cnMuc3RlbmNpbCA9IGZhbHNlOworI2Vsc2UKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAg
ICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKKyNlbmRpZgorICAgIG1fYXR0cnMuYW50aWFsaWFz
ID0gZmFsc2U7CisKKyAgICBpZiAoIW1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkg
eworICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBRR0xXaWRnZXQgaW5pdGlh
bGl6YXRpb24gZmFpbGVkLiIpOworICAgICAgICBtX2ludGVybmFsID0gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7
CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKCFpbml0aWFsaXplZCkg
eworICAgICAgICBzdWNjZXNzID0gaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCk7CisgICAgICAgIGlu
aXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgIG1f
aW50ZXJuYWwgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ3Jl
YXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgorICAgIGdsR2VuRnJhbWVidWZmZXJzKC8q
IGNvdW50ICovIDEsICZtX2Zibyk7CisKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX2NvbXBvc2l0
b3JUZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlO
X0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAg
IGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCisgICAg
aWYgKG1fYXR0cnMuZGVwdGgpCisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAq
LyAxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworCisgICAgLy8gQmluZCBjYW52YXMgRkJPIGFu
ZCBzZXQgaW5pdGlhbCBjbGVhciBjb2xvciB0byBibGFjay4KKyAgICBtX2JvdW5kRkJPID0gbV9m
Ym87CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2Zibyk7CisgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogeworICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgaWYgKG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPmlzVmFsaWQoKSkgeworICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX2NvbXBvc2l0
b3JUZXh0dXJlKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3Rl
bmNpbEJ1ZmZlcik7CisgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX2Zibyk7Cisg
ICAgfQogfQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpw
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkKQEAgLTcwOCw3ICszMzgsNyBAQCBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEKCkKIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1UZXh0
dXJlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV90ZXh0dXJlOworICAgIHJl
dHVybiBtX2NvbXBvc2l0b3JUZXh0dXJlOwogfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpAQCAtNzQxLDEzICszNzEsNjMgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworICAg
IGlmICghbV9pbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCh3aWR0aCA9PSBt
X2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KSB8fCAoIW1faW50ZXJu
YWwpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRXaWR0aCA9IHdpZHRoOwogICAg
IG1fY3VycmVudEhlaWdodCA9IGhlaWdodDsKIAotICAgIG1faW50ZXJuYWwtPnJlc2hhcGUod2lk
dGgsIGhlaWdodCk7CisgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
KworICAgIC8vIENyZWF0ZSBjb2xvciBidWZmZXIKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICBpZiAobV9h
dHRycy5hbHBoYSkKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhl
aWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKKyAgICBlbHNlCisgICAgICAg
IGdsVGV4SW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8g
MCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQiwgd2lkdGgsIGhlaWdodCwgLyogYm9yZGVyICovIDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpSR0IsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRF
LCAvKiBkYXRhICovIDApOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDApOworCisgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKKyAgICAgICAgLy8gQ3Jl
YXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7
CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CisjZWxzZQorICAgICAgICBpZiAobV9h
dHRycy5zdGVuY2lsKQorICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNz
Q29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWln
aHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NP
TVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CisjZW5kaWYKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOworICAgIH0KKworICAgIC8v
IENvbnN0cnVjdCBjYW52YXMgRkJPLgorICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbXBvc2l0b3JU
ZXh0dXJlLCAwKTsKKyAgICBpZiAobV9hdHRycy5kZXB0aCkKKyAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisg
ICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVO
Q0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhT
dGVuY2lsQnVmZmVyKTsKKyNlbmRpZgorCisgICAgR0xlbnVtIHN0YXR1cyA9IGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOworICAgIGlmIChz
dGF0dXMgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7CisgICAg
ICAgIExPR19FUlJPUigiR3JhcGhpY3NDb250ZXh0M0Q6IENhbnZhcyBGQk8gaW5pdGlhbGl6YXRp
b24gZmFpbGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGNsZWFyRmxh
Z3MgPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRy
cy5kZXB0aCkKKyAgICAgICAgY2xlYXJGbGFncyB8PSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QlVGRkVSX0JJVDsKKyAgICBpZiAobV9hdHRycy5zdGVuY2lsKQorICAgICAgICBjbGVhckZsYWdz
IHw9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JVRkZFUl9CSVQ7CisKKyAgICBnbENsZWFy
KGNsZWFyRmxhZ3MpOworICAgIGdsRmx1c2goKTsKIH0KIAogSW50U2l6ZSBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdApAQCAtNzU4LDcgKzQzOCw3
IEBAIEludFNpemUgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkgY29uc3QKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0g
dGV4dHVyZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CisgICAgZ2xBY3RpdmVUZXh0
dXJlKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTc2
Niw3ICs0NDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0p
OwogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7
CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
R0MzRHNpemVpIG1heENvdW50LCBHQzNEc2l6ZWkqIGNvdW50LCBQbGF0Zm9ybTNET2JqZWN0KiBz
aGFkZXJzKQpAQCAtNzc3LDMzICs0NTcsMzMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG0KICAg
ICB9CiAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNo
YWRlcnMpOworICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3Vu
dCwgc2hhZGVycyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2Nh
dGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmluZEF0dHJpYkxvY2F0aW9u
KHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGdsQmluZEF0dHJpYkxv
Y2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCBidWZmZXIpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5iaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEJp
bmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPm1fY3VycmVudEZibyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1faW50ZXJuYWwtPm1fY2Fu
dmFzRmJvOwotICAgIG1faW50ZXJuYWwtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJu
YWwtPm1fY3VycmVudEZibyk7CisgICAgbV9ib3VuZEZCTyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1f
ZmJvOworICAgIGdsQmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9ib3VuZEZCTyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIodGFy
Z2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRl
cmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0Rl
bnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtODE1LDU1ICs0OTUsNTUg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENv
bG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdD
M0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KTsKKyAgICBnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5i
bGVuZEVxdWF0aW9uKG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2RlKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVS
R0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2Rl
UkdCLCBtb2RlQWxwaGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1v
ZGVBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51
bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgZ2xCbGVuZEZ1bmMoc2ZhY3RvciwgZGZhY3Rvcik7Ci19
ICAgICAgIAorfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZShH
QzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0Rl
bnVtIGRzdEFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNy
Y0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJH
Qiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVm
ZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1c2Fn
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsK
KyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdD
M0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRh
KHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0Rz
aXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0YSh0YXJn
ZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zm
c2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNoZWNrRnJh
bWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0Mz
RGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAt
OTA0LDcgKzU4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5jb21waWxl
U2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAtOTUy
LDcgKzYzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7
CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsK
KyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTk2NCw3ICs2NDQsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlz
KEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAgLTk4OCw3
ICs2NjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQg
aW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmZpbmlzaCgpCkBAIC0xMDA2LDEzICs2ODYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZm
ZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7
CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBH
QzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGludCBsZXZl
bCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFy
Z2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQs
IGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTEwMjQsNyArNzA0LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsK
IH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC0xMDM3
LDE0ICs3MTcsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAg
ICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFD
VElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFt
aXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdU
SCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxv
YyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6
ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5
cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5n
dGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVu
Z3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTA2OSwxNCArNzQ5LDE0IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0
UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNE
OjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dy
YW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNU
SVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUg
PSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0
aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAg
bV9pbnRlcm5hbC0+Z2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0p
LCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAg
ICBnbEdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgs
IG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAo
IW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC0xMDk3LDIwICs3Nzcs
MjAgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIAog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWwtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9h
dHRyczsKKyAgICByZXR1cm4gbV9hdHRyczsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEVycm9yKCkKIHsKLSAgICBpZiAobV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMu
c2l6ZSgpID4gMCkgewotICAgICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5iZWdpbigpOworICAgIGlmIChtX3N5
bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7CisgICAgICAgIExpc3RIYXNoU2V0PEdDM0RlbnVt
Pjo6aXRlcmF0b3IgaXRlciA9IG1fc3ludGhldGljRXJyb3JzLmJlZ2luKCk7CiAgICAgICAgIEdD
M0RlbnVtIGVyciA9ICppdGVyOwotICAgICAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9y
cy5yZW1vdmUoaXRlcik7CisgICAgICAgIG1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsK
ICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAKQEAgLTExMzYsNyArODE2LDcgQEAgR0MzRGJv
b2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNCdWZmZXIoYnVm
ZmVyKTsKKyAgICByZXR1cm4gZ2xJc0J1ZmZlcihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBH
cmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKQEAgLTExNTEsNyArODMx
LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZv
cm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1f
aW50ZXJuYWwtPmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAgIHJldHVybiBnbElzRnJh
bWVidWZmZXIoZnJhbWVidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQz
RDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTExNjAsNyArODQwLDcg
QEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5p
c1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQog
CiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCkBAIC0xMTY5LDcgKzg0OSw3IEBAIEdDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzUmVuZGVy
YnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNSZW5kZXJidWZmZXIocmVuZGVy
YnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMTE3OCw3ICs4NTgsNyBAQCBHQzNEYm9vbGVhbiBH
cmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAg
ICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1NoYWRlcihzaGFkZXIpOwor
ICAgIHJldHVybiBnbElzU2hhZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtMTIwMCw3
ICs4ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+bGlua1Byb2dyYW0o
cHJvZ3JhbSk7CisgICAgZ2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cGl4ZWxTdG9yZWkoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50IHBhcmFt
KQpAQCAtMTI1MSwxMyArOTMxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1
ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICNlbmRpZgotICAgIG1faW50ZXJuYWwtPnJlbmRlcmJ1ZmZlclN0b3Jh
Z2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVl
LCBHQzNEYm9vbGVhbiBpbnZlcnQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0
KTsKKyAgICBnbFNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQpCkBAIC0xMjgzLDcgKzk2Myw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgY29uc3QgU3Ry
aW5nJiBzb3VyCiAgICAgQ1N0cmluZyBzb3VyY2VDUyA9IHByZWZpeGVkU291cmNlLnV0ZjgoKTsK
ICAgICBjb25zdCBjaGFyKiBkYXRhID0gc291cmNlQ1MuZGF0YSgpOwogICAgIGludCBsZW5ndGgg
PSBwcmVmaXhlZFNvdXJjZS5sZW5ndGgoKTsKLSAgICBtX2ludGVybmFsLT5zaGFkZXJTb3VyY2Uo
KEdMdWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0aCk7CisgICAgZ2xT
aGFkZXJTb3VyY2UoKEdMdWludCkgc2hhZGVyLCAvKiBjb3VudCAqLyAxLCAmZGF0YSwgJmxlbmd0
aCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1
bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQpAQCAtMTI5NSw3ICs5NzUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJl
ZiwgR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2Vw
YXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50
IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7
CisgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCkBAIC0x
MzA3LDcgKzk4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1
aW50IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5zdGVuY2lsTWFza1NlcGFyYXRlKGZh
Y2UsIG1hc2spOworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVt
IHpmYWlsLCBHQzNEZW51bSB6cGFzcykKQEAgLTEzMTksNyArOTk5LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNE
ZW51bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7Cisg
ICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMzM3LDEyMSArMTAxNywxMjEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9j
YXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCog
YXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7
CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwg
R0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAs
IEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZv
cm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAg
IGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwg
djAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVu
aWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwg
R0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5
KTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9n
cmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ1OSw2MSArMTEzOSw2MSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihp
bmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYo
aW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwg
djAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxv
YXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEs
IHYyKTsKKyAgICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAg
Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZs
b2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRm
KGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0
ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50
IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6
ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJp
ZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE1MzEsNyAr
MTIxMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5h
bWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xNTQzLDcgKzEyMjMsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxv
YXQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsK
KyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNo
bWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNTU1LDcg
KzEyMzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAog
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCkBAIC0xNTYzLDcgKzEyNDMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0g
MDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0
M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBH
THNpemVpIHNpemUgPSAwOwogCkBAIC0xNTcxLDcgKzEyNTEsNyBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJv
Z3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcg
cmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTU4MiwxNCArMTI2MiwxNCBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2
YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFt
TmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1O
YW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUp
OwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xNTk3LDE0ICsxMjc3LDE0IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVu
Z3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hh
ZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAg
IEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxs
b2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1f
aW50ZXJuYWwtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsK
KyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAog
ICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNjE3LDE0
ICsxMjk3LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNo
YWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAm
bGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNI
QURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAg
ICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAo
IWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNv
dXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVyU291cmNl
KHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8p
OwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTY0NywxMyArMTMyNywxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgRwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTY2MSwx
OSArMTM0MSwxOSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IHJldHVybiBtX2ludGVybmFsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4
QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2
YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsK
KyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRy
aWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihp
bmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJh
bU5hbWUpCkBAIC0xNjgxLDcgKzEzNjEsNyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lk
KiBwb2ludGVyID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihp
bmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
M0RzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBA
IC0xNzAyLDcgKzEzODIsNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVCdWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygv
KiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwg
JmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIApAQCAtMTcxMCwyOCArMTM5MCwyOCBA
QCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVp
bnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQg
Ki8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhh
bmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgp
OworICAgIHJldHVybiBnbENyZWF0ZVByb2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAg
IG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7Cisg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVy
biBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsK
KyAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3Qg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQpAQCAtMTc0NSwzMSArMTQyNSwzMSBA
QCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZl
cikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJz
KDEsICZidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZm
ZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1l
YnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRl
cmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRl
cihzaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAt
MTc4MCwzMCArMTQ2MCwzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3lu
dGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpCiB7Ci0gICAgbV9pbnRlcm5hbC0+bV9zeW50
aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQoZXJyb3Ip
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVkKCkKIHsK
LSAgICBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgbV9sYXllckNv
bXBvc2l0ZWQgPSB0cnVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJrQ29udGV4
dENoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBBbnkgYWNjZWxlcmF0ZWQgY29tcG9zaXRvciBu
ZWVkcyB0byBiZSB0b2xkIHRvIHJlLXJlYWQgZnJvbSBoZXJlLgotICAgIG1faW50ZXJuYWwtPm1f
bGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBmYWxzZTsK
IH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQ7CisgICAgcmV0dXJuIG1f
bGF5ZXJDb21wb3NpdGVkOwogfQogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPm1fZXh0ZW5zaW9ucykKLSAg
ICAgICAgbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMz
RFF0KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zLmdldCgpOworICAgIGlm
ICghbV9leHRlbnNpb25zKQorICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0
ZW5zaW9uczNEUXQpOworICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101209</attachid>
            <date>2011-07-18 14:53:37 -0700</date>
            <delta_ts>2011-07-19 14:16:23 -0700</delta_ts>
            <desc>use OpenGLShims resolver implementation</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>72101</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ODQ0NzJiLi5jYjRmODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDExLTA3LTE4ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29t
PgorCisgICAgICAgIFtRdF0gTWFrZSBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRyYW5zcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0aW5n
IG5ldyByZXNvbHZlciBzaG91bGQgYmUgdHJhbnNwYXJlbnQsCisgICAgICAgIGV4aXN0aW5nIHRl
c3RzIHNob3VsZCBhcHBseS4KKworICAgICAgICBBZG9wdCBPcGVuR0xTaGltcyBzeW1ib2wgcmVz
b2x2ZXIgZm9yIFF0CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQ
cm9jQWRkcmVzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hp
bXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJi
dWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1w
bGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcik6CisKIDIwMTEtMDctMTggIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gQVNTRVJUSU9OIEZBSUxFRCBpbiBSZXNvdXJjZUhhbmRs
ZTo6c2V0RGVmZXJzTG9hZGluZyBjYXVzZXMgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZWE2NjY4
My4uNjk4ODUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM2MTQsNyArMzYxNCw5IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNEUXQuY3BwCiAKLSAgICAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1CisgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1CisKKyAgICBDT05GSUcgKz0gb3BlbmdsLXNoaW1zCiB9CiAKIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9NSFRNTD0xKSB7CkBAIC0zNjYyLDggKzM2NjQsMTQgQEAgY29udGFpbnMoQ09O
RklHLCB0ZXhtYXApIHsKICAgICAhc3ltYmlhbjohd2luMzItKjpjb250YWlucyhRVF9DT05GSUcs
IG9wZW5nbCkgewogICAgICAgICBIRUFERVJTICs9IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9U
ZXh0dXJlTWFwcGVyR0wuaAogICAgICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisgICAgICAgIENPTkZJRyArPSBvcGVuZ2wtc2hpbXMK
ICAgICB9CiB9IGVsc2UgewogICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmgKICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzTGF5ZXJRdC5jcHAKIH0KKworY29udGFpbnMoQ09ORklHLCBvcGVuZ2wtc2hpbXMpIHsKKyAg
ICBIRUFERVJTICs9IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKKyAgICBT
T1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcAorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hp
bXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hp
bXMuY3BwCmluZGV4IDkyZDc5ZjkuLjI0MmVkZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHAKQEAgLTE3LDcgKzE3
LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKFdFQkdMKQorI2lm
IEVOQUJMRShXRUJHTCkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
KQogCiAjZGVmaW5lIERJU0FCTEVfU0hJTVMKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgpAQCAt
MjYsMTEgKzI2LDI2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UUxh
dGluMVN0cmluZz4KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BF
TkdMX0VTXzIpCisjZGVmaW5lIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShGdW5jdGlvbk5h
bWUsIHN1Y2Nlc3MpIFwKKyAgICBvcGVuR0xGdW5jdGlvblRhYmxlKCktPkZ1bmN0aW9uTmFtZSA9
IDo6RnVuY3Rpb25OYW1lCisjZWxzZQogI2RlZmluZSBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5U
UlkoRnVuY3Rpb25OYW1lLCBzdWNjZXNzKSBcCiAgICAgb3BlbkdMRnVuY3Rpb25UYWJsZSgpLT5G
dW5jdGlvbk5hbWUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uTmFtZSMjVHlwZT4obG9va3Vw
T3BlbkdMRnVuY3Rpb25BZGRyZXNzKCNGdW5jdGlvbk5hbWUsIHN1Y2Nlc3MpKQorI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKFFUKQorc3RhdGljIHZvaWQqIGdl
dFByb2NBZGRyZXNzKGNvbnN0IGNoYXIqIHByb2NOYW1lKQoreworICAgIHJldHVybiBRR0xDb250
ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5nZXRQcm9jQWRkcmVzcyhRTGF0aW4xU3RyaW5nKHByb2NO
YW1lKSk7Cit9CisjZWxzZQogdHlwZWRlZiB2b2lkKiAoKmdsR2V0UHJvY0FkZHJlc3NUeXBlKSAo
Y29uc3QgY2hhciogcHJvY05hbWUpOwogc3RhdGljIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0
IGNoYXIqIHByb2NOYW1lKQogewpAQCAtNDcsNiArNjIsNyBAQCBzdGF0aWMgdm9pZCogZ2V0UHJv
Y0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUpCiAgICAgICAgIHJldHVybiBkbHN5bShSVExE
X0RFRkFVTFQsIHByb2NOYW1lKTsKICAgICByZXR1cm4gZ2V0UHJvY0FkZHJlc3NGdW5jdGlvbihw
cm9jTmFtZSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQqIGxvb2t1cE9wZW5HTEZ1bmN0aW9u
QWRkcmVzcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGJvb2wmIHN1Y2Nlc3MpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGlt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMu
aAppbmRleCBhNDMxYjAzLi5lZmJkZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKQEAgLTE3LDcgKzE3LDExIEBACiAg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1
ZGUgPFFHTENvbnRleHQ+CisjZWxzZQogI2luY2x1ZGUgPEdML2dsLmg+CisjZW5kaWYKIAogdHlw
ZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgT3BlbkdMRnVuY3Rpb25UYWJsZTsKIApA
QCAtMjIzLDQzICsyMjcsNTYgQEAgdHlwZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUg
ewogI2RlZmluZSBnbEF0dGFjaFNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xBdHRhY2hTaGFkZXIpCiAjZGVmaW5lIGdsQmluZEF0dHJpYkxvY2F0aW9u
ICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJpbmRBdHRyaWJMb2NhdGlv
bikKICNkZWZpbmUgZ2xCaW5kQnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsQmluZEJ1ZmZlcikKLSNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJFWFQg
ICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZEZyYW1lYnVmZmVyKQot
I2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xCaW5kUmVuZGVyYnVmZmVyKQorI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZlckVY
VCAgICAgICAgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcgorI2RlZmluZSBnbEJpbmRGcmFt
ZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5kRnJh
bWVidWZmZXIpCisjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgICAgICAg
IGdsQmluZFJlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5kUmVuZGVyYnVmZmVyKQogI2RlZmlu
ZSBnbEJsZW5kQ29sb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJ
T04oZ2xCbGVuZENvbG9yKQogI2RlZmluZSBnbEJsZW5kRXF1YXRpb24gICAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCbGVuZEVxdWF0aW9uKQogI2RlZmluZSBnbEJs
ZW5kRXF1YXRpb25TZXBhcmF0ZSAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xC
bGVuZEVxdWF0aW9uU2VwYXJhdGUpCiAjZGVmaW5lIGdsQmxlbmRGdW5jU2VwYXJhdGUgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJsZW5kRnVuY1NlcGFyYXRlKQotI2Rl
ZmluZSBnbEJsaXRGcmFtZWJ1ZmZlckVYVCAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xCbGl0RnJhbWVidWZmZXIpCisjZGVmaW5lIGdsQmxpdEZyYW1lYnVmZmVyRVhUICAg
ICAgICAgICAgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyCisjZGVmaW5lIGdsQmxpdEZyYW1lYnVm
ZmVyICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJsaXRGcmFtZWJ1
ZmZlcikKICNkZWZpbmUgZ2xCdWZmZXJEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsQnVmZmVyRGF0YSkKICNkZWZpbmUgZ2xCdWZmZXJTdWJEYXRhICAg
ICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQnVmZmVyU3ViRGF0YSkK
LSNkZWZpbmUgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cykKKyNkZWZpbmUgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzRVhUICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzCisjZGVm
aW5lIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5D
VElPTihnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMpCiAjZGVmaW5lIGdsQ29tcGlsZVNoYWRlciAg
ICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENvbXBpbGVTaGFkZXIp
CiAjZGVmaW5lIGdsQ3JlYXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbENyZWF0ZVByb2dyYW0pCiAjZGVmaW5lIGdsQ3JlYXRlU2hhZGVyICAgICAg
ICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENyZWF0ZVNoYWRlcikKICNk
ZWZpbmUgZ2xEZWxldGVCdWZmZXJzICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZV
TkNUSU9OKGdsRGVsZXRlQnVmZmVycykKLSNkZWZpbmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGVsZXRlRnJhbWVidWZmZXJzKQor
I2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCAgICAgICAgICAgICAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycworI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVycyAgICAgICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVGcmFtZWJ1ZmZlcnMpCiAjZGVmaW5lIGdsRGVs
ZXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERl
bGV0ZVByb2dyYW0pCi0jZGVmaW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMpCisjZGVmaW5lIGds
RGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVy
cworI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xEZWxldGVSZW5kZXJidWZmZXJzKQogI2RlZmluZSBnbERlbGV0ZVNoYWRl
ciAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVTaGFk
ZXIpCiAjZGVmaW5lIGdsRGV0YWNoU2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbERldGFjaFNoYWRlcikKICNkZWZpbmUgZ2xEaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KQogI2RlZmluZSBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKLSNkZWZpbmUg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9O
KGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIpCi0jZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkRFWFQgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKQorI2RlZmluZSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUICAgICAgICAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyCisjZGVmaW5lIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KQorI2RlZmluZSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUICAgICAgICAgICAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJECisjZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgICAgICAgICAg
ICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKQogI2RlZmlu
ZSBnbEdlbkJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJ
T04oZ2xHZW5CdWZmZXJzKQotI2RlZmluZSBnbEdlbmVyYXRlTWlwbWFwRVhUICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5lcmF0ZU1pcG1hcCkKLSNkZWZpbmUgZ2xH
ZW5GcmFtZWJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGds
R2VuRnJhbWVidWZmZXJzKQotI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5SZW5kZXJidWZmZXJzKQorI2RlZmluZSBn
bEdlbmVyYXRlTWlwbWFwRVhUICAgICAgICAgICAgICAgICAgICBnbEdlbmVyYXRlTWlwbWFwCisj
ZGVmaW5lIGdsR2VuZXJhdGVNaXBtYXAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9G
VU5DVElPTihnbEdlbmVyYXRlTWlwbWFwKQorI2RlZmluZSBnbEdlbkZyYW1lYnVmZmVyc0VYVCAg
ICAgICAgICAgICAgICAgICBnbEdlbkZyYW1lYnVmZmVycworI2RlZmluZSBnbEdlbkZyYW1lYnVm
ZmVycyAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5GcmFtZWJ1
ZmZlcnMpCisjZGVmaW5lIGdsR2VuUmVuZGVyYnVmZmVyc0VYVCAgICAgICAgICAgICAgICAgIGds
R2VuUmVuZGVyYnVmZmVycworI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnMgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5SZW5kZXJidWZmZXJzKQogI2RlZmluZSBn
bEdldEFjdGl2ZUF0dHJpYiAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04o
Z2xHZXRBY3RpdmVBdHRyaWIpCiAjZGVmaW5lIGdsR2V0QWN0aXZlVW5pZm9ybSAgICAgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEFjdGl2ZVVuaWZvcm0pCiAjZGVmaW5l
IGdsR2V0QXR0YWNoZWRTaGFkZXJzICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElP
TihnbEdldEF0dGFjaGVkU2hhZGVycykKICNkZWZpbmUgZ2xHZXRBdHRyaWJMb2NhdGlvbiAgICAg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QXR0cmliTG9jYXRpb24pCisj
ZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAgICAgICAgIGdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYKICNkZWZpbmUgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYpCi0jZGVmaW5lIGds
R2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bEdldEJ1ZmZlclBhcmFtZXRlcml2KQotI2RlZmluZSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2RVhUIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KQorI2RlZmluZSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYKKyNkZWZpbmUg
Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiAgTE9PS1VQX0dMX0ZVTkNUSU9O
KGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpCiAjZGVmaW5lIGdsR2V0UHJv
Z3JhbUluZm9Mb2cgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFBy
b2dyYW1JbmZvTG9nKQogI2RlZmluZSBnbEdldFByb2dyYW1pdiAgICAgICAgICAgICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRQcm9ncmFtaXYpCi0jZGVmaW5lIGdsR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KQorI2RlZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2RVhUICAgICAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2CisjZGVmaW5lIGdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KQogI2RlZmluZSBnbEdldFNoYWRlckluZm9Mb2cgICAg
ICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJJbmZvTG9nKQog
I2RlZmluZSBnbEdldFNoYWRlcml2ICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xHZXRTaGFkZXJpdikKICNkZWZpbmUgZ2xHZXRTaGFkZXJTb3VyY2UgICAgICAg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0U2hhZGVyU291cmNlKQpAQCAt
MjcwLDEzICsyODcsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgewog
I2RlZmluZSBnbEdldFZlcnRleEF0dHJpYml2ICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xHZXRWZXJ0ZXhBdHRyaWJpdikKICNkZWZpbmUgZ2xHZXRWZXJ0ZXhBdHRyaWJQ
b2ludGVydiAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0VmVydGV4QXR0cmli
UG9pbnRlcnYpCiAjZGVmaW5lIGdsSXNCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExPT0tVUF9HTF9GVU5DVElPTihnbElzQnVmZmVyKQotI2RlZmluZSBnbElzRnJhbWVidWZmZXJF
WFQgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc0ZyYW1lYnVmZmVy
KQorI2RlZmluZSBnbElzRnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgICBnbElzRnJh
bWVidWZmZXIKKyNkZWZpbmUgZ2xJc0ZyYW1lYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAg
TE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNGcmFtZWJ1ZmZlcikKICNkZWZpbmUgZ2xJc1Byb2dyYW0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNQcm9ncmFt
KQotI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyRVhUICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xJc1JlbmRlcmJ1ZmZlcikKKyNkZWZpbmUgZ2xJc1JlbmRlcmJ1ZmZlckVY
VCAgICAgICAgICAgICAgICAgICAgZ2xJc1JlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbElzUmVuZGVy
YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc1JlbmRl
cmJ1ZmZlcikKICNkZWZpbmUgZ2xJc1NoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNTaGFkZXIpCiAjZGVmaW5lIGdsTGlua1Byb2dyYW0gICAg
ICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbExpbmtQcm9ncmFtKQot
I2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJTdG9yYWdlKQotI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUVYVCAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpCisjZGVmaW5lIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCAgICAg
ICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2UgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJT
dG9yYWdlKQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCAgICBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUpCiAjZGVmaW5lIGdsU2FtcGxlQ292ZXJhZ2UgICAgICAgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbFNhbXBsZUNvdmVyYWdlKQogI2RlZmluZSBn
bFNoYWRlclNvdXJjZSAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04o
Z2xTaGFkZXJTb3VyY2UpCiAjZGVmaW5lIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSAgICAgICAgICAg
ICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBl
ckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJl
TWFwcGVyR0wuY3BwCmluZGV4IDZkNWY1MTAuLmI3YTExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIp
CisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KKyNlbGlm
IGRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2lu
Y2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgogI2VsaWYgT1MoTUFDX09TX1gpCkBAIC0zNyw3ICszOSw3
IEBACiAjaW5jbHVkZSA8R0wvZ2wuaD4KICNlbmRpZgogCi0jaWZuZGVmIFRFWE1BUF9PUEVOR0xf
RVNfMgorI2lmICFkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikgJiYgIVBMQVRGT1JNKFFUKQog
ZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBnbFVuaWZvcm0xZihHTGludCwgR0xmbG9hdCk7CiAgICAg
dm9pZCBnbFVuaWZvcm0xaShHTGludCwgR0xpbnQpOwpAQCAtMzg4LDYgKzM5MCw5IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjppbml0aWFsaXplU2hhZGVycygpCiB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6YmVnaW5QYWludGluZygpCiB7CiAjaWYgUExBVEZPUk0oUVQpCisgICAgaWYgKCFpbml0aWFs
aXplT3BlbkdMU2hpbXMoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ2xHZXRJbnRlZ2VydihH
TF9DVVJSRU5UX1BST0dSQU0sICZtX2RhdGEtPnByZXZpb3VzUHJvZ3JhbSk7CiAgICAgUVBhaW50
ZXIqIHBhaW50ZXIgPSBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHBhaW50ZXIt
PnNhdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggMmViZGNmYS4uNzJiMjg4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQzRC5oIgogCiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKKyNpbmNsdWRlIDxjYWly
by9PcGVuR0xTaGltcy5oPgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpA
QCAtNTUsMTA5ICs1Niw2IEBAIHR5cGVkZWYgY2hhciBHTGNoYXI7CiAjZGVmaW5lIEdMX0RFUFRI
MjRfU1RFTkNJTDggMHg4OEYwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEFQSUVOVFJZKQotI2Rl
ZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xfRVNfMgotdHlwZWRlZiBH
THNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0ciBHTGludHB0clR5cGU7
Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIHB0cmRp
ZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xB
Y3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEF0
dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwgY29uc3QgY2hhciop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVmZmVyVHlwZSkgKEdM
ZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZFJlbmRlcmJ1ZmZl
clR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5k
Q29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYpOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdMZW51bSk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUpKEdMZW51bSwg
R0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBl
KShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBk
c3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRhdGFUeXBlKSAoR0xl
bnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdMaW50cHRyVHlwZSwg
R0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBHTGVudW0gKEFQSUVOVFJZ
KiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTHVpbnQg
KEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVkZWYgR0x1aW50IChBUElF
TlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwg
Y29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVByb2dyYW1U
eXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUmVuZGVyYnVm
ZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlw
ZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0s
IEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5CdWZmZXJzVHlw
ZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5lcmF0
ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
R2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAoR0x1aW50LCBHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdMdWludCwgR0x1aW50
LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdMdWludCwgR0xzaXpl
aSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0QXR0
cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlKSAoR0x1aW50
LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xH
ZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xl
bnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJJbmZvTG9n
VHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdM
c2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRV
bmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUpIChHTHVpbnQsIEdM
aW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJm
dlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRS
WSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlKSAoR0x1
aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJ
c0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElz
RnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSog
Z2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSog
Z2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVO
VFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkp
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5cGUpIChHTGNsYW1w
ZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hhZGVyU291cmNlVHlw
ZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xl
bnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE1h
c2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51
bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUpIChHTGludCwgR0xm
bG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZUeXBlKSAoR0xpbnQs
IEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVu
aWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAoR0xpbnQsIEdMc2l6
ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJp
VHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xV
bmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQs
IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2Z2VHlwZSkgKEdM
aW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdM
aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5cGUpIChHTGludCwg
R0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdMaW50LCBHTGludCwg
R0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00
aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVh
biwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0
cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUpIChHTGludCwg
R0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZUeXBlKSAo
R0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUpIChHTHVpbnQsIGNv
bnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xm
bG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChH
THVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4
QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xz
aXplaSwgY29uc3QgR0x2b2lkKik7Ci0KIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQpAQCAtMTgyLDk3ICs4MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFFQYWludGVyKiwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwogICAgIFFSZWN0RiBi
b3VuZGluZ1JlY3QoKSBjb25zdDsKIAotICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0aXZlVGV4
dHVyZTsKLSAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwotICAgIGdsQmluZEF0
dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247Ci0gICAgZ2xCaW5kQnVmZmVyVHlw
ZSBiaW5kQnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyVHlwZSBiaW5kRnJhbWVidWZmZXI7
Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVyOwotICAgIGdsQmxl
bmRDb2xvclR5cGUgYmxlbmRDb2xvcjsKLSAgICBnbEJsZW5kRXF1YXRpb25UeXBlIGJsZW5kRXF1
YXRpb247Ci0gICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5kRXF1YXRpb25TZXBh
cmF0ZTsKLSAgICBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNTZXBhcmF0ZTsKLSAg
ICBnbEJ1ZmZlckRhdGFUeXBlIGJ1ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhVHlwZSBi
dWZmZXJTdWJEYXRhOwotICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUgY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1czsKLSAgICBnbENvbXBpbGVTaGFkZXJUeXBlIGNvbXBpbGVTaGFkZXI7Ci0g
ICAgZ2xDcmVhdGVQcm9ncmFtVHlwZSBjcmVhdGVQcm9ncmFtOwotICAgIGdsQ3JlYXRlU2hhZGVy
VHlwZSBjcmVhdGVTaGFkZXI7Ci0gICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBkZWxldGVCdWZmZXJz
OwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1ZmZlcnM7Ci0gICAg
Z2xEZWxldGVQcm9ncmFtVHlwZSBkZWxldGVQcm9ncmFtOwotICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVyc1R5cGUgZGVsZXRlUmVuZGVyYnVmZmVyczsKLSAgICBnbERlbGV0ZVNoYWRlclR5cGUgZGVs
ZXRlU2hhZGVyOwotICAgIGdsRGV0YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFkZXI7Ci0gICAgZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheTsK
LSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cjsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZlclRleHR1cmUyRDsK
LSAgICBnbEdlbkJ1ZmZlcnNUeXBlIGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1hcFR5
cGUgZ2VuZXJhdGVNaXBtYXA7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlIGdlbkZyYW1lYnVm
ZmVyczsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1ZmZlcnM7Ci0gICAg
Z2xHZXRBY3RpdmVBdHRyaWJUeXBlIGdldEFjdGl2ZUF0dHJpYjsKLSAgICBnbEdldEFjdGl2ZVVu
aWZvcm1UeXBlIGdldEFjdGl2ZVVuaWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBl
IGdldEF0dGFjaGVkU2hhZGVyczsKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSBnZXRBdHRy
aWJMb2NhdGlvbjsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRCdWZmZXJQYXJh
bWV0ZXJpdjsKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2VHlwZSBn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFByb2dyYW1JbmZv
TG9nVHlwZSBnZXRQcm9ncmFtSW5mb0xvZzsKLSAgICBnbEdldFByb2dyYW1pdlR5cGUgZ2V0UHJv
Z3JhbWl2OwotICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUgZ2V0U2hhZGVySW5m
b0xvZzsKLSAgICBnbEdldFNoYWRlcml2VHlwZSBnZXRTaGFkZXJpdjsKLSAgICBnbEdldFNoYWRl
clNvdXJjZVR5cGUgZ2V0U2hhZGVyU291cmNlOwotICAgIGdsR2V0VW5pZm9ybWZ2VHlwZSBnZXRV
bmlmb3JtZnY7Ci0gICAgZ2xHZXRVbmlmb3JtaXZUeXBlIGdldFVuaWZvcm1pdjsKLSAgICBnbEdl
dFVuaWZvcm1Mb2NhdGlvblR5cGUgZ2V0VW5pZm9ybUxvY2F0aW9uOwotICAgIGdsR2V0VmVydGV4
QXR0cmliZnZUeXBlIGdldFZlcnRleEF0dHJpYmZ2OwotICAgIGdsR2V0VmVydGV4QXR0cmliaXZU
eXBlIGdldFZlcnRleEF0dHJpYml2OwotICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBl
IGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBlIGlzQnVmZmVyOwot
ICAgIGdsSXNGcmFtZWJ1ZmZlclR5cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBnbElzUHJvZ3JhbVR5
cGUgaXNQcm9ncmFtOwotICAgIGdsSXNSZW5kZXJidWZmZXJUeXBlIGlzUmVuZGVyYnVmZmVyOwot
ICAgIGdsSXNTaGFkZXJUeXBlIGlzU2hhZGVyOwotICAgIGdsTGlua1Byb2dyYW1UeXBlIGxpbmtQ
cm9ncmFtOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVyYnVmZmVyU3RvcmFn
ZTsKLSAgICBnbFNhbXBsZUNvdmVyYWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsKLSAgICBnbFNoYWRl
clNvdXJjZVR5cGUgc2hhZGVyU291cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUg
c3RlbmNpbEZ1bmNTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlIHN0ZW5j
aWxNYXNrU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUgc3RlbmNpbE9wU2Vw
YXJhdGU7Ci0gICAgZ2xVbmlmb3JtMWZUeXBlIHVuaWZvcm0xZjsKLSAgICBnbFVuaWZvcm0xZnZU
eXBlIHVuaWZvcm0xZnY7Ci0gICAgZ2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0xaTsKLSAgICBnbFVu
aWZvcm0xaXZUeXBlIHVuaWZvcm0xaXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBlIHVuaWZvcm0yZjsK
LSAgICBnbFVuaWZvcm0yZnZUeXBlIHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlmb3JtMmlUeXBlIHVu
aWZvcm0yaTsKLSAgICBnbFVuaWZvcm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0gICAgZ2xVbmlmb3Jt
M2ZUeXBlIHVuaWZvcm0zZjsKLSAgICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZvcm0zZnY7Ci0gICAg
Z2xVbmlmb3JtM2lUeXBlIHVuaWZvcm0zaTsKLSAgICBnbFVuaWZvcm0zaXZUeXBlIHVuaWZvcm0z
aXY7Ci0gICAgZ2xVbmlmb3JtNGZUeXBlIHVuaWZvcm00ZjsKLSAgICBnbFVuaWZvcm00ZnZUeXBl
IHVuaWZvcm00ZnY7Ci0gICAgZ2xVbmlmb3JtNGlUeXBlIHVuaWZvcm00aTsKLSAgICBnbFVuaWZv
cm00aXZUeXBlIHVuaWZvcm00aXY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSB1bmlmb3Jt
TWF0cml4MmZ2OwotICAgIGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9ybU1hdHJpeDNmdjsK
LSAgICBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7Ci0gICAgZ2xVc2VQ
cm9ncmFtVHlwZSB1c2VQcm9ncmFtOwotICAgIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSB2YWxpZGF0
ZVByb2dyYW07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0cmliMWY7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWIxZnZUeXBlIHZlcnRleEF0dHJpYjFmdjsKLSAgICBnbFZlcnRleEF0dHJp
YjJmVHlwZSB2ZXJ0ZXhBdHRyaWIyZjsKLSAgICBnbFZlcnRleEF0dHJpYjJmdlR5cGUgdmVydGV4
QXR0cmliMmZ2OwotICAgIGdsVmVydGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0dHJpYjNmOwotICAg
IGdsVmVydGV4QXR0cmliM2Z2VHlwZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRy
aWI0ZlR5cGUgdmVydGV4QXR0cmliNGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlIHZlcnRl
eEF0dHJpYjRmdjsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlIHZlcnRleEF0dHJpYlBv
aW50ZXI7Ci0KICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOwogICAg
IEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7CkBA
IC0yODgsMTcgKzk1LDkgQEAgcHVibGljOgogICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9l
eHRlbnNpb25zOwogCiBwcml2YXRlOgotCi0gICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3Qg
U3RyaW5nJiBwcm9jKTsKICAgICBib29sIG1fdmFsaWQ7CiB9OwogCi0jaWYgZGVmaW5lZCAoUVRf
T1BFTkdMX0VTXzIpIAotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNl
Ci0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNU
eXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpOwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIGRlZmluZWQgKFFUX09QRU5H
TF9FU18yKQpAQCAtMzQ2LDEwNCArMTQ1LDE5IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAK
ICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgYWN0aXZlVGV4dHVyZSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIgPSBHRVRf
UFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKLSAgICBiaW5kQXR0cmliTG9jYXRpb24gPSBH
RVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKLSAgICBiaW5kQnVmZmVyID0g
R0VUX1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIg
PSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xvciA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKLSAgICBibGVuZEVxdWF0aW9uID0gR0VU
X1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24pOwotICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOwotICAgIGJsZW5k
RnVuY1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKLSAg
ICBidWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1ZmZl
clN1YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFk
ZXIpOwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJvZ3Jh
bSk7Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7
Ci0gICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsK
LSAgICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVi
dWZmZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVBy
b2dyYW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVs
ZXRlUmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhn
bERlbGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERl
dGFjaFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQURE
UkVTUyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAg
IGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2VuRnJhbWVidWZmZXJzID0gR0VUX1BST0NfQURE
UkVTUyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKLSAgICBnZXRBY3RpdmVBdHRyaWIgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKLSAgICBnZXRBY3RpdmVVbmlmb3JtID0g
R0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOwotICAgIGdldEF0dGFjaGVkU2hh
ZGVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpOwotICAgIGdldEF0
dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKLSAg
ICBnZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOwotICAg
IGdldFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9n
KTsKLSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2KTsK
LSAgICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKLSAgICBnZXRTaGFkZXJpdiA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAgZ2V0U2hhZGVyU291cmNlID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BST0NfQURE
UkVTUyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliZnYpOwotICAgIGdldFZlcnRleEF0dHJp
Yml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2KTsKLSAgICBnZXRWZXJ0
ZXhBdHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOwotICAg
IGlzRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0gICAg
aXNQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5kZXJi
dWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOwotICAgIGlzU2hhZGVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVDb3ZlcmFn
ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291cmNl
ID0gR0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNTZXBh
cmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAgICBzdGVu
Y2lsTWFza1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUp
OwotICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNl
cGFyYXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmKTsK
LSAgICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOwotICAgIHVu
aWZvcm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOwotICAgIHVuaWZvcm0xaXYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7Ci0gICAgdW5pZm9ybTJmID0gR0VUX1BS
T0NfQUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3JtMmkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5p
Zm9ybTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYp
OwotICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2YpOwotICAgIHVu
aWZvcm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7Ci0gICAgdW5pZm9ybTNp
ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAgICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19BRERS
RVNTKGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3JtNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVu
aWZvcm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGkp
OwotICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7Ci0gICAg
dW5pZm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsK
LSAgICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgz
ZnYpOwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1h
dHJpeDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFt
KTsKLSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQcm9n
cmFtKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRy
aWIxZik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0
dHJpYjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4
QXR0cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0
ZXhBdHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJpYjNmID0gR0VUX1BST0NfQUREUkVTUyhnbFZl
cnRleEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VmVydGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJFU1Mo
Z2xWZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4QXR0cmliNGZ2ID0gR0VUX1BST0NfQUREUkVT
UyhnbFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVydGV4QXR0cmliUG9pbnRlciA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsKLQotICAgIGlmICghbV92YWxpZCkgewot
ICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBl
eHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6
ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWlu
aXRpYWxpemVkKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsK
KyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3MpIHsK
KyAgICAgICAgbV92YWxpZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Ly8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgotICAgIGdlbkZyYW1lYnVmZmVy
cygvKiBjb3VudCAqLyAxLCAmbV9jYW52YXNGYm8pOworICAgIGdsR2VuRnJhbWVidWZmZXJzKC8q
IGNvdW50ICovIDEsICZtX2NhbnZhc0Zibyk7CiAKICAgICBnbEdlblRleHR1cmVzKDEsICZtX3Rl
eHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fdGV4dHVyZSk7CkBAIC00NTQsNyArMTY4LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQK
ICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAog
ICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50
ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNv
dW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKIAogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18y
KQogICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CkBAIC00NjMsNyArMTc3LDcgQEAgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXQKIAogICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGlu
aXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCiAgICAgbV9jdXJyZW50RmJvID0gbV9jYW52YXNG
Ym87Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9jYW52YXNGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwogICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4w
LCAwLjApOwogfQogCkBAIC00NzIsOCArMTg2LDggQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CiAgICAgaWYgKG1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewogICAgICAgICA6OmdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMo
MSwgJm1fZGVwdGhCdWZmZXIpOwotICAgICAgICBkZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fY2Fu
dmFzRmJvKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoQnVmZmVy
KTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fY2FudmFzRmJvKTsKICAgICB9
CiAgICAgZGVsZXRlIG1fZ2xXaWRnZXQ7CiAgICAgbV9nbFdpZGdldCA9IDA7CkBAIC01MTYsMjkg
KzIzMCwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKICAgICAgICAgLy8g
Q3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCi0gICAgICAgIGJpbmRSZW5kZXJidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAg
ICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBt
X2RlcHRoQnVmZmVyKTsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgICAgICByZW5k
ZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGds
UmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogI2Vsc2UK
ICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lM
OCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgs
IGhlaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CiAjZW5kaWYKLSAgICAgICAgYmluZFJl
bmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKyAgICAgICAg
Z2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwog
ICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCBjYW52YXMgRkJPLgotICAgIGJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKLSAgICBmcmFt
ZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fdGV4dHVyZSwgMCk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwg
MCk7CiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhC
dWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogI2lmICFkZWZp
bmVkKFFUX09QRU5HTF9FU18yKQogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJF
TkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2Rl
cHRoQnVmZmVyKTsKICNlbmRpZgogCi0gICAgR0xlbnVtIHN0YXR1cyA9IGNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBHTGVudW0gc3Rh
dHVzID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUik7CiAgICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJf
Q09NUExFVEUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFz
IEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTU3NCwx
MCArMjg4LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlCiAgICAgcXVpbnQzMiogaW1hZ2VQ
aXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkp
OwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7
CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCBtX2JvdW5kaW5nUmVjdC53
aWR0aCgpLCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEs
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CiAKLSAgICBi
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRG
Ym8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9jdXJyZW50RmJvKTsKIAogICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJp
dHMsIGFuZCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVl
ZCBSR0IzMiBvciBBUkdCMzJfUE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCkBA
IC02MzIsMTAgKzM0NiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50
KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHF1aW50MzIq
IGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2Uu
Yml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgYmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOworICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52
YXNGYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAotICAgIGJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRG
Ym8pOwogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGgg
dGhlIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFS
R0IzMl9QTSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTY2NCwyMyArMzc4
LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFp
bnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBwYWludGVyLT5kcmF3SW1hZ2UoLyog
eCAqLyAwLCAvKiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsKIH0KIAotdm9pZCogR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQotewot
ICAgIFN0cmluZyBleHRbM10gPSB7ICIiLCAiQVJCIiwgIkVYVCIgfTsKLQotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lV2l0aEV4dCA9IHByb2Mg
KyBleHRbaV07Ci0KLSAgICAgICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+
Z2V0UHJvY0FkZHJlc3MoUVN0cmluZyhuYW1lV2l0aEV4dCkpOwotICAgICAgICBpZiAoYWRkcikg
Ci0gICAgICAgICAgICByZXR1cm4gYWRkcjsKLSAgICB9Ci0KLSAgICBMT0dfRVJST1IoIkdyYXBo
aWNzQ29udGV4dDNEOiBEaWQgbm90IGZpbmQgR0wgZnVuY3Rpb24gJXMiLCBwcm9jLnV0ZjgoKS5k
YXRhKCkpOwotICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICByZXR1cm4gMDsKLX0KLQogUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogewogICAgIC8vIFRoaXMg
aW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0
bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkBAIC03NTgsNyArNDU1LDcgQEAgSW50U2l6ZSBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YWN0
aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtNzY2LDcgKzQ2Myw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRl
cik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRl
cihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRh
Y2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQs
IEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCkBAIC03NzcsMzMg
KzQ3NCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbQogICAgIH0KIAogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QXR0YWNo
ZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7CisgICAgZ2xHZXRB
dHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBB
U1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5k
ZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJp
bmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1
ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihHQzNE
ZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJv
ID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Ci0gICAgbV9pbnRl
cm5hbC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsK
KyAgICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJi
dWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJn
ZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0
dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtODE1LDE5
ICs1MTIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBm
IGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJs
dWUsIGFscGhhKTsKKyAgICBnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2RlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0Rl
bnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBh
cmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1v
ZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVu
YyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQpAQCAtODM5LDMxICs1MzYsMzEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdD
M0RlbnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0
ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdD
M0RlbnVtIGRzdEFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0Is
IHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1
c2FnZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdl
KTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQs
IEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJE
YXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdD
M0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0YSh0
YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwg
b2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNoZWNr
RnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3Io
R0MzRGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpA
QCAtOTA0LDcgKzYwMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5jb21w
aWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAt
OTUyLDcgKzY0OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3Jh
bSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVy
KTsKKyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTk2NCw3ICs2NjEsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJy
YXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAgLTk4
OCw3ICs2ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2Fw
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVp
bnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmZpbmlzaCgpCkBAIC0xMDA2LDEzICs3MDMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJi
dWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZl
cik7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJl
bmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50
LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGludCBs
ZXZlbCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4
dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJn
ZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTEwMjQsNyArNzIx
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0
KTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC0x
MDM3LDE0ICs3MzQsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsK
LSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6
OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xF
TkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1h
bGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQg
c2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwg
JnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhM
ZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1l
TGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTA2OSwxNCArNzY2LDE0IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+
Z2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4
dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFBy
b2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6
QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5h
bWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxl
bmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0g
ICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dy
YW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsK
KyAgICBnbEdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5k
ZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBp
ZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC0xMDk3LDcgKzc5
NCw3IEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAgICAK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBt
X2ludGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCkBAIC0xMTM2LDcgKzgzMyw3IEBAIEdDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1ZmZl
cik7CisgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC0xMTUxLDcgKzg0OCw3
IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgZnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2lu
dGVybmFsLT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1l
YnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6
OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMTYwLDcgKzg1Nyw3IEBA
IEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQ
cm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAog
R0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QgcmVuZGVyYnVmZmVyKQpAQCAtMTE2OSw3ICs4NjYsNyBAQCBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZm
ZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1
ZmZlcihyZW5kZXJidWZmZXIpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1
ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTExNzgsNyArODc1LDcgQEAgR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAg
ICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKKyAg
ICByZXR1cm4gZ2xJc1NoYWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0Nv
bnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTEyMDAsNyAr
ODk3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9ncmFtKHBy
b2dyYW0pOworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkK
QEAgLTEyNTEsMTMgKzk0OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZm
ZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBi
cmVhazsKICAgICB9CiAjZW5kaWYKLSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdl
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwg
R0MzRGJvb2xlYW4gaW52ZXJ0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7
CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRo
LCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTI4Myw3ICs5ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmlu
ZyYgc291cgogICAgIENTdHJpbmcgc291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7CiAg
ICAgY29uc3QgY2hhciogZGF0YSA9IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVuZ3RoID0g
cHJlZml4ZWRTb3VyY2UubGVuZ3RoKCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291cmNlKChH
THVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAgIGdsU2hh
ZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5j
LCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKQEAgLTEyOTUsNyArOTkyLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYs
IEdDM0R1aW50IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFy
YXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBt
YXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwor
ICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTMw
Nyw3ICsxMDA0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVp
bnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0Mz
RGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFj
ZSwgbWFzayk7CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0g
emZhaWwsIEdDM0RlbnVtIHpwYXNzKQpAQCAtMTMxOSw3ICsxMDE2LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNE
ZW51bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdD
M0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7Cisg
ICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMzM3LDEyMSArMTAzNCwxMjEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9j
YXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCog
YXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7
CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwg
R0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAs
IEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZv
cm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0Rz
aXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAg
IGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwg
djAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2
MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVu
aWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwg
R0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgy
ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFu
IHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5
KTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9n
cmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ1OSw2MSArMTE1Niw2MSBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihp
bmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYo
R0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYo
aW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwg
djAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rm
bG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBn
bFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxv
YXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEs
IHYyKTsKKyAgICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAg
Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZs
b2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRm
KGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAs
IHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0
ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50
IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6
ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CisgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJp
ZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNl
dCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE1MzEsNyAr
MTIyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBh
cmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdD
M0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5h
bWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xNTQzLDcgKzEyNDAsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxv
YXQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsK
KyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNo
bWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNTU1LDcg
KzEyNTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBw
YXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAog
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCkBAIC0xNTYzLDcgKzEyNjAsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2lu
dGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0g
MDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0
M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBH
THNpemVpIHNpemUgPSAwOwogCkBAIC0xNTcxLDcgKzEyNjgsNyBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFBy
b2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJv
Z3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcg
cmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTU4MiwxNCArMTI3OSwxNCBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2
YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1l
LCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFt
TmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1O
YW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUp
OwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xNTk3LDE0ICsxMjk0LDE0IEBAIFN0cmluZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVu
Z3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hh
ZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAg
IEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxs
b2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1f
aW50ZXJuYWwtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsK
KyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAog
ICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNjE3LDE0
ICsxMzE0LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNo
YWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAm
bGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNI
QURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAg
ICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAo
IWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNv
dXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVyU291cmNl
KHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8p
OwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTY0NywxMyArMTM0NCwxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBhcmFtTmFtZSwgRwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxv
Y2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZh
bHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9u
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTY2MSwx
OSArMTM1OCwxOSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRp
b24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFt
KTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IHJldHVybiBtX2ludGVybmFsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFt
ZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4
QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2
YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsK
KyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRy
aWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihp
bmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJh
bU5hbWUpCkBAIC0xNjgxLDcgKzEzNzgsNyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lk
KiBwb2ludGVyID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihp
bmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdD
M0RzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBA
IC0xNzAyLDcgKzEzOTksNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVCdWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygv
KiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwg
JmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIApAQCAtMTcxMCwyOCArMTQwNywyOCBA
QCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVp
bnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQg
Ki8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhh
bmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgp
OworICAgIHJldHVybiBnbENyZWF0ZVByb2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAg
IG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7Cisg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVy
biBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0
ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsK
KyAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3Qg
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQpAQCAtMTc0NSwzMSArMTQ0MiwzMSBA
QCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZl
cikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJz
KDEsICZidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZm
ZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1l
YnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFr
ZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAg
IGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRl
cmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRl
cihzaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQo=
</data>
<flag name="review"
          id="96049"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101383</attachid>
            <date>2011-07-19 14:16:23 -0700</date>
            <delta_ts>2011-07-19 14:35:54 -0700</delta_ts>
            <desc>use OpenGLShims resolver implementation</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>72071</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ODQ0NzJiLi5jYjRmODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDExLTA3LTE4ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29t
PgorCisgICAgICAgIFtRdF0gTWFrZSBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRyYW5zcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0aW5n
IG5ldyByZXNvbHZlciBzaG91bGQgYmUgdHJhbnNwYXJlbnQsCisgICAgICAgIGV4aXN0aW5nIHRl
c3RzIHNob3VsZCBhcHBseS4KKworICAgICAgICBBZG9wdCBPcGVuR0xTaGltcyBzeW1ib2wgcmVz
b2x2ZXIgZm9yIFF0CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQ
cm9jQWRkcmVzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hp
bXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6On5HcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6YmxlbmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRFcXVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6YnVmZmVyU3ViRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkaXNhYmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6aXNTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omxp
bmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJi
dWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1w
bGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVy
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVu
Y1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVu
Y2lsT3BTZXBhcmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtMWkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4
QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0
dHJpYjNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJp
YjRmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmli
UG9pbnRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcik6CisKIDIwMTEtMDctMTggIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gQVNTRVJUSU9OIEZBSUxFRCBpbiBSZXNvdXJjZUhhbmRs
ZTo6c2V0RGVmZXJzTG9hZGluZyBjYXVzZXMgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZWE2NjY4
My4uYjA4ZGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM2MTQsNyArMzYxNCw5IEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNEUXQuY3BwCiAKLSAgICAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1CisgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1CisKKyAgICBDT05GSUcgKz0gb3BlbmdsLXNoaW1zCiB9CiAKIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9NSFRNTD0xKSB7CkBAIC0zNjYyLDggKzM2NjQsMTUgQEAgY29udGFpbnMoQ09O
RklHLCB0ZXhtYXApIHsKICAgICAhc3ltYmlhbjohd2luMzItKjpjb250YWlucyhRVF9DT05GSUcs
IG9wZW5nbCkgewogICAgICAgICBIRUFERVJTICs9IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9U
ZXh0dXJlTWFwcGVyR0wuaAogICAgICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisgICAgICAgIENPTkZJRyArPSBvcGVuZ2wtc2hpbXMK
ICAgICB9CiB9IGVsc2UgewogICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmgKICAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzTGF5ZXJRdC5jcHAKIH0KKworY29udGFpbnMoQ09ORklHLCBvcGVuZ2wtc2hpbXMpIHsKKyAg
ICBIRUFERVJTICs9IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKKyAgICBT
T1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcAorICAgIERF
RklORVMgKz0gUVRfT1BFTkdMX1NISU1TPTEKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcAppbmRleCA5MmQ3OWY5Li5l
NWM1MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9PcGVuR0xTaGltcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vT3BlbkdMU2hpbXMuY3BwCkBAIC0xNyw3ICsxNyw3IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2lmIEVOQUJMRShXRUJHTCkKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IGRlZmlu
ZWQoUVRfT1BFTkdMX1NISU1TKQogCiAjZGVmaW5lIERJU0FCTEVfU0hJTVMKICNpbmNsdWRlICJP
cGVuR0xTaGltcy5oIgpAQCAtMjYsMTEgKzI2LDIyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0o
UVQpICYmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisjZGVmaW5lIEFTU0lHTl9GVU5DVElPTl9U
QUJMRV9FTlRSWShGdW5jdGlvbk5hbWUsIHN1Y2Nlc3MpIFwKKyAgICBvcGVuR0xGdW5jdGlvblRh
YmxlKCktPkZ1bmN0aW9uTmFtZSA9IDo6RnVuY3Rpb25OYW1lCisjZWxzZQogI2RlZmluZSBBU1NJ
R05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoRnVuY3Rpb25OYW1lLCBzdWNjZXNzKSBcCiAgICAgb3Bl
bkdMRnVuY3Rpb25UYWJsZSgpLT5GdW5jdGlvbk5hbWUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0
aW9uTmFtZSMjVHlwZT4obG9va3VwT3BlbkdMRnVuY3Rpb25BZGRyZXNzKCNGdW5jdGlvbk5hbWUs
IHN1Y2Nlc3MpKQorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JN
KFFUKQorc3RhdGljIHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIqIHByb2NOYW1lKQor
eworICAgIHJldHVybiBRR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5nZXRQcm9jQWRkcmVz
cyhRU3RyaW5nOjpmcm9tTGF0aW4xKHByb2NOYW1lKSk7Cit9CisjZWxzZQogdHlwZWRlZiB2b2lk
KiAoKmdsR2V0UHJvY0FkZHJlc3NUeXBlKSAoY29uc3QgY2hhciogcHJvY05hbWUpOwogc3RhdGlj
IHZvaWQqIGdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIqIHByb2NOYW1lKQogewpAQCAtNDcsNiAr
NTgsNyBAQCBzdGF0aWMgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUp
CiAgICAgICAgIHJldHVybiBkbHN5bShSVExEX0RFRkFVTFQsIHByb2NOYW1lKTsKICAgICByZXR1
cm4gZ2V0UHJvY0FkZHJlc3NGdW5jdGlvbihwcm9jTmFtZSk7CiB9CisjZW5kaWYKIAogc3RhdGlj
IHZvaWQqIGxvb2t1cE9wZW5HTEZ1bmN0aW9uQWRkcmVzcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5h
bWUsIGJvb2wmIHN1Y2Nlc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaAppbmRleCBhNDMxYjAzLi5lZmJkZjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGlt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNo
aW1zLmgKQEAgLTE3LDcgKzE3LDExIEBACiAgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8K
IAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPFFHTENvbnRleHQ+CisjZWxzZQogI2luY2x1
ZGUgPEdML2dsLmg+CisjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFi
bGUgT3BlbkdMRnVuY3Rpb25UYWJsZTsKIApAQCAtMjIzLDQzICsyMjcsNTYgQEAgdHlwZWRlZiBz
dHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgewogI2RlZmluZSBnbEF0dGFjaFNoYWRlciAgICAg
ICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xBdHRhY2hTaGFkZXIpCiAj
ZGVmaW5lIGdsQmluZEF0dHJpYkxvY2F0aW9uICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9G
VU5DVElPTihnbEJpbmRBdHRyaWJMb2NhdGlvbikKICNkZWZpbmUgZ2xCaW5kQnVmZmVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZEJ1ZmZlcikKLSNk
ZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZV
TkNUSU9OKGdsQmluZEZyYW1lYnVmZmVyKQotI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQg
ICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5kUmVuZGVyYnVmZmVyKQor
I2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZlckVYVCAgICAgICAgICAgICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcgorI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICBM
T09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5kRnJhbWVidWZmZXIpCisjZGVmaW5lIGdsQmluZFJlbmRl
cmJ1ZmZlckVYVCAgICAgICAgICAgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcgorI2RlZmluZSBn
bEJpbmRSZW5kZXJidWZmZXIgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04o
Z2xCaW5kUmVuZGVyYnVmZmVyKQogI2RlZmluZSBnbEJsZW5kQ29sb3IgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCbGVuZENvbG9yKQogI2RlZmluZSBnbEJs
ZW5kRXF1YXRpb24gICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xC
bGVuZEVxdWF0aW9uKQogI2RlZmluZSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAgICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpCiAjZGVmaW5l
IGdsQmxlbmRGdW5jU2VwYXJhdGUgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElP
TihnbEJsZW5kRnVuY1NlcGFyYXRlKQotI2RlZmluZSBnbEJsaXRGcmFtZWJ1ZmZlckVYVCAgICAg
ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCbGl0RnJhbWVidWZmZXIpCisjZGVm
aW5lIGdsQmxpdEZyYW1lYnVmZmVyRVhUICAgICAgICAgICAgICAgICAgIGdsQmxpdEZyYW1lYnVm
ZmVyCisjZGVmaW5lIGdsQmxpdEZyYW1lYnVmZmVyICAgICAgICAgICAgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbEJsaXRGcmFtZWJ1ZmZlcikKICNkZWZpbmUgZ2xCdWZmZXJEYXRhICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQnVmZmVyRGF0YSkK
ICNkZWZpbmUgZ2xCdWZmZXJTdWJEYXRhICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsQnVmZmVyU3ViRGF0YSkKLSNkZWZpbmUgZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzRVhUICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cykKKyNkZWZpbmUgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUICAgICAgICAgICAgZ2xD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzCisjZGVmaW5lIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMp
CiAjZGVmaW5lIGdsQ29tcGlsZVNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbENvbXBpbGVTaGFkZXIpCiAjZGVmaW5lIGdsQ3JlYXRlUHJvZ3JhbSAgICAg
ICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENyZWF0ZVByb2dyYW0pCiAj
ZGVmaW5lIGdsQ3JlYXRlU2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9G
VU5DVElPTihnbENyZWF0ZVNoYWRlcikKICNkZWZpbmUgZ2xEZWxldGVCdWZmZXJzICAgICAgICAg
ICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGVsZXRlQnVmZmVycykKLSNkZWZp
bmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsRGVsZXRlRnJhbWVidWZmZXJzKQorI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVyc0VY
VCAgICAgICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycworI2RlZmluZSBnbERlbGV0ZUZy
YW1lYnVmZmVycyAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVG
cmFtZWJ1ZmZlcnMpCiAjZGVmaW5lIGdsRGVsZXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZVByb2dyYW0pCi0jZGVmaW5lIGdsRGVsZXRl
UmVuZGVyYnVmZmVyc0VYVCAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMpCisjZGVmaW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAgICAg
ICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycworI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZl
cnMgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVSZW5kZXJidWZm
ZXJzKQogI2RlZmluZSBnbERlbGV0ZVNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVTaGFkZXIpCiAjZGVmaW5lIGdsRGV0YWNoU2hhZGVyICAg
ICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERldGFjaFNoYWRlcikK
ICNkZWZpbmUgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KQogI2RlZmluZSBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSkKLSNkZWZpbmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCAg
ICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIpCi0j
ZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQgICAgICAgICAgICAgIExPT0tVUF9HTF9G
VU5DVElPTihnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKQorI2RlZmluZSBnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyRVhUICAgICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyCisjZGVmaW5l
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElP
TihnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKQorI2RlZmluZSBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJERVhUICAgICAgICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJECisjZGVmaW5lIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKQogI2RlZmluZSBnbEdlbkJ1ZmZlcnMgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5CdWZmZXJzKQotI2RlZmluZSBnbEdl
bmVyYXRlTWlwbWFwRVhUICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xH
ZW5lcmF0ZU1pcG1hcCkKLSNkZWZpbmUgZ2xHZW5GcmFtZWJ1ZmZlcnNFWFQgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2VuRnJhbWVidWZmZXJzKQotI2RlZmluZSBnbEdl
blJlbmRlcmJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xH
ZW5SZW5kZXJidWZmZXJzKQorI2RlZmluZSBnbEdlbmVyYXRlTWlwbWFwRVhUICAgICAgICAgICAg
ICAgICAgICBnbEdlbmVyYXRlTWlwbWFwCisjZGVmaW5lIGdsR2VuZXJhdGVNaXBtYXAgICAgICAg
ICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdlbmVyYXRlTWlwbWFwKQorI2Rl
ZmluZSBnbEdlbkZyYW1lYnVmZmVyc0VYVCAgICAgICAgICAgICAgICAgICBnbEdlbkZyYW1lYnVm
ZmVycworI2RlZmluZSBnbEdlbkZyYW1lYnVmZmVycyAgICAgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xHZW5GcmFtZWJ1ZmZlcnMpCisjZGVmaW5lIGdsR2VuUmVuZGVyYnVm
ZmVyc0VYVCAgICAgICAgICAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycworI2RlZmluZSBnbEdl
blJlbmRlcmJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xH
ZW5SZW5kZXJidWZmZXJzKQogI2RlZmluZSBnbEdldEFjdGl2ZUF0dHJpYiAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRBY3RpdmVBdHRyaWIpCiAjZGVmaW5lIGds
R2V0QWN0aXZlVW5pZm9ybSAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bEdldEFjdGl2ZVVuaWZvcm0pCiAjZGVmaW5lIGdsR2V0QXR0YWNoZWRTaGFkZXJzICAgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEF0dGFjaGVkU2hhZGVycykKICNkZWZp
bmUgZ2xHZXRBdHRyaWJMb2NhdGlvbiAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsR2V0QXR0cmliTG9jYXRpb24pCisjZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZF
WFQgICAgICAgICAgICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYKICNkZWZpbmUgZ2xHZXRCdWZm
ZXJQYXJhbWV0ZXJpdiAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QnVm
ZmVyUGFyYW1ldGVyaXYpCi0jZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAg
ICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEJ1ZmZlclBhcmFtZXRlcml2KQotI2RlZmlu
ZSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUIExPT0tVUF9HTF9GVU5D
VElPTihnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KQorI2RlZmluZSBnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUIGdsR2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYKKyNkZWZpbmUgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdiAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYpCiAjZGVmaW5lIGdsR2V0UHJvZ3JhbUluZm9Mb2cgICAgICAgICAgICAgICAgICAg
IExPT0tVUF9HTF9GVU5DVElPTihnbEdldFByb2dyYW1JbmZvTG9nKQogI2RlZmluZSBnbEdldFBy
b2dyYW1pdiAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRQ
cm9ncmFtaXYpCi0jZGVmaW5lIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAg
IExPT0tVUF9HTF9GVU5DVElPTihnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KQorI2RlZmlu
ZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUICAgICAgICBnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2CisjZGVmaW5lIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KQogI2Rl
ZmluZSBnbEdldFNoYWRlckluZm9Mb2cgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZXRTaGFkZXJJbmZvTG9nKQogI2RlZmluZSBnbEdldFNoYWRlcml2ICAgICAgICAg
ICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJpdikKICNkZWZp
bmUgZ2xHZXRTaGFkZXJTb3VyY2UgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsR2V0U2hhZGVyU291cmNlKQpAQCAtMjcwLDEzICsyODcsMTcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgewogI2RlZmluZSBnbEdldFZlcnRleEF0dHJpYml2ICAg
ICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRWZXJ0ZXhBdHRyaWJpdikK
ICNkZWZpbmUgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYpCiAjZGVmaW5lIGdsSXNCdWZmZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzQnVmZmVy
KQotI2RlZmluZSBnbElzRnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xJc0ZyYW1lYnVmZmVyKQorI2RlZmluZSBnbElzRnJhbWVidWZmZXJFWFQg
ICAgICAgICAgICAgICAgICAgICBnbElzRnJhbWVidWZmZXIKKyNkZWZpbmUgZ2xJc0ZyYW1lYnVm
ZmVyICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNGcmFtZWJ1
ZmZlcikKICNkZWZpbmUgZ2xJc1Byb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsSXNQcm9ncmFtKQotI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyRVhU
ICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc1JlbmRlcmJ1ZmZlcikK
KyNkZWZpbmUgZ2xJc1JlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgICAgICAgICAgZ2xJc1JlbmRl
cmJ1ZmZlcgorI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICBM
T09LVVBfR0xfRlVOQ1RJT04oZ2xJc1JlbmRlcmJ1ZmZlcikKICNkZWZpbmUgZ2xJc1NoYWRlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNTaGFkZXIp
CiAjZGVmaW5lIGdsTGlua1Byb2dyYW0gICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbExpbmtQcm9ncmFtKQotI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VF
WFQgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KQotI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpCisjZGVmaW5lIGds
UmVuZGVyYnVmZmVyU3RvcmFnZUVYVCAgICAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJTdG9yYWdlKQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUVYVCAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpCiAjZGVmaW5lIGds
U2FtcGxlQ292ZXJhZ2UgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bFNhbXBsZUNvdmVyYWdlKQogI2RlZmluZSBnbFNoYWRlclNvdXJjZSAgICAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xTaGFkZXJTb3VyY2UpCiAjZGVmaW5lIGdsU3Rl
bmNpbEZ1bmNTZXBhcmF0ZSAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbFN0
ZW5jaWxGdW5jU2VwYXJhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDZkNWY1MTAuLmI3
YTExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYg
ZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8
Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KKyNlbGlmIGRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKQog
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgogI2VsaWYg
T1MoTUFDX09TX1gpCkBAIC0zNyw3ICszOSw3IEBACiAjaW5jbHVkZSA8R0wvZ2wuaD4KICNlbmRp
ZgogCi0jaWZuZGVmIFRFWE1BUF9PUEVOR0xfRVNfMgorI2lmICFkZWZpbmVkKFRFWE1BUF9PUEVO
R0xfRVNfMikgJiYgIVBMQVRGT1JNKFFUKQogZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBnbFVuaWZv
cm0xZihHTGludCwgR0xmbG9hdCk7CiAgICAgdm9pZCBnbFVuaWZvcm0xaShHTGludCwgR0xpbnQp
OwpAQCAtMzg4LDYgKzM5MCw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjppbml0aWFsaXplU2hh
ZGVycygpCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZygpCiB7CiAjaWYgUExB
VEZPUk0oUVQpCisgICAgaWYgKCFpbml0aWFsaXplT3BlbkdMU2hpbXMoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgZ2xHZXRJbnRlZ2VydihHTF9DVVJSRU5UX1BST0dSQU0sICZtX2RhdGEtPnBy
ZXZpb3VzUHJvZ3JhbSk7CiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBtX2NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOwogICAgIHBhaW50ZXItPnNhdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
aW5kZXggMmViZGNmYS4uNzJiMjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTIxLDYg
KzIxLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5jbHVkZSAiV2Vi
R0xPYmplY3QuaCIKKyNpbmNsdWRlIDxjYWlyby9PcGVuR0xTaGltcy5oPgogI2luY2x1ZGUgIkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtNTUsMTA5ICs1Niw2IEBAIHR5cGVkZWYgY2hh
ciBHTGNoYXI7CiAjZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggMHg4OEYwCiAjZW5kaWYKIAot
I2lmICFkZWZpbmVkKEFQSUVOVFJZKQotI2RlZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRl
ZiBRVF9PUEVOR0xfRVNfMgotdHlwZWRlZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlw
ZWRlZiBHTGludHB0ciBHTGludHB0clR5cGU7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xz
aXplaXB0clR5cGU7Ci10eXBlZGVmIHB0cmRpZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xBY3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEF0dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChH
THVpbnQsIEdMdWludCwgY29uc3QgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xC
aW5kQnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsQmluZEZyYW1lYnVmZmVyVHlwZSkgKEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsQmluZFJlbmRlcmJ1ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kQ29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBm
LCBHTGNsYW1wZiwgR0xjbGFtcGYpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVx
dWF0aW9uVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1
YXRpb25TZXBhcmF0ZVR5cGUpKEdMZW51bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsQmxlbmRGdW5jU2VwYXJhdGVUeXBlKShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdC
LCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEJ1ZmZlckRhdGFUeXBlKSAoR0xlbnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2
b2lkKiwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5
cGUpIChHTGVudW0sIEdMaW50cHRyVHlwZSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCop
OwotdHlwZWRlZiBHTGVudW0gKEFQSUVOVFJZKiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBl
KSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUp
IChHTHVpbnQpOwotdHlwZWRlZiBHTHVpbnQgKEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBl
KSAoKTsKLXR5cGVkZWYgR0x1aW50IChBUElFTlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xl
bnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNp
emVpLCBjb25zdCBHTHVpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJh
bWVidWZmZXJzVHlwZSkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbERlbGV0ZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdM
dWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1
aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWlu
dCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdM
dWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlw
ZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZW5CdWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xHZW5lcmF0ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWks
IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlw
ZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3Rp
dmVBdHRyaWJUeXBlKSAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCos
IEdMZW51bSosIEdMY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVV
bmlmb3JtVHlwZSkgKEdMdWludCwgR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBH
TGVudW0qLCBHTGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRT
aGFkZXJzVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRl
ZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25z
dCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2
VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51
bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0
UHJvZ3JhbUluZm9Mb2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVu
dW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRTaGFkZXJJbmZvTG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXpl
aSosIGNoYXIqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAo
R0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNo
YWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBl
ZGVmIEdMaW50IChBUElFTlRSWSogZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBj
b25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUp
IChHTHVpbnQsIEdMaW50LCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdl
dFVuaWZvcm1pdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJmdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9h
dCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChH
THVpbnQsIEdMZW51bSwgR0xpbnQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVy
dGV4QXR0cmliUG9pbnRlcnZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVk
ZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRl
ZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzRnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5
cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5
cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSogZ2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQp
OwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVt
LCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xT
YW1wbGVDb3ZlcmFnZVR5cGUpIChHTGNsYW1wZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsU2hhZGVyU291cmNlVHlwZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hh
cioqLCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVu
Y1NlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdM
ZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm0xZlR5cGUpIChHTGludCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm0xZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWks
IGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUp
IChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVu
aWZvcm0yZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTJpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVp
LCBjb25zdCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBl
KSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xVbmlmb3JtM2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQs
IEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm00ZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xm
bG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQs
IEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybTRpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBl
KSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtTWF0cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBH
TGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5p
Zm9ybU1hdHJpeDRmdlR5cGUpIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZs
b2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWlu
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJp
YjFmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVmVydGV4QXR0cmliMmZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBH
TGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkg
KEdMdWludCwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0
ZXhBdHRyaWIzZlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNv
bnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZU
eXBlKSAoR0x1aW50LCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFZlcnRleEF0dHJpYjRmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9h
dCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFZlcnRleEF0dHJpYjRmdlR5cGUpIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdM
aW50LCBHTGVudW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKik7Ci0KIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQpAQCAtMTgyLDk3ICs4MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVt
KiwgUVdpZGdldCopOwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKIAotICAgIGds
QWN0aXZlVGV4dHVyZVR5cGUgYWN0aXZlVGV4dHVyZTsKLSAgICBnbEF0dGFjaFNoYWRlclR5cGUg
YXR0YWNoU2hhZGVyOwotICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9j
YXRpb247Ci0gICAgZ2xCaW5kQnVmZmVyVHlwZSBiaW5kQnVmZmVyOwotICAgIGdsQmluZEZyYW1l
YnVmZmVyVHlwZSBiaW5kRnJhbWVidWZmZXI7Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSBi
aW5kUmVuZGVyYnVmZmVyOwotICAgIGdsQmxlbmRDb2xvclR5cGUgYmxlbmRDb2xvcjsKLSAgICBn
bEJsZW5kRXF1YXRpb25UeXBlIGJsZW5kRXF1YXRpb247Ci0gICAgZ2xCbGVuZEVxdWF0aW9uU2Vw
YXJhdGVUeXBlIGJsZW5kRXF1YXRpb25TZXBhcmF0ZTsKLSAgICBnbEJsZW5kRnVuY1NlcGFyYXRl
VHlwZSBibGVuZEZ1bmNTZXBhcmF0ZTsKLSAgICBnbEJ1ZmZlckRhdGFUeXBlIGJ1ZmZlckRhdGE7
Ci0gICAgZ2xCdWZmZXJTdWJEYXRhVHlwZSBidWZmZXJTdWJEYXRhOwotICAgIGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1c1R5cGUgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1czsKLSAgICBnbENvbXBpbGVT
aGFkZXJUeXBlIGNvbXBpbGVTaGFkZXI7Ci0gICAgZ2xDcmVhdGVQcm9ncmFtVHlwZSBjcmVhdGVQ
cm9ncmFtOwotICAgIGdsQ3JlYXRlU2hhZGVyVHlwZSBjcmVhdGVTaGFkZXI7Ci0gICAgZ2xEZWxl
dGVCdWZmZXJzVHlwZSBkZWxldGVCdWZmZXJzOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlw
ZSBkZWxldGVGcmFtZWJ1ZmZlcnM7Ci0gICAgZ2xEZWxldGVQcm9ncmFtVHlwZSBkZWxldGVQcm9n
cmFtOwotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVyc1R5cGUgZGVsZXRlUmVuZGVyYnVmZmVyczsK
LSAgICBnbERlbGV0ZVNoYWRlclR5cGUgZGVsZXRlU2hhZGVyOwotICAgIGdsRGV0YWNoU2hhZGVy
VHlwZSBkZXRhY2hTaGFkZXI7Ci0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGRp
c2FibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlw
ZSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
VHlwZSBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcjsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJE
VHlwZSBmcmFtZWJ1ZmZlclRleHR1cmUyRDsKLSAgICBnbEdlbkJ1ZmZlcnNUeXBlIGdlbkJ1ZmZl
cnM7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1hcFR5cGUgZ2VuZXJhdGVNaXBtYXA7Ci0gICAgZ2xHZW5G
cmFtZWJ1ZmZlcnNUeXBlIGdlbkZyYW1lYnVmZmVyczsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnNU
eXBlIGdlblJlbmRlcmJ1ZmZlcnM7Ci0gICAgZ2xHZXRBY3RpdmVBdHRyaWJUeXBlIGdldEFjdGl2
ZUF0dHJpYjsKLSAgICBnbEdldEFjdGl2ZVVuaWZvcm1UeXBlIGdldEFjdGl2ZVVuaWZvcm07Ci0g
ICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnNUeXBlIGdldEF0dGFjaGVkU2hhZGVyczsKLSAgICBnbEdl
dEF0dHJpYkxvY2F0aW9uVHlwZSBnZXRBdHRyaWJMb2NhdGlvbjsKLSAgICBnbEdldEJ1ZmZlclBh
cmFtZXRlcml2VHlwZSBnZXRCdWZmZXJQYXJhbWV0ZXJpdjsKLSAgICBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2VHlwZSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdjsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nVHlwZSBnZXRQcm9ncmFtSW5mb0xvZzsKLSAg
ICBnbEdldFByb2dyYW1pdlR5cGUgZ2V0UHJvZ3JhbWl2OwotICAgIGdsR2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXZUeXBlIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0U2hh
ZGVySW5mb0xvZ1R5cGUgZ2V0U2hhZGVySW5mb0xvZzsKLSAgICBnbEdldFNoYWRlcml2VHlwZSBn
ZXRTaGFkZXJpdjsKLSAgICBnbEdldFNoYWRlclNvdXJjZVR5cGUgZ2V0U2hhZGVyU291cmNlOwot
ICAgIGdsR2V0VW5pZm9ybWZ2VHlwZSBnZXRVbmlmb3JtZnY7Ci0gICAgZ2xHZXRVbmlmb3JtaXZU
eXBlIGdldFVuaWZvcm1pdjsKLSAgICBnbEdldFVuaWZvcm1Mb2NhdGlvblR5cGUgZ2V0VW5pZm9y
bUxvY2F0aW9uOwotICAgIGdsR2V0VmVydGV4QXR0cmliZnZUeXBlIGdldFZlcnRleEF0dHJpYmZ2
OwotICAgIGdsR2V0VmVydGV4QXR0cmliaXZUeXBlIGdldFZlcnRleEF0dHJpYml2OwotICAgIGds
R2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2OwotICAg
IGdsSXNCdWZmZXJUeXBlIGlzQnVmZmVyOwotICAgIGdsSXNGcmFtZWJ1ZmZlclR5cGUgaXNGcmFt
ZWJ1ZmZlcjsKLSAgICBnbElzUHJvZ3JhbVR5cGUgaXNQcm9ncmFtOwotICAgIGdsSXNSZW5kZXJi
dWZmZXJUeXBlIGlzUmVuZGVyYnVmZmVyOwotICAgIGdsSXNTaGFkZXJUeXBlIGlzU2hhZGVyOwot
ICAgIGdsTGlua1Byb2dyYW1UeXBlIGxpbmtQcm9ncmFtOwotICAgIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZVR5cGUgcmVuZGVyYnVmZmVyU3RvcmFnZTsKLSAgICBnbFNhbXBsZUNvdmVyYWdlVHlwZSBz
YW1wbGVDb3ZlcmFnZTsKLSAgICBnbFNoYWRlclNvdXJjZVR5cGUgc2hhZGVyU291cmNlOwotICAg
IGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5cGUgc3RlbmNpbEZ1bmNTZXBhcmF0ZTsKLSAgICBnbFN0
ZW5jaWxNYXNrU2VwYXJhdGVUeXBlIHN0ZW5jaWxNYXNrU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2ls
T3BTZXBhcmF0ZVR5cGUgc3RlbmNpbE9wU2VwYXJhdGU7Ci0gICAgZ2xVbmlmb3JtMWZUeXBlIHVu
aWZvcm0xZjsKLSAgICBnbFVuaWZvcm0xZnZUeXBlIHVuaWZvcm0xZnY7Ci0gICAgZ2xVbmlmb3Jt
MWlUeXBlIHVuaWZvcm0xaTsKLSAgICBnbFVuaWZvcm0xaXZUeXBlIHVuaWZvcm0xaXY7Ci0gICAg
Z2xVbmlmb3JtMmZUeXBlIHVuaWZvcm0yZjsKLSAgICBnbFVuaWZvcm0yZnZUeXBlIHVuaWZvcm0y
ZnY7Ci0gICAgZ2xVbmlmb3JtMmlUeXBlIHVuaWZvcm0yaTsKLSAgICBnbFVuaWZvcm0yaXZUeXBl
IHVuaWZvcm0yaXY7Ci0gICAgZ2xVbmlmb3JtM2ZUeXBlIHVuaWZvcm0zZjsKLSAgICBnbFVuaWZv
cm0zZnZUeXBlIHVuaWZvcm0zZnY7Ci0gICAgZ2xVbmlmb3JtM2lUeXBlIHVuaWZvcm0zaTsKLSAg
ICBnbFVuaWZvcm0zaXZUeXBlIHVuaWZvcm0zaXY7Ci0gICAgZ2xVbmlmb3JtNGZUeXBlIHVuaWZv
cm00ZjsKLSAgICBnbFVuaWZvcm00ZnZUeXBlIHVuaWZvcm00ZnY7Ci0gICAgZ2xVbmlmb3JtNGlU
eXBlIHVuaWZvcm00aTsKLSAgICBnbFVuaWZvcm00aXZUeXBlIHVuaWZvcm00aXY7Ci0gICAgZ2xV
bmlmb3JtTWF0cml4MmZ2VHlwZSB1bmlmb3JtTWF0cml4MmZ2OwotICAgIGdsVW5pZm9ybU1hdHJp
eDNmdlR5cGUgdW5pZm9ybU1hdHJpeDNmdjsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlIHVu
aWZvcm1NYXRyaXg0ZnY7Ci0gICAgZ2xVc2VQcm9ncmFtVHlwZSB1c2VQcm9ncmFtOwotICAgIGds
VmFsaWRhdGVQcm9ncmFtVHlwZSB2YWxpZGF0ZVByb2dyYW07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIx
ZlR5cGUgdmVydGV4QXR0cmliMWY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlIHZlcnRleEF0
dHJpYjFmdjsKLSAgICBnbFZlcnRleEF0dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRyaWIyZjsKLSAgICBn
bFZlcnRleEF0dHJpYjJmdlR5cGUgdmVydGV4QXR0cmliMmZ2OwotICAgIGdsVmVydGV4QXR0cmli
M2ZUeXBlIHZlcnRleEF0dHJpYjNmOwotICAgIGdsVmVydGV4QXR0cmliM2Z2VHlwZSB2ZXJ0ZXhB
dHRyaWIzZnY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZlR5cGUgdmVydGV4QXR0cmliNGY7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlIHZlcnRleEF0dHJpYjRmdjsKLSAgICBnbFZlcnRleEF0dHJp
YlBvaW50ZXJUeXBlIHZlcnRleEF0dHJpYlBvaW50ZXI7Ci0KICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBtX2F0dHJzOwogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAg
ICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7CkBAIC0yODgsMTcgKzk1LDkgQEAgcHVibGljOgogICAg
IE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOwogCiBwcml2YXRlOgotCi0gICAg
dm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKTsKICAgICBib29sIG1fdmFs
aWQ7CiB9OwogCi0jaWYgZGVmaW5lZCAoUVRfT1BFTkdMX0VTXzIpIAotI2RlZmluZSBHRVRfUFJP
Q19BRERSRVNTKFByb2MpIFByb2MKLSNlbHNlCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJv
YykgcmVpbnRlcnByZXRfY2FzdDxQcm9jIyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpOwot
I2VuZGlmCi0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25z
dAogewogI2lmIGRlZmluZWQgKFFUX09QRU5HTF9FU18yKQpAQCAtMzQ2LDEwNCArMTQ1LDE5IEBA
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgp
OwogCi0gICAgYWN0aXZlVGV4dHVyZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJl
KTsKLSAgICBhdHRhY2hTaGFkZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsK
LSAgICBiaW5kQXR0cmliTG9jYXRpb24gPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxv
Y2F0aW9uKTsKLSAgICBiaW5kQnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIp
OwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZm
ZXIpOwotICAgIGJpbmRSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRl
cmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xvciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9y
KTsKLSAgICBibGVuZEVxdWF0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24p
OwotICAgIGJsZW5kRXF1YXRpb25TZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGUpOwotICAgIGJsZW5kRnVuY1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVT
UyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsKLSAgICBidWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVT
UyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1ZmZlclN1YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGds
QnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VU
X1BST0NfQUREUkVTUyhnbENvbXBpbGVTaGFkZXIpOwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRf
UFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJvZ3JhbSk7Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BS
T0NfQUREUkVTUyhnbENyZWF0ZVNoYWRlcik7Ci0gICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xEZWxldGVCdWZmZXJzKTsKLSAgICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRf
UFJPQ19BRERSRVNTKGdsRGVsZXRlRnJhbWVidWZmZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0g
R0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVByb2dyYW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZl
cnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlUmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRl
U2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hh
ZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbERldGFjaFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5ID0gR0VUX1BST0NfQUREUkVTUyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0cmliQXJyYXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOwotICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VU
X1BST0NfQUREUkVTUyhnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZl
clRleHR1cmUyRCA9IEdFVF9QUk9DX0FERFJFU1MoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0g
ICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5l
cmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2Vu
RnJhbWVidWZmZXJzID0gR0VUX1BST0NfQUREUkVTUyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAg
Z2VuUmVuZGVyYnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsK
LSAgICBnZXRBY3RpdmVBdHRyaWIgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmli
KTsKLSAgICBnZXRBY3RpdmVVbmlmb3JtID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVu
aWZvcm0pOwotICAgIGdldEF0dGFjaGVkU2hhZGVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRB
dHRhY2hlZFNoYWRlcnMpOwotICAgIGdldEF0dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVT
UyhnbEdldEF0dHJpYkxvY2F0aW9uKTsKLSAgICBnZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYpOwotICAgIGdldFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFByb2dyYW1JbmZvTG9nKTsKLSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJP
Q19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2KTsKLSAgICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAg
Z2V0U2hhZGVySW5mb0xvZyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsK
LSAgICBnZXRTaGFkZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAg
Z2V0U2hhZGVyU291cmNlID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0g
ICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAg
Z2V0VW5pZm9ybWl2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0
VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7
Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0
cmliZnYpOwotICAgIGdldFZlcnRleEF0dHJpYml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZl
cnRleEF0dHJpYml2KTsKLSAgICBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJP
Q19BRERSRVNTKGdsSXNCdWZmZXIpOwotICAgIGlzRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERS
RVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0gICAgaXNQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhn
bElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5kZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNS
ZW5kZXJidWZmZXIpOwotICAgIGlzU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVy
KTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0g
ICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJT
dG9yYWdlKTsKLSAgICBzYW1wbGVDb3ZlcmFnZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVD
b3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291cmNlID0gR0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNv
dXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNTZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVu
Y2lsRnVuY1NlcGFyYXRlKTsKLSAgICBzdGVuY2lsTWFza1NlcGFyYXRlID0gR0VUX1BST0NfQURE
UkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJhdGUpOwotICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VU
X1BST0NfQUREUkVTUyhnbFN0ZW5jaWxPcFNlcGFyYXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRf
UFJPQ19BRERSRVNTKGdsVW5pZm9ybTFmKTsKLSAgICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbFVuaWZvcm0xZnYpOwotICAgIHVuaWZvcm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xV
bmlmb3JtMWkpOwotICAgIHVuaWZvcm0xaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFp
dik7Ci0gICAgdW5pZm9ybTJmID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAg
dW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3Jt
MmkgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0yaXYpOwotICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtM2YpOwotICAgIHVuaWZvcm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTNmdik7Ci0gICAgdW5pZm9ybTNpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0z
aSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAg
ICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3Jt
NGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtNGkpOwotICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVW5pZm9ybTRpdik7Ci0gICAgdW5pZm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2KTsKLSAgICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BS
T0NfQUREUkVTUyhnbFVuaWZvcm1NYXRyaXgzZnYpOwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybU1hdHJpeDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9ncmFtKTsKLSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRf
UFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQcm9ncmFtKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIxZik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0g
R0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJm
diA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJp
YjNmID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRy
aWIzZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVydGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhB
dHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4
QXR0cmliNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVy
dGV4QXR0cmliUG9pbnRlciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KTsKLQotICAgIGlmICghbV92YWxpZCkgewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29u
dGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5HTCBleHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7
CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBz
dWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIHN1Y2Nlc3Mg
PSBpbml0aWFsaXplT3BlbkdMU2hpbXMoKTsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwor
ICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgbV92YWxpZCA9IGZhbHNlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52
YXMgRkJPLgotICAgIGdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9jYW52YXNGYm8p
OworICAgIGdsR2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2NhbnZhc0Zibyk7CiAK
ICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CkBAIC00NTQsNyArMTY4LDcg
QEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAogICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAg
ICBnZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKKyAgICAg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKIAog
I2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklU
RSk7CkBAIC00NjMsNyArMTc3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXQKIAogICAgIC8v
IEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCiAg
ICAgbV9jdXJyZW50RmJvID0gbV9jYW52YXNGYm87Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOworICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwogICAg
IGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAwLjApOwogfQogCkBAIC00NzIsOCArMTg2LDgg
QEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwo
KQogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgaWYgKG1fZ2xXaWRnZXQtPmlz
VmFsaWQoKSkgewogICAgICAgICA6OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0g
ICAgICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgICAgICBk
ZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fY2FudmFzRmJvKTsKKyAgICAgICAgZ2xEZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJm1fY2FudmFzRmJvKTsKICAgICB9CiAgICAgZGVsZXRlIG1fZ2xXaWRnZXQ7CiAgICAg
bV9nbFdpZGdldCA9IDA7CkBAIC01MTYsMjkgKzIzMCwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgaWYgKG1f
YXR0cnMuZGVwdGgpIHsKICAgICAgICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZl
cnMuCi0gICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICNpZiBkZWZpbmVkKFFU
X09QRU5HTF9FU18yKQotICAgICAgICByZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwg
d2lkdGgsIGhlaWdodCk7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5U
MTYsIHdpZHRoLCBoZWlnaHQpOwogI2Vsc2UKICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkK
LSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwg
R0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdo
dCk7CiAjZW5kaWYKLSAgICAgICAgYmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6
UkVOREVSQlVGRkVSLCAwKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpSRU5ERVJCVUZGRVIsIDApOwogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCBjYW52
YXMgRkJPLgotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fY2FudmFzRmJvKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CisgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7
CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0g
ICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIs
IG1fZGVwdGhCdWZmZXIpOwogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGlmICht
X2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Cisg
ICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2RlcHRoQnVmZmVyKTsKICNlbmRpZgogCi0gICAgR0xl
bnVtIHN0YXR1cyA9IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSKTsKKyAgICBHTGVudW0gc3RhdHVzID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7CiAgICAgaWYgKHN0YXR1cyAhPSBHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJHcmFwaGljc0NvbnRleHQzRDogQ2FudmFzIEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7
CiAgICAgICAgIHJldHVybjsKQEAgLTU3NCwxMCArMjg4LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlCiAgICAgcXVpbnQzMiogaW1hZ2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50
MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRzKCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBtX2NhbnZhc0Zibyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwg
LyogeSAqLyAwLCBtX2JvdW5kaW5nUmVjdC53aWR0aCgpLCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBpbWFnZVBpeGVscyk7CiAKLSAgICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jdXJyZW50RmJvKTsKIAogICAgIC8vIE9w
ZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJpdHMsIGFuZCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhl
IGJvdHRvbSBsZWZ0CiAgICAgLy8gV2UgbmVlZCBSR0IzMiBvciBBUkdCMzJfUE0sIHdpdGggdGhl
IG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQuCkBAIC02MzIsMTAgKzM0NiwxMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5
bGVPcHRpb25HcmFwaAogICAgIHF1aW50MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2Fz
dDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2UuYml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9jYW52YXNGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4
ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0Nv
bnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4
ZWxzKTsKIAotICAgIGJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIsIG1fY3VycmVudEZibyk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOwogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVz
IEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQK
ICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9QTSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRo
ZSB0b3AgbGVmdC4KQEAgLTY2NCwyMyArMzc4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgK
ICAgICBwYWludGVyLT5kcmF3SW1hZ2UoLyogeCAqLyAwLCAvKiB5ICovIDAsIG9mZnNjcmVlbklt
YWdlKTsKIH0KIAotdm9pZCogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJl
c3MoY29uc3QgU3RyaW5nJiBwcm9jKQotewotICAgIFN0cmluZyBleHRbM10gPSB7ICIiLCAiQVJC
IiwgIkVYVCIgfTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAg
IFN0cmluZyBuYW1lV2l0aEV4dCA9IHByb2MgKyBleHRbaV07Ci0KLSAgICAgICAgdm9pZCogYWRk
ciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKS0+Z2V0UHJvY0FkZHJlc3MoUVN0cmluZyhuYW1lV2l0
aEV4dCkpOwotICAgICAgICBpZiAoYWRkcikgCi0gICAgICAgICAgICByZXR1cm4gYWRkcjsKLSAg
ICB9Ci0KLSAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBEaWQgbm90IGZpbmQgR0wg
ZnVuY3Rpb24gJXMiLCBwcm9jLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdmFsaWQgPSBmYWxzZTsK
LSAgICByZXR1cm4gMDsKLX0KLQogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJl
bmRlclN0eWxlKQogewogICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50
bHkgc3VwcG9ydCByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkBAIC03NTgs
NyArNDU1LDcgQEAgSW50U2l6ZSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKSBjb25zdAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShH
QzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFj
dGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFj
aFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQpAQCAtNzY2LDcgKzQ2Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQo
cHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwg
c2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RP
YmplY3QqIHNoYWRlcnMpCkBAIC03NzcsMzMgKzQ3NCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6
ZWkgbQogICAgIH0KIAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBj
b3VudCwgc2hhZGVycyk7CisgICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291
bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0
dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNv
bnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kQXR0cmli
TG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5k
QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0
Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwor
ICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAg
ICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5h
bC0+bV9jYW52YXNGYm87Ci0gICAgbV9pbnRlcm5hbC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwg
bV9pbnRlcm5hbC0+bV9jdXJyZW50RmJvKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQs
IG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOwor
ICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCB0ZXh0dXJlKQpAQCAtODE1LDE5ICs1MTIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBH
QzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAg
ICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFs
LT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBnbEJsZW5kQ29sb3Io
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
bGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1vZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZEVxdWF0aW9uKG1vZGUpOwor
ICAgIGdsQmxlbmRFcXVhdGlvbihtb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBo
YSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAg
IGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBk
ZmFjdG9yKQpAQCAtODM5LDMxICs1MzYsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymxl
bmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRz
dFJHQiwgR0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRG
dW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xC
bGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdD
M0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0
LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBz
aXplLCAvKiBkYXRhICovIDAsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lk
KiBkYXRhLCBHQzNEZW51bSB1c2FnZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBk
YXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2Up
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBk
YXRhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7Cisg
ICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0Mz
RGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0g
dGFyZ2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgcmV0dXJuIG1faW50ZXJuYWwtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAg
ICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0MzRGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdD
M0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAtOTA0LDcgKzYwMSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAg
ICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5jb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21w
aWxlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpAQCAtOTUyLDcgKzY0OSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3Jt
M0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5k
ZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFt
LCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVt
IGNhcCkKQEAgLTk2NCw3ICs2NjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxl
KEdDM0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShp
bmRleCk7CisgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmly
c3QsIEdDM0RzaXplaSBjb3VudCkKQEAgLTk4OCw3ICs2ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjplbmFibGUoR0MzRGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCkBAIC0xMDA2LDEzICs3MDMs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBh
dHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4
dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0Mz
RGVudW0gbW9kZSkKQEAgLTEwMjQsNyArNzIxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0
ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOwor
ICAgIGdsR2VuZXJhdGVNaXBtYXAodGFyZ2V0KTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5k
ZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC0xMDM3LDE0ICs3MzQsMTQgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RHVpbnQgaW5kZXgKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwog
CiAgICAgR0xpbnQgbWF4TGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwg
Jm1heExlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0
M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNo
YXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkg
bmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAw
OwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhM
ZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5
cGUsIG5hbWUpOwogCiAgICAgaWYgKCFuYW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5h
bWUpOwpAQCAtMTA2OSwxNCArNzY2LDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFj
dGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExl
bmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWlu
dD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RI
LCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdldFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHBy
b2dyYW0pLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1h
eExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhM
ZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7
CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlVW5pZm9y
bShzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxl
bmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0oc3RhdGlj
X2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwgaW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZz
aXplLCAmdHlwZSwgbmFtZSk7CiAKICAgICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFz
dEZyZWUobmFtZSk7CkBAIC0xMDk3LDcgKzc5NCw3IEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcm
CiAgICAgICAgIHJldHVybiAtMTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0
aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCkBA
IC0xMTM2LDcgKzgzMyw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZl
cihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAg
IAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJu
IG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVm
ZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNE
ZW51bSBjYXApCkBAIC0xMTUxLDcgKzg0OCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4
dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiAgICAgICAg
IHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAogR0Mz
RGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCkBAIC0xMTYwLDcgKzg1Nyw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNE
Ojppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gR0xf
RkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsK
LSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBn
bElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6
OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQpAQCAtMTE2OSw3
ICs4NjYsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIo
UGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsK
ICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJl
dHVybiBtX2ludGVybmFsLT5pc1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgIHJldHVy
biBnbElzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTExNzgs
NyArODc1LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRl
cm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gZ2xJc1NoYWRlcihzaGFkZXIpOwog
fQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSkKQEAgLTEyMDAsNyArODk3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6bGlua1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIEFTU0VSVChw
cm9ncmFtKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsTGlua1Byb2dyYW0ocHJv
Z3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTEyNTEsMTMgKzk0OCwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gaW50ZXJuYWxmbwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5kaWYKLSAgICBtX2lu
dGVybmFsLT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRo
LCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxl
Q292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQogewogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c2Ft
cGxlQ292ZXJhZ2UodmFsdWUsIGludmVydCk7CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwg
aW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTI4Myw3
ICs5ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0z
RE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc291cgogICAgIENTdHJpbmcgc291cmNlQ1Mg
PSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hhciogZGF0YSA9IHNvdXJjZUNT
LmRhdGEoKTsKICAgICBpbnQgbGVuZ3RoID0gcHJlZml4ZWRTb3VyY2UubGVuZ3RoKCk7Ci0gICAg
bV9pbnRlcm5hbC0+c2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwg
JmRhdGEsICZsZW5ndGgpOworICAgIGdsU2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyog
Y291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykK
QEAgLTEyOTUsNyArOTkyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMo
R0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1
bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c3RlbmNpbEZ1bmNTZXBhcmF0
ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNl
LCBmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
TWFzayhHQzNEdWludCBtYXNrKQpAQCAtMTMwNyw3ICsxMDA0LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CisgICAgZ2xTdGVuY2lsTWFza1Nl
cGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2ls
T3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQpAQCAtMTMx
OSw3ICsxMDE2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVt
IGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdD
M0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZh
Y2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBm
YWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJh
bWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFs
dWUpCkBAIC0xMzM3LDEyMSArMTAzNCwxMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4
UGFyYW1ldGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGkKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQgdjApCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT51bmlmb3JtMWYobG9jYXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xZihs
b2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
MmYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYw
LCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3Jt
MmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNE
aW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihs
b2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3Jt
M2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwg
R0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtNGYobG9jYXRpb24sIHYw
LCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAg
IGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBz
aXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5p
Zm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2Nh
dGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShs
b2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQog
ewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRl
cm5hbC0+dW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTNp
dihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGlu
dCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2Miwg
djMpOworICAgIGdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFy
cmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdD
M0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwg
R0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0
cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUs
IHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
TWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZs
b2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVByb2dy
YW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpA
QCAtMTQ1OSw2MSArMTE1Niw2MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVBy
b2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAg
ICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShw
cm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0Mz
RHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB2
MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0
dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVy
bmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJpYjJm
KGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRy
aWIyZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZl
cnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAgICBnbFZlcnRleEF0dHJpYjNmKGlu
ZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0
cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9h
dCB2MykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CisgICAg
Z2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCog
YXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRl
eEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2
ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVt
IHR5cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRw
dHIgb2Zmc2V0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwg
bm9ybWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PihvZmZzZXQpKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBz
aXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4o
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCkKQEAgLTE1MzEsNyArMTIyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QnVmZmVy
UGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEZsb2F0dihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUp
CkBAIC0xNTQzLDcgKzEyNDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYo
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRh
Y2htZW50LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwg
R0MzRGludCogdmFsdWUpCkBAIC0xNTU1LDcgKzEyNTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1p
dihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFt
LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQ
cm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xNTYzLDcgKzEyNjAs
NyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFt
aXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7
CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9H
X0xFTkdUSCwgJmxlbmd0aCk7CiAKICAgICBHTHNpemVpIHNpemUgPSAwOwogCkBAIC0xNTcxLDcg
KzEyNjgsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAi
IjsKIAotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwg
JnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAm
c2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGlu
Zm8pOwpAQCAtMTU4MiwxNCArMTI3OSwxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVu
dW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PmdldFNoYWRlcml2KHNoYWRlciwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRTaGFkZXJp
dihzaGFkZXIsIHBhcmFtTmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xNTk3LDE0
ICsxMjk0LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRT
aGFkZXJpdihzaGFkZXIsIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5n
dGgpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19M
T0dfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFy
KiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAg
ICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlckluZm9Mb2coc2hh
ZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVy
LCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAg
ZmFzdEZyZWUoaW5mbyk7CkBAIC0xNjE3LDE0ICsxMzE0LDE0IEBAIFN0cmluZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1f
aW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGgg
PSAwOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0
M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNo
YWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsK
IAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZh
c3RNYWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAot
ICAgIG1faW50ZXJuYWwtPmdldFNoYWRlclNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGlu
Zm8pOworICAgIGdsR2V0U2hhZGVyU291cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7
CiAKICAgICBTdHJpbmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTY0
NywxMyArMTM0NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJp
dihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgRwogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBs
b2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBs
b2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlm
b3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29u
c3QgU3RyaW5nJiBuYW1lKQpAQCAtMTY2MSwxOSArMTM1OCwxOSBAQCBHQzNEaW50IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBj
b25zdCBTdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0Rl
bnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYmZ2
KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVy
dGV4QXR0cmliaXYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCog
dmFsdWUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAg
ICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7
CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAK
IEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdD
M0R1aW50IGluZGV4LCBHQzNEZW51bSBwYXJhbU5hbWUpCkBAIC0xNjgxLDcgKzEzNzgsNyBAQCBH
QzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcAogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAgICAgCiAgICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICBtX2ludGVybmFs
LT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7Cisg
ICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNzAyLDcgKzEzOTksNyBAQCBQbGF0Zm9ybTNE
T2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIoKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0g
ICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVycygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBn
bEdlbkJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsK
IH0KIApAQCAtMTcxMCwyOCArMTQwNywyOCBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKICAgICBHTHVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFs
LT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5GcmFt
ZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0K
IAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7
CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4g
bV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIHJldHVybiBnbENyZWF0ZVByb2dyYW0o
KTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwog
ICAgIEdMdWludCBoYW5kbGUgPSAwOwotICAgIG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZlcnMo
LyogY291bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50
ICovIDEsICZoYW5kbGUpOwogICAgIHJldHVybiBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50
ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBlKTsKKyAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIodHlw
ZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1
cmUoKQpAQCAtMTc0NSwzMSArMTQ0MiwzMSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1
ZmZlcik7CisgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVm
ZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAg
bV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xE
ZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5k
ZWxldGVQcm9ncmFtKHByb2dyYW0pOworICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVy
YnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVy
KHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxh
dGZvcm0zRE9iamVjdCB0ZXh0dXJlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101389</attachid>
            <date>2011-07-19 14:35:54 -0700</date>
            <delta_ts>2011-08-01 04:12:05 -0700</delta_ts>
            <desc>update ChangeLog</desc>
            <filename>resolver.diff</filename>
            <type>text/plain</type>
            <size>72161</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ODQ0NzJiLi5jODBlYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE5
IEBACisyMDExLTA3LTE5ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29t
PgorCisgICAgICAgIFtRdF0gTWFrZSBPcGVuR0wgc3ltYm9sIHJlc29sdmVyIHRyYW5zcGFyZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzE1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0aW5n
IG5ldyByZXNvbHZlciBzaG91bGQgYmUgdHJhbnNwYXJlbnQsCisgICAgICAgIGV4aXN0aW5nIHRl
c3RzIHNob3VsZCBhcHBseS4KKworICAgICAgICBBZG9wdCBPcGVuR0xTaGltcyBzeW1ib2wgcmVz
b2x2ZXIgZnJvbSBjYWlybyBmb3IgUXQuCisgICAgICAgIFVwZGF0ZSBUZXh0dXJlTWFwcGVyR0wg
YW5kIFF0IEdyYXBoaWNzQ29udGV4dDNEIHRvIHVzZSB0aGUgcmVzb2x2ZXIuCisKKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xT
aGltcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9jQWRkcmVzcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5HcmFwaGljc0NvbnRleHQz
REludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6
cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmF0
dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0
YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
QXR0cmliTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJp
bmRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRDb2xv
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFy
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBh
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdlbmVyYXRlTWlwbWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZVVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojppc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFt
ZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm0zZik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRm
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTNpKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtM2l2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtNGkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXg0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFt
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZv
TG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
ckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
clNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmli
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJp
Yml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVi
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcik6CisKIDIw
MTEtMDctMTggIFlpIFNoZW4gIDx5aS40LnNoZW5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0g
QVNTRVJUSU9OIEZBSUxFRCBpbiBSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyBjYXVz
ZXMgY3Jhc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZWE2NjY4My4uYjA4ZGE2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KQEAgLTM2MTQsNyArMzYxNCw5IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0x
KSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCiAKLSAg
ICAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1CisgICAgSU5D
TFVERVBBVEggKz0gJCRQV0QvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1CisKKyAgICBDT05GSUcgKz0g
b3BlbmdsLXNoaW1zCiB9CiAKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NSFRNTD0xKSB7CkBA
IC0zNjYyLDggKzM2NjQsMTUgQEAgY29udGFpbnMoQ09ORklHLCB0ZXhtYXApIHsKICAgICAhc3lt
Ymlhbjohd2luMzItKjpjb250YWlucyhRVF9DT05GSUcsIG9wZW5nbCkgewogICAgICAgICBIRUFE
RVJTICs9IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuaAogICAgICAg
ICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CisgICAgICAgIENPTkZJRyArPSBvcGVuZ2wtc2hpbXMKICAgICB9CiB9IGVsc2UgewogICAgIEhF
QURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmgKICAgICBTT1VS
Q0VTICs9IHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKIH0KKworY29u
dGFpbnMoQ09ORklHLCBvcGVuZ2wtc2hpbXMpIHsKKyAgICBIRUFERVJTICs9IHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKKyAgICBTT1VSQ0VTICs9IHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL09wZW5HTFNoaW1zLmNwcAorICAgIERFRklORVMgKz0gUVRfT1BFTkdMX1NISU1T
PTEKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L09wZW5HTFNoaW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L09wZW5HTFNoaW1zLmNwcAppbmRleCA5MmQ3OWY5Li5lNWM1MWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hpbXMuY3BwCkBA
IC0xNyw3ICsxNyw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShX
RUJHTCkKKyNpZiBFTkFCTEUoV0VCR0wpIHx8IGRlZmluZWQoUVRfT1BFTkdMX1NISU1TKQogCiAj
ZGVmaW5lIERJU0FCTEVfU0hJTVMKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgpAQCAtMjYsMTEg
KzI2LDIyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oUVQpICYmIGRlZmluZWQoUVRfT1BFTkdM
X0VTXzIpCisjZGVmaW5lIEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShGdW5jdGlvbk5hbWUs
IHN1Y2Nlc3MpIFwKKyAgICBvcGVuR0xGdW5jdGlvblRhYmxlKCktPkZ1bmN0aW9uTmFtZSA9IDo6
RnVuY3Rpb25OYW1lCisjZWxzZQogI2RlZmluZSBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlko
RnVuY3Rpb25OYW1lLCBzdWNjZXNzKSBcCiAgICAgb3BlbkdMRnVuY3Rpb25UYWJsZSgpLT5GdW5j
dGlvbk5hbWUgPSByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uTmFtZSMjVHlwZT4obG9va3VwT3Bl
bkdMRnVuY3Rpb25BZGRyZXNzKCNGdW5jdGlvbk5hbWUsIHN1Y2Nlc3MpKQorI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorI2lmIFBMQVRGT1JNKFFUKQorc3RhdGljIHZvaWQqIGdldFBy
b2NBZGRyZXNzKGNvbnN0IGNoYXIqIHByb2NOYW1lKQoreworICAgIHJldHVybiBRR0xDb250ZXh0
OjpjdXJyZW50Q29udGV4dCgpLT5nZXRQcm9jQWRkcmVzcyhRU3RyaW5nOjpmcm9tTGF0aW4xKHBy
b2NOYW1lKSk7Cit9CisjZWxzZQogdHlwZWRlZiB2b2lkKiAoKmdsR2V0UHJvY0FkZHJlc3NUeXBl
KSAoY29uc3QgY2hhciogcHJvY05hbWUpOwogc3RhdGljIHZvaWQqIGdldFByb2NBZGRyZXNzKGNv
bnN0IGNoYXIqIHByb2NOYW1lKQogewpAQCAtNDcsNiArNTgsNyBAQCBzdGF0aWMgdm9pZCogZ2V0
UHJvY0FkZHJlc3MoY29uc3QgY2hhciogcHJvY05hbWUpCiAgICAgICAgIHJldHVybiBkbHN5bShS
VExEX0RFRkFVTFQsIHByb2NOYW1lKTsKICAgICByZXR1cm4gZ2V0UHJvY0FkZHJlc3NGdW5jdGlv
bihwcm9jTmFtZSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQqIGxvb2t1cE9wZW5HTEZ1bmN0
aW9uQWRkcmVzcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGJvb2wmIHN1Y2Nlc3MpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xT
aGltcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vT3BlbkdMU2hp
bXMuaAppbmRleCBhNDMxYjAzLi5lZmJkZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9PcGVuR0xTaGltcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL09wZW5HTFNoaW1zLmgKQEAgLTE3LDcgKzE3LDExIEBA
CiAgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAorI2lmIFBMQVRGT1JNKFFUKQorI2lu
Y2x1ZGUgPFFHTENvbnRleHQ+CisjZWxzZQogI2luY2x1ZGUgPEdML2dsLmg+CisjZW5kaWYKIAog
dHlwZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUgT3BlbkdMRnVuY3Rpb25UYWJsZTsK
IApAQCAtMjIzLDQzICsyMjcsNTYgQEAgdHlwZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFi
bGUgewogI2RlZmluZSBnbEF0dGFjaFNoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xBdHRhY2hTaGFkZXIpCiAjZGVmaW5lIGdsQmluZEF0dHJpYkxvY2F0
aW9uICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJpbmRBdHRyaWJMb2Nh
dGlvbikKICNkZWZpbmUgZ2xCaW5kQnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9P
S1VQX0dMX0ZVTkNUSU9OKGdsQmluZEJ1ZmZlcikKLSNkZWZpbmUgZ2xCaW5kRnJhbWVidWZmZXJF
WFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQmluZEZyYW1lYnVmZmVy
KQotI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXJFWFQgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xCaW5kUmVuZGVyYnVmZmVyKQorI2RlZmluZSBnbEJpbmRGcmFtZWJ1ZmZl
ckVYVCAgICAgICAgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcgorI2RlZmluZSBnbEJpbmRG
cmFtZWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5k
RnJhbWVidWZmZXIpCisjZGVmaW5lIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgICAg
ICAgIGdsQmluZFJlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbEJpbmRSZW5kZXJidWZmZXIgICAgICAg
ICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCaW5kUmVuZGVyYnVmZmVyKQogI2Rl
ZmluZSBnbEJsZW5kQ29sb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xCbGVuZENvbG9yKQogI2RlZmluZSBnbEJsZW5kRXF1YXRpb24gICAgICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xCbGVuZEVxdWF0aW9uKQogI2RlZmluZSBn
bEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04o
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpCiAjZGVmaW5lIGdsQmxlbmRGdW5jU2VwYXJhdGUgICAg
ICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJsZW5kRnVuY1NlcGFyYXRlKQot
I2RlZmluZSBnbEJsaXRGcmFtZWJ1ZmZlckVYVCAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xf
RlVOQ1RJT04oZ2xCbGl0RnJhbWVidWZmZXIpCisjZGVmaW5lIGdsQmxpdEZyYW1lYnVmZmVyRVhU
ICAgICAgICAgICAgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyCisjZGVmaW5lIGdsQmxpdEZyYW1l
YnVmZmVyICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEJsaXRGcmFt
ZWJ1ZmZlcikKICNkZWZpbmUgZ2xCdWZmZXJEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAg
TE9PS1VQX0dMX0ZVTkNUSU9OKGdsQnVmZmVyRGF0YSkKICNkZWZpbmUgZ2xCdWZmZXJTdWJEYXRh
ICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsQnVmZmVyU3ViRGF0
YSkKLSNkZWZpbmUgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUICAgICAgICAgICAgTE9PS1VQ
X0dMX0ZVTkNUSU9OKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cykKKyNkZWZpbmUgZ2xDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzRVhUICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzCisj
ZGVmaW5lIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAgICAgICAgICAgICAgIExPT0tVUF9HTF9G
VU5DVElPTihnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMpCiAjZGVmaW5lIGdsQ29tcGlsZVNoYWRl
ciAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENvbXBpbGVTaGFk
ZXIpCiAjZGVmaW5lIGdsQ3JlYXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tV
UF9HTF9GVU5DVElPTihnbENyZWF0ZVByb2dyYW0pCiAjZGVmaW5lIGdsQ3JlYXRlU2hhZGVyICAg
ICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbENyZWF0ZVNoYWRlcikK
ICNkZWZpbmUgZ2xEZWxldGVCdWZmZXJzICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dM
X0ZVTkNUSU9OKGdsRGVsZXRlQnVmZmVycykKLSNkZWZpbmUgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNF
WFQgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGVsZXRlRnJhbWVidWZmZXJz
KQorI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCAgICAgICAgICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycworI2RlZmluZSBnbERlbGV0ZUZyYW1lYnVmZmVycyAgICAgICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVGcmFtZWJ1ZmZlcnMpCiAjZGVmaW5lIGds
RGVsZXRlUHJvZ3JhbSAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bERlbGV0ZVByb2dyYW0pCi0jZGVmaW5lIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAgICAg
ICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMpCisjZGVmaW5l
IGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCAgICAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVycworI2RlZmluZSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVSZW5kZXJidWZmZXJzKQogI2RlZmluZSBnbERlbGV0ZVNo
YWRlciAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xEZWxldGVT
aGFkZXIpCiAjZGVmaW5lIGdsRGV0YWNoU2hhZGVyICAgICAgICAgICAgICAgICAgICAgICAgIExP
T0tVUF9HTF9GVU5DVElPTihnbERldGFjaFNoYWRlcikKICNkZWZpbmUgZ2xEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KQogI2RlZmluZSBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5ICAgICAgICAg
ICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSkKLSNkZWZp
bmUgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIpCi0jZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkRFWFQgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKQorI2RlZmluZSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUICAgICAgICAgICBn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyCisjZGVmaW5lIGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKQorI2RlZmluZSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUICAgICAgICAgICAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJECisjZGVmaW5lIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKQogI2Rl
ZmluZSBnbEdlbkJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVO
Q1RJT04oZ2xHZW5CdWZmZXJzKQotI2RlZmluZSBnbEdlbmVyYXRlTWlwbWFwRVhUICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5lcmF0ZU1pcG1hcCkKLSNkZWZpbmUg
Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9O
KGdsR2VuRnJhbWVidWZmZXJzKQotI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5SZW5kZXJidWZmZXJzKQorI2RlZmlu
ZSBnbEdlbmVyYXRlTWlwbWFwRVhUICAgICAgICAgICAgICAgICAgICBnbEdlbmVyYXRlTWlwbWFw
CisjZGVmaW5lIGdsR2VuZXJhdGVNaXBtYXAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9H
TF9GVU5DVElPTihnbEdlbmVyYXRlTWlwbWFwKQorI2RlZmluZSBnbEdlbkZyYW1lYnVmZmVyc0VY
VCAgICAgICAgICAgICAgICAgICBnbEdlbkZyYW1lYnVmZmVycworI2RlZmluZSBnbEdlbkZyYW1l
YnVmZmVycyAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5GcmFt
ZWJ1ZmZlcnMpCisjZGVmaW5lIGdsR2VuUmVuZGVyYnVmZmVyc0VYVCAgICAgICAgICAgICAgICAg
IGdsR2VuUmVuZGVyYnVmZmVycworI2RlZmluZSBnbEdlblJlbmRlcmJ1ZmZlcnMgICAgICAgICAg
ICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZW5SZW5kZXJidWZmZXJzKQogI2RlZmlu
ZSBnbEdldEFjdGl2ZUF0dHJpYiAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJ
T04oZ2xHZXRBY3RpdmVBdHRyaWIpCiAjZGVmaW5lIGdsR2V0QWN0aXZlVW5pZm9ybSAgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEFjdGl2ZVVuaWZvcm0pCiAjZGVm
aW5lIGdsR2V0QXR0YWNoZWRTaGFkZXJzICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5D
VElPTihnbEdldEF0dGFjaGVkU2hhZGVycykKICNkZWZpbmUgZ2xHZXRBdHRyaWJMb2NhdGlvbiAg
ICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QXR0cmliTG9jYXRpb24p
CisjZGVmaW5lIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAgICAgICAgIGdsR2V0QnVm
ZmVyUGFyYW1ldGVyaXYKICNkZWZpbmUgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYpCi0jZGVmaW5l
IGdsR2V0QnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElP
TihnbEdldEJ1ZmZlclBhcmFtZXRlcml2KQotI2RlZmluZSBnbEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2RVhUIExPT0tVUF9HTF9GVU5DVElPTihnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KQorI2RlZmluZSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2RVhUIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYKKyNkZWZp
bmUgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiAgTE9PS1VQX0dMX0ZVTkNU
SU9OKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpCiAjZGVmaW5lIGdsR2V0
UHJvZ3JhbUluZm9Mb2cgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdl
dFByb2dyYW1JbmZvTG9nKQogI2RlZmluZSBnbEdldFByb2dyYW1pdiAgICAgICAgICAgICAgICAg
ICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRQcm9ncmFtaXYpCi0jZGVmaW5lIGdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KQorI2RlZmluZSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2RVhUICAgICAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2CisjZGVmaW5lIGds
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KQogI2RlZmluZSBnbEdldFNoYWRlckluZm9Mb2cg
ICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJJbmZvTG9n
KQogI2RlZmluZSBnbEdldFNoYWRlcml2ICAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJpdikKICNkZWZpbmUgZ2xHZXRTaGFkZXJTb3VyY2UgICAg
ICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0U2hhZGVyU291cmNlKQpA
QCAtMjcwLDEzICsyODcsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgX09wZW5HTEZ1bmN0aW9uVGFibGUg
ewogI2RlZmluZSBnbEdldFZlcnRleEF0dHJpYml2ICAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRWZXJ0ZXhBdHRyaWJpdikKICNkZWZpbmUgZ2xHZXRWZXJ0ZXhBdHRy
aWJQb2ludGVydiAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0VmVydGV4QXR0
cmliUG9pbnRlcnYpCiAjZGVmaW5lIGdsSXNCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbElzQnVmZmVyKQotI2RlZmluZSBnbElzRnJhbWVidWZm
ZXJFWFQgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc0ZyYW1lYnVm
ZmVyKQorI2RlZmluZSBnbElzRnJhbWVidWZmZXJFWFQgICAgICAgICAgICAgICAgICAgICBnbElz
RnJhbWVidWZmZXIKKyNkZWZpbmUgZ2xJc0ZyYW1lYnVmZmVyICAgICAgICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNGcmFtZWJ1ZmZlcikKICNkZWZpbmUgZ2xJc1Byb2dy
YW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNQcm9n
cmFtKQotI2RlZmluZSBnbElzUmVuZGVyYnVmZmVyRVhUICAgICAgICAgICAgICAgICAgICBMT09L
VVBfR0xfRlVOQ1RJT04oZ2xJc1JlbmRlcmJ1ZmZlcikKKyNkZWZpbmUgZ2xJc1JlbmRlcmJ1ZmZl
ckVYVCAgICAgICAgICAgICAgICAgICAgZ2xJc1JlbmRlcmJ1ZmZlcgorI2RlZmluZSBnbElzUmVu
ZGVyYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xJc1Jl
bmRlcmJ1ZmZlcikKICNkZWZpbmUgZ2xJc1NoYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsSXNTaGFkZXIpCiAjZGVmaW5lIGdsTGlua1Byb2dyYW0g
ICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbExpbmtQcm9ncmFt
KQotI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZmZXJTdG9yYWdlKQotI2RlZmluZSBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUVYVCAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUpCisjZGVmaW5lIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCAg
ICAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlKQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCAg
ICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZQorI2RlZmluZSBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZSAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUpCiAjZGVmaW5lIGdsU2FtcGxlQ292ZXJhZ2UgICAgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbFNhbXBsZUNvdmVyYWdlKQogI2RlZmlu
ZSBnbFNoYWRlclNvdXJjZSAgICAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJ
T04oZ2xTaGFkZXJTb3VyY2UpCiAjZGVmaW5lIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSAgICAgICAg
ICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbFN0ZW5jaWxGdW5jU2VwYXJhdGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1h
cHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0
dXJlTWFwcGVyR0wuY3BwCmluZGV4IDZkNWY1MTAuLmI3YTExZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVy
R0wuY3BwCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgZGVmaW5lZChURVhNQVBfT1BFTkdMX0VT
XzIpCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KKyNl
bGlmIGRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18yKQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgog
I2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgogI2VsaWYgT1MoTUFDX09TX1gpCkBAIC0zNyw3ICsz
OSw3IEBACiAjaW5jbHVkZSA8R0wvZ2wuaD4KICNlbmRpZgogCi0jaWZuZGVmIFRFWE1BUF9PUEVO
R0xfRVNfMgorI2lmICFkZWZpbmVkKFRFWE1BUF9PUEVOR0xfRVNfMikgJiYgIVBMQVRGT1JNKFFU
KQogZXh0ZXJuICJDIiB7CiAgICAgdm9pZCBnbFVuaWZvcm0xZihHTGludCwgR0xmbG9hdCk7CiAg
ICAgdm9pZCBnbFVuaWZvcm0xaShHTGludCwgR0xpbnQpOwpAQCAtMzg4LDYgKzM5MCw5IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdMOjppbml0aWFsaXplU2hhZGVycygpCiB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6YmVnaW5QYWludGluZygpCiB7CiAjaWYgUExBVEZPUk0oUVQpCisgICAgaWYgKCFpbml0
aWFsaXplT3BlbkdMU2hpbXMoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9DVVJSRU5UX1BST0dSQU0sICZtX2RhdGEtPnByZXZpb3VzUHJvZ3JhbSk7CiAgICAgUVBh
aW50ZXIqIHBhaW50ZXIgPSBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHBhaW50
ZXItPnNhdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggMmViZGNmYS4uNzJiMjg4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogCiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKKyNpbmNsdWRlIDxj
YWlyby9PcGVuR0xTaGltcy5oPgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgpAQCAtNTUsMTA5ICs1Niw2IEBAIHR5cGVkZWYgY2hhciBHTGNoYXI7CiAjZGVmaW5lIEdMX0RF
UFRIMjRfU1RFTkNJTDggMHg4OEYwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEFQSUVOVFJZKQot
I2RlZmluZSBBUElFTlRSWQotI2VuZGlmCi0KLSNpZmRlZiBRVF9PUEVOR0xfRVNfMgotdHlwZWRl
ZiBHTHNpemVpcHRyIEdMc2l6ZWlwdHJUeXBlOwotdHlwZWRlZiBHTGludHB0ciBHTGludHB0clR5
cGU7Ci0jZWxzZQotdHlwZWRlZiBwdHJkaWZmX3QgR0xzaXplaXB0clR5cGU7Ci10eXBlZGVmIHB0
cmRpZmZfdCBHTGludHB0clR5cGU7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xBY3RpdmVUZXh0dXJlVHlwZSkgKEdMZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bEF0dGFjaFNoYWRlclR5cGUpIChHTHVpbnQsIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbEJpbmRBdHRyaWJMb2NhdGlvblR5cGUpIChHTHVpbnQsIEdMdWludCwgY29uc3QgY2hh
ciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCaW5kQnVmZmVyVHlwZSkgKEdMZW51bSwg
R0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZEZyYW1lYnVmZmVyVHlwZSkg
KEdMZW51bSwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmluZFJlbmRlcmJ1
ZmZlclR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJs
ZW5kQ29sb3JUeXBlKSAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYpOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xCbGVuZEVxdWF0aW9uVHlwZSkgKEdMZW51bSk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZVR5cGUpKEdMZW51
bSwgR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsQmxlbmRGdW5jU2VwYXJhdGVU
eXBlKShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51
bSBkc3RBbHBoYSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEJ1ZmZlckRhdGFUeXBlKSAo
R0xlbnVtLCBHTHNpemVpcHRyVHlwZSwgY29uc3QgR0x2b2lkKiwgR0xlbnVtKTsKLXR5cGVkZWYg
dm9pZCAoQVBJRU5UUlkqIGdsQnVmZmVyU3ViRGF0YVR5cGUpIChHTGVudW0sIEdMaW50cHRyVHlw
ZSwgR0xzaXplaXB0clR5cGUsIGNvbnN0IEdMdm9pZCopOwotdHlwZWRlZiBHTGVudW0gKEFQSUVO
VFJZKiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsQ29tcGlsZVNoYWRlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTHVp
bnQgKEFQSUVOVFJZKiBnbENyZWF0ZVByb2dyYW1UeXBlKSAoKTsKLXR5cGVkZWYgR0x1aW50IChB
UElFTlRSWSogZ2xDcmVhdGVTaGFkZXJUeXBlKSAoR0xlbnVtKTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsRGVsZXRlQnVmZmVyc1R5cGUpIChHTHNpemVpLCBjb25zdCBHTHVpbnQqKTsKLXR5
cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbERlbGV0ZVByb2dy
YW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsRGVsZXRlUmVuZGVy
YnVmZmVyc1R5cGUpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopOwotdHlwZWRlZiB2b2lkIChB
UElFTlRSWSogZ2xEZWxldGVTaGFkZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJ
RU5UUlkqIGdsRGV0YWNoU2hhZGVyVHlwZSkgKEdMdWludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdMdWludCk7Ci10
eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSkgKEdM
dWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVu
dW0sIEdMdWludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5CdWZmZXJz
VHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZW5l
cmF0ZU1pcG1hcFR5cGUpIChHTGVudW0gdGFyZ2V0KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkq
IGdsR2VuRnJhbWVidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwotdHlwZWRlZiB2b2lk
IChBUElFTlRSWSogZ2xHZW5SZW5kZXJidWZmZXJzVHlwZSkgKEdMc2l6ZWksIEdMdWludCopOwot
dHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVBdHRyaWJUeXBlKSAoR0x1aW50LCBH
THVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCosIEdMZW51bSosIEdMY2hhciopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRBY3RpdmVVbmlmb3JtVHlwZSkgKEdMdWludCwgR0x1
aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKTsKLXR5cGVk
ZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0QXR0YWNoZWRTaGFkZXJzVHlwZSkgKEdMdWludCwgR0xz
aXplaSwgR0xzaXplaSosIEdMdWludCopOwotdHlwZWRlZiBHTGludCAoQVBJRU5UUlkqIGdsR2V0
QXR0cmliTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwgR0xlbnVtLCBH
TGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdlR5cGUpIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1z
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0UHJvZ3JhbUluZm9Mb2dUeXBlKSAoR0x1
aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xHZXRQcm9ncmFtaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2VHlwZSkgKEdMZW51bSwg
R0xlbnVtLCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRTaGFkZXJJbmZv
TG9nVHlwZSkgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKTsKLXR5cGVkZWYgdm9p
ZCAoQVBJRU5UUlkqIGdsR2V0U2hhZGVyaXZUeXBlKSAoR0x1aW50LCBHTGVudW0sIEdMaW50Kik7
Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQs
IEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Ci10eXBlZGVmIEdMaW50IChBUElFTlRSWSogZ2xH
ZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7Ci10eXBlZGVmIHZv
aWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1mdlR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0
Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbEdldFVuaWZvcm1pdlR5cGUpIChHTHVpbnQs
IEdMaW50LCBHTGludCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xHZXRWZXJ0ZXhBdHRy
aWJmdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElF
TlRSWSogZ2xHZXRWZXJ0ZXhBdHRyaWJpdlR5cGUpIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKTsK
LXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZUeXBlKSAo
R0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRSWSog
Z2xJc0J1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQSUVOVFJZKiBn
bElzRnJhbWVidWZmZXJUeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRS
WSogZ2xJc1Byb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgR0xib29sZWFuIChBUElFTlRS
WSogZ2xJc1JlbmRlcmJ1ZmZlclR5cGUpIChHTHVpbnQpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEFQ
SUVOVFJZKiBnbElzU2hhZGVyVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbExpbmtQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2VUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6
ZWkpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTYW1wbGVDb3ZlcmFnZVR5cGUpIChHTGNs
YW1wZiwgR0xib29sZWFuKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU2hhZGVyU291cmNl
VHlwZSkgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioqLCBjb25zdCBHTGludCopOwotdHlw
ZWRlZiB2b2lkIChBUElFTlRSWSogZ2xTdGVuY2lsRnVuY1NlcGFyYXRlVHlwZSkgKEdMZW51bSwg
R0xlbnVtLCBHTGludCwgR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsU3RlbmNp
bE1hc2tTZXBhcmF0ZVR5cGUpIChHTGVudW0sIEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFN0ZW5jaWxPcFNlcGFyYXRlVHlwZSkgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdM
ZW51bSk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZlR5cGUpIChHTGludCwg
R0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0xZnZUeXBlKSAoR0xp
bnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGds
VW5pZm9ybTFpVHlwZSkgKEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBn
bFVuaWZvcm0xaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZlR5cGUpIChHTGludCwgR0xmbG9hdCwgR0xmbG9h
dCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0yZnZUeXBlKSAoR0xpbnQsIEdM
c2l6ZWksIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9y
bTJpVHlwZSkgKEdMaW50LCBHTGludCwgR0xpbnQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSog
Z2xVbmlmb3JtMml2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopOwotdHlwZWRl
ZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2ZUeXBlKSAoR0xpbnQsIEdMZmxvYXQsIEdMZmxv
YXQsIEdMZmxvYXQpOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3JtM2Z2VHlwZSkg
KEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZ
KiBnbFVuaWZvcm0zaVR5cGUpIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVm
IHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm0zaXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0
IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZvcm00ZlR5cGUpIChHTGlu
dCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCwgR0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVuaWZvcm00ZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybTRpVHlwZSkgKEdMaW50LCBHTGlu
dCwgR0xpbnQsIEdMaW50LCBHTGludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFVuaWZv
cm00aXZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50Kik7Ci10eXBlZGVmIHZvaWQg
KEFQSUVOVFJZKiBnbFVuaWZvcm1NYXRyaXgyZnZUeXBlKSAoR0xpbnQsIEdMc2l6ZWksIEdMYm9v
bGVhbiwgY29uc3QgR0xmbG9hdCopOwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xVbmlmb3Jt
TWF0cml4M2Z2VHlwZSkgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQq
KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVW5pZm9ybU1hdHJpeDRmdlR5cGUpIChHTGlu
dCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQ
SUVOVFJZKiBnbFVzZVByb2dyYW1UeXBlKSAoR0x1aW50KTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5U
UlkqIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSkgKEdMdWludCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVO
VFJZKiBnbFZlcnRleEF0dHJpYjFmVHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCk7Ci10eXBl
ZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjFmdlR5cGUpIChHTHVpbnQsIGNvbnN0
IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZUeXBl
KSAoR0x1aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KTsKLXR5cGVkZWYgdm9pZCAo
QVBJRU5UUlkqIGdsVmVydGV4QXR0cmliMmZ2VHlwZSkgKEdMdWludCwgY29uc3QgR0xmbG9hdCop
OwotdHlwZWRlZiB2b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZlR5cGUpIChHTHVpbnQs
IGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpOwotdHlwZWRlZiB2
b2lkIChBUElFTlRSWSogZ2xWZXJ0ZXhBdHRyaWIzZnZUeXBlKSAoR0x1aW50LCBjb25zdCBHTGZs
b2F0Kik7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmVHlwZSkgKEdM
dWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3Qg
R0xmbG9hdCk7Ci10eXBlZGVmIHZvaWQgKEFQSUVOVFJZKiBnbFZlcnRleEF0dHJpYjRmdlR5cGUp
IChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKTsKLXR5cGVkZWYgdm9pZCAoQVBJRU5UUlkqIGdsVmVy
dGV4QXR0cmliUG9pbnRlclR5cGUpIChHTHVpbnQsIEdMaW50LCBHTGVudW0sIEdMYm9vbGVhbiwg
R0xzaXplaSwgY29uc3QgR0x2b2lkKik7Ci0KIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpAQCAtMTgyLDk3ICs4MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhaW50KFFQYWludGVy
KiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwogICAgIFFSZWN0
RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKIAotICAgIGdsQWN0aXZlVGV4dHVyZVR5cGUgYWN0aXZl
VGV4dHVyZTsKLSAgICBnbEF0dGFjaFNoYWRlclR5cGUgYXR0YWNoU2hhZGVyOwotICAgIGdsQmlu
ZEF0dHJpYkxvY2F0aW9uVHlwZSBiaW5kQXR0cmliTG9jYXRpb247Ci0gICAgZ2xCaW5kQnVmZmVy
VHlwZSBiaW5kQnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyVHlwZSBiaW5kRnJhbWVidWZm
ZXI7Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyVHlwZSBiaW5kUmVuZGVyYnVmZmVyOwotICAgIGds
QmxlbmRDb2xvclR5cGUgYmxlbmRDb2xvcjsKLSAgICBnbEJsZW5kRXF1YXRpb25UeXBlIGJsZW5k
RXF1YXRpb247Ci0gICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVUeXBlIGJsZW5kRXF1YXRpb25T
ZXBhcmF0ZTsKLSAgICBnbEJsZW5kRnVuY1NlcGFyYXRlVHlwZSBibGVuZEZ1bmNTZXBhcmF0ZTsK
LSAgICBnbEJ1ZmZlckRhdGFUeXBlIGJ1ZmZlckRhdGE7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhVHlw
ZSBidWZmZXJTdWJEYXRhOwotICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c1R5cGUgY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1czsKLSAgICBnbENvbXBpbGVTaGFkZXJUeXBlIGNvbXBpbGVTaGFkZXI7
Ci0gICAgZ2xDcmVhdGVQcm9ncmFtVHlwZSBjcmVhdGVQcm9ncmFtOwotICAgIGdsQ3JlYXRlU2hh
ZGVyVHlwZSBjcmVhdGVTaGFkZXI7Ci0gICAgZ2xEZWxldGVCdWZmZXJzVHlwZSBkZWxldGVCdWZm
ZXJzOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzVHlwZSBkZWxldGVGcmFtZWJ1ZmZlcnM7Ci0g
ICAgZ2xEZWxldGVQcm9ncmFtVHlwZSBkZWxldGVQcm9ncmFtOwotICAgIGdsRGVsZXRlUmVuZGVy
YnVmZmVyc1R5cGUgZGVsZXRlUmVuZGVyYnVmZmVyczsKLSAgICBnbERlbGV0ZVNoYWRlclR5cGUg
ZGVsZXRlU2hhZGVyOwotICAgIGdsRGV0YWNoU2hhZGVyVHlwZSBkZXRhY2hTaGFkZXI7Ci0gICAg
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXlUeXBlIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheTsK
LSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5VHlwZSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyVHlwZSBmcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcjsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEVHlwZSBmcmFtZWJ1ZmZlclRleHR1cmUy
RDsKLSAgICBnbEdlbkJ1ZmZlcnNUeXBlIGdlbkJ1ZmZlcnM7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1h
cFR5cGUgZ2VuZXJhdGVNaXBtYXA7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnNUeXBlIGdlbkZyYW1l
YnVmZmVyczsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnNUeXBlIGdlblJlbmRlcmJ1ZmZlcnM7Ci0g
ICAgZ2xHZXRBY3RpdmVBdHRyaWJUeXBlIGdldEFjdGl2ZUF0dHJpYjsKLSAgICBnbEdldEFjdGl2
ZVVuaWZvcm1UeXBlIGdldEFjdGl2ZVVuaWZvcm07Ci0gICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnNU
eXBlIGdldEF0dGFjaGVkU2hhZGVyczsKLSAgICBnbEdldEF0dHJpYkxvY2F0aW9uVHlwZSBnZXRB
dHRyaWJMb2NhdGlvbjsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2VHlwZSBnZXRCdWZmZXJQ
YXJhbWV0ZXJpdjsKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2VHlw
ZSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdjsKLSAgICBnbEdldFByb2dyYW1J
bmZvTG9nVHlwZSBnZXRQcm9ncmFtSW5mb0xvZzsKLSAgICBnbEdldFByb2dyYW1pdlR5cGUgZ2V0
UHJvZ3JhbWl2OwotICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlIGdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2OwotICAgIGdsR2V0U2hhZGVySW5mb0xvZ1R5cGUgZ2V0U2hhZGVy
SW5mb0xvZzsKLSAgICBnbEdldFNoYWRlcml2VHlwZSBnZXRTaGFkZXJpdjsKLSAgICBnbEdldFNo
YWRlclNvdXJjZVR5cGUgZ2V0U2hhZGVyU291cmNlOwotICAgIGdsR2V0VW5pZm9ybWZ2VHlwZSBn
ZXRVbmlmb3JtZnY7Ci0gICAgZ2xHZXRVbmlmb3JtaXZUeXBlIGdldFVuaWZvcm1pdjsKLSAgICBn
bEdldFVuaWZvcm1Mb2NhdGlvblR5cGUgZ2V0VW5pZm9ybUxvY2F0aW9uOwotICAgIGdsR2V0VmVy
dGV4QXR0cmliZnZUeXBlIGdldFZlcnRleEF0dHJpYmZ2OwotICAgIGdsR2V0VmVydGV4QXR0cmli
aXZUeXBlIGdldFZlcnRleEF0dHJpYml2OwotICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnZU
eXBlIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2OwotICAgIGdsSXNCdWZmZXJUeXBlIGlzQnVmZmVy
OwotICAgIGdsSXNGcmFtZWJ1ZmZlclR5cGUgaXNGcmFtZWJ1ZmZlcjsKLSAgICBnbElzUHJvZ3Jh
bVR5cGUgaXNQcm9ncmFtOwotICAgIGdsSXNSZW5kZXJidWZmZXJUeXBlIGlzUmVuZGVyYnVmZmVy
OwotICAgIGdsSXNTaGFkZXJUeXBlIGlzU2hhZGVyOwotICAgIGdsTGlua1Byb2dyYW1UeXBlIGxp
bmtQcm9ncmFtOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZVR5cGUgcmVuZGVyYnVmZmVyU3Rv
cmFnZTsKLSAgICBnbFNhbXBsZUNvdmVyYWdlVHlwZSBzYW1wbGVDb3ZlcmFnZTsKLSAgICBnbFNo
YWRlclNvdXJjZVR5cGUgc2hhZGVyU291cmNlOwotICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZVR5
cGUgc3RlbmNpbEZ1bmNTZXBhcmF0ZTsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGVUeXBlIHN0
ZW5jaWxNYXNrU2VwYXJhdGU7Ci0gICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZVR5cGUgc3RlbmNpbE9w
U2VwYXJhdGU7Ci0gICAgZ2xVbmlmb3JtMWZUeXBlIHVuaWZvcm0xZjsKLSAgICBnbFVuaWZvcm0x
ZnZUeXBlIHVuaWZvcm0xZnY7Ci0gICAgZ2xVbmlmb3JtMWlUeXBlIHVuaWZvcm0xaTsKLSAgICBn
bFVuaWZvcm0xaXZUeXBlIHVuaWZvcm0xaXY7Ci0gICAgZ2xVbmlmb3JtMmZUeXBlIHVuaWZvcm0y
ZjsKLSAgICBnbFVuaWZvcm0yZnZUeXBlIHVuaWZvcm0yZnY7Ci0gICAgZ2xVbmlmb3JtMmlUeXBl
IHVuaWZvcm0yaTsKLSAgICBnbFVuaWZvcm0yaXZUeXBlIHVuaWZvcm0yaXY7Ci0gICAgZ2xVbmlm
b3JtM2ZUeXBlIHVuaWZvcm0zZjsKLSAgICBnbFVuaWZvcm0zZnZUeXBlIHVuaWZvcm0zZnY7Ci0g
ICAgZ2xVbmlmb3JtM2lUeXBlIHVuaWZvcm0zaTsKLSAgICBnbFVuaWZvcm0zaXZUeXBlIHVuaWZv
cm0zaXY7Ci0gICAgZ2xVbmlmb3JtNGZUeXBlIHVuaWZvcm00ZjsKLSAgICBnbFVuaWZvcm00ZnZU
eXBlIHVuaWZvcm00ZnY7Ci0gICAgZ2xVbmlmb3JtNGlUeXBlIHVuaWZvcm00aTsKLSAgICBnbFVu
aWZvcm00aXZUeXBlIHVuaWZvcm00aXY7Ci0gICAgZ2xVbmlmb3JtTWF0cml4MmZ2VHlwZSB1bmlm
b3JtTWF0cml4MmZ2OwotICAgIGdsVW5pZm9ybU1hdHJpeDNmdlR5cGUgdW5pZm9ybU1hdHJpeDNm
djsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnZUeXBlIHVuaWZvcm1NYXRyaXg0ZnY7Ci0gICAgZ2xV
c2VQcm9ncmFtVHlwZSB1c2VQcm9ncmFtOwotICAgIGdsVmFsaWRhdGVQcm9ncmFtVHlwZSB2YWxp
ZGF0ZVByb2dyYW07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWIxZlR5cGUgdmVydGV4QXR0cmliMWY7Ci0g
ICAgZ2xWZXJ0ZXhBdHRyaWIxZnZUeXBlIHZlcnRleEF0dHJpYjFmdjsKLSAgICBnbFZlcnRleEF0
dHJpYjJmVHlwZSB2ZXJ0ZXhBdHRyaWIyZjsKLSAgICBnbFZlcnRleEF0dHJpYjJmdlR5cGUgdmVy
dGV4QXR0cmliMmZ2OwotICAgIGdsVmVydGV4QXR0cmliM2ZUeXBlIHZlcnRleEF0dHJpYjNmOwot
ICAgIGdsVmVydGV4QXR0cmliM2Z2VHlwZSB2ZXJ0ZXhBdHRyaWIzZnY7Ci0gICAgZ2xWZXJ0ZXhB
dHRyaWI0ZlR5cGUgdmVydGV4QXR0cmliNGY7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0ZnZUeXBlIHZl
cnRleEF0dHJpYjRmdjsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXJUeXBlIHZlcnRleEF0dHJp
YlBvaW50ZXI7Ci0KICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBtX2F0dHJzOwog
ICAgIEhvc3RXaW5kb3cqIG1faG9zdFdpbmRvdzsKICAgICBRR0xXaWRnZXQqIG1fZ2xXaWRnZXQ7
CkBAIC0yODgsMTcgKzk1LDkgQEAgcHVibGljOgogICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4g
bV9leHRlbnNpb25zOwogCiBwcml2YXRlOgotCi0gICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29u
c3QgU3RyaW5nJiBwcm9jKTsKICAgICBib29sIG1fdmFsaWQ7CiB9OwogCi0jaWYgZGVmaW5lZCAo
UVRfT1BFTkdMX0VTXzIpIAotI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTKFByb2MpIFByb2MKLSNl
bHNlCi0jZGVmaW5lIEdFVF9QUk9DX0FERFJFU1MoUHJvYykgcmVpbnRlcnByZXRfY2FzdDxQcm9j
IyNUeXBlPihnZXRQcm9jQWRkcmVzcygjUHJvYykpOwotI2VuZGlmCi0KIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewogI2lmIGRlZmluZWQgKFFUX09Q
RU5HTF9FU18yKQpAQCAtMzQ2LDEwNCArMTQ1LDE5IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCi0gICAgYWN0aXZlVGV4dHVyZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xBY3RpdmVUZXh0dXJlKTsKLSAgICBhdHRhY2hTaGFkZXIgPSBH
RVRfUFJPQ19BRERSRVNTKGdsQXR0YWNoU2hhZGVyKTsKLSAgICBiaW5kQXR0cmliTG9jYXRpb24g
PSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZEF0dHJpYkxvY2F0aW9uKTsKLSAgICBiaW5kQnVmZmVy
ID0gR0VUX1BST0NfQUREUkVTUyhnbEJpbmRCdWZmZXIpOwotICAgIGJpbmRGcmFtZWJ1ZmZlciA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xCaW5kRnJhbWVidWZmZXIpOwotICAgIGJpbmRSZW5kZXJidWZm
ZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsQmluZFJlbmRlcmJ1ZmZlcik7Ci0gICAgYmxlbmRDb2xv
ciA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZENvbG9yKTsKLSAgICBibGVuZEVxdWF0aW9uID0g
R0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRXF1YXRpb24pOwotICAgIGJsZW5kRXF1YXRpb25TZXBh
cmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUpOwotICAgIGJs
ZW5kRnVuY1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbEJsZW5kRnVuY1NlcGFyYXRlKTsK
LSAgICBidWZmZXJEYXRhID0gR0VUX1BST0NfQUREUkVTUyhnbEJ1ZmZlckRhdGEpOwotICAgIGJ1
ZmZlclN1YkRhdGEgPSBHRVRfUFJPQ19BRERSRVNTKGdsQnVmZmVyU3ViRGF0YSk7Ci0gICAgY2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKTsKLSAgICBjb21waWxlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENvbXBpbGVT
aGFkZXIpOwotICAgIGNyZWF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsQ3JlYXRlUHJv
Z3JhbSk7Ci0gICAgY3JlYXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbENyZWF0ZVNoYWRl
cik7Ci0gICAgZGVsZXRlQnVmZmVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xEZWxldGVCdWZmZXJz
KTsKLSAgICBkZWxldGVGcmFtZWJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGdsRGVsZXRlRnJh
bWVidWZmZXJzKTsKLSAgICBkZWxldGVQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbERlbGV0
ZVByb2dyYW0pOwotICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcnMgPSBHRVRfUFJPQ19BRERSRVNTKGds
RGVsZXRlUmVuZGVyYnVmZmVycyk7Ci0gICAgZGVsZXRlU2hhZGVyID0gR0VUX1BST0NfQUREUkVT
UyhnbERlbGV0ZVNoYWRlcik7Ci0gICAgZGV0YWNoU2hhZGVyID0gR0VUX1BST0NfQUREUkVTUyhn
bERldGFjaFNoYWRlcik7Ci0gICAgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5ID0gR0VUX1BST0Nf
QUREUkVTUyhnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSk7Ci0gICAgZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkgPSBHRVRfUFJPQ19BRERSRVNTKGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwot
ICAgIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyID0gR0VUX1BST0NfQUREUkVTUyhnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKTsKLSAgICBmcmFtZWJ1ZmZlclRleHR1cmUyRCA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCk7Ci0gICAgZ2VuQnVmZmVycyA9IEdFVF9QUk9D
X0FERFJFU1MoZ2xHZW5CdWZmZXJzKTsKLSAgICBnZW5lcmF0ZU1pcG1hcCA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xHZW5lcmF0ZU1pcG1hcCk7Ci0gICAgZ2VuRnJhbWVidWZmZXJzID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdlbkZyYW1lYnVmZmVycyk7Ci0gICAgZ2VuUmVuZGVyYnVmZmVycyA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZW5SZW5kZXJidWZmZXJzKTsKLSAgICBnZXRBY3RpdmVBdHRyaWIgPSBH
RVRfUFJPQ19BRERSRVNTKGdsR2V0QWN0aXZlQXR0cmliKTsKLSAgICBnZXRBY3RpdmVVbmlmb3Jt
ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEFjdGl2ZVVuaWZvcm0pOwotICAgIGdldEF0dGFjaGVk
U2hhZGVycyA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRBdHRhY2hlZFNoYWRlcnMpOwotICAgIGdl
dEF0dHJpYkxvY2F0aW9uID0gR0VUX1BST0NfQUREUkVTUyhnbEdldEF0dHJpYkxvY2F0aW9uKTsK
LSAgICBnZXRCdWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdik7Ci0gICAgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgPSBH
RVRfUFJPQ19BRERSRVNTKGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOwot
ICAgIGdldFByb2dyYW1JbmZvTG9nID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFByb2dyYW1JbmZv
TG9nKTsKLSAgICBnZXRQcm9ncmFtaXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0UHJvZ3JhbWl2
KTsKLSAgICBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xH
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik7Ci0gICAgZ2V0U2hhZGVySW5mb0xvZyA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKLSAgICBnZXRTaGFkZXJpdiA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xHZXRTaGFkZXJpdik7Ci0gICAgZ2V0U2hhZGVyU291cmNlID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFNoYWRlclNvdXJjZSk7Ci0gICAgZ2V0VW5pZm9ybWZ2ID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFVuaWZvcm1mdik7Ci0gICAgZ2V0VW5pZm9ybWl2ID0gR0VUX1BST0Nf
QUREUkVTUyhnbEdldFVuaWZvcm1pdik7Ci0gICAgZ2V0VW5pZm9ybUxvY2F0aW9uID0gR0VUX1BS
T0NfQUREUkVTUyhnbEdldFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgZ2V0VmVydGV4QXR0cmliZnYg
PSBHRVRfUFJPQ19BRERSRVNTKGdsR2V0VmVydGV4QXR0cmliZnYpOwotICAgIGdldFZlcnRleEF0
dHJpYml2ID0gR0VUX1BST0NfQUREUkVTUyhnbEdldFZlcnRleEF0dHJpYml2KTsKLSAgICBnZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVydiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xHZXRWZXJ0ZXhBdHRyaWJQ
b2ludGVydik7Ci0gICAgaXNCdWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNCdWZmZXIpOwot
ICAgIGlzRnJhbWVidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNGcmFtZWJ1ZmZlcik7Ci0g
ICAgaXNQcm9ncmFtID0gR0VUX1BST0NfQUREUkVTUyhnbElzUHJvZ3JhbSk7Ci0gICAgaXNSZW5k
ZXJidWZmZXIgPSBHRVRfUFJPQ19BRERSRVNTKGdsSXNSZW5kZXJidWZmZXIpOwotICAgIGlzU2hh
ZGVyID0gR0VUX1BST0NfQUREUkVTUyhnbElzU2hhZGVyKTsKLSAgICBsaW5rUHJvZ3JhbSA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xMaW5rUHJvZ3JhbSk7Ci0gICAgcmVuZGVyYnVmZmVyU3RvcmFnZSA9
IEdFVF9QUk9DX0FERFJFU1MoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKTsKLSAgICBzYW1wbGVDb3Zl
cmFnZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTYW1wbGVDb3ZlcmFnZSk7Ci0gICAgc2hhZGVyU291
cmNlID0gR0VUX1BST0NfQUREUkVTUyhnbFNoYWRlclNvdXJjZSk7Ci0gICAgc3RlbmNpbEZ1bmNT
ZXBhcmF0ZSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKTsKLSAgICBz
dGVuY2lsTWFza1NlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxNYXNrU2VwYXJh
dGUpOwotICAgIHN0ZW5jaWxPcFNlcGFyYXRlID0gR0VUX1BST0NfQUREUkVTUyhnbFN0ZW5jaWxP
cFNlcGFyYXRlKTsKLSAgICB1bmlmb3JtMWYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFm
KTsKLSAgICB1bmlmb3JtMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0xZnYpOwotICAg
IHVuaWZvcm0xaSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtMWkpOwotICAgIHVuaWZvcm0x
aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTFpdik7Ci0gICAgdW5pZm9ybTJmID0gR0VU
X1BST0NfQUREUkVTUyhnbFVuaWZvcm0yZik7Ci0gICAgdW5pZm9ybTJmdiA9IEdFVF9QUk9DX0FE
RFJFU1MoZ2xVbmlmb3JtMmZ2KTsKLSAgICB1bmlmb3JtMmkgPSBHRVRfUFJPQ19BRERSRVNTKGds
VW5pZm9ybTJpKTsKLSAgICB1bmlmb3JtMml2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0y
aXYpOwotICAgIHVuaWZvcm0zZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2YpOwotICAg
IHVuaWZvcm0zZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTNmdik7Ci0gICAgdW5pZm9y
bTNpID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm0zaSk7Ci0gICAgdW5pZm9ybTNpdiA9IEdF
VF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtM2l2KTsKLSAgICB1bmlmb3JtNGYgPSBHRVRfUFJPQ19B
RERSRVNTKGdsVW5pZm9ybTRmKTsKLSAgICB1bmlmb3JtNGZ2ID0gR0VUX1BST0NfQUREUkVTUyhn
bFVuaWZvcm00ZnYpOwotICAgIHVuaWZvcm00aSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3Jt
NGkpOwotICAgIHVuaWZvcm00aXYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9ybTRpdik7Ci0g
ICAgdW5pZm9ybU1hdHJpeDJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVbmlmb3JtTWF0cml4MmZ2
KTsKLSAgICB1bmlmb3JtTWF0cml4M2Z2ID0gR0VUX1BST0NfQUREUkVTUyhnbFVuaWZvcm1NYXRy
aXgzZnYpOwotICAgIHVuaWZvcm1NYXRyaXg0ZnYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVW5pZm9y
bU1hdHJpeDRmdik7Ci0gICAgdXNlUHJvZ3JhbSA9IEdFVF9QUk9DX0FERFJFU1MoZ2xVc2VQcm9n
cmFtKTsKLSAgICB2YWxpZGF0ZVByb2dyYW0gPSBHRVRfUFJPQ19BRERSRVNTKGdsVmFsaWRhdGVQ
cm9ncmFtKTsKLSAgICB2ZXJ0ZXhBdHRyaWIxZiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xWZXJ0ZXhB
dHRyaWIxZik7Ci0gICAgdmVydGV4QXR0cmliMWZ2ID0gR0VUX1BST0NfQUREUkVTUyhnbFZlcnRl
eEF0dHJpYjFmdik7Ci0gICAgdmVydGV4QXR0cmliMmYgPSBHRVRfUFJPQ19BRERSRVNTKGdsVmVy
dGV4QXR0cmliMmYpOwotICAgIHZlcnRleEF0dHJpYjJmdiA9IEdFVF9QUk9DX0FERFJFU1MoZ2xW
ZXJ0ZXhBdHRyaWIyZnYpOwotICAgIHZlcnRleEF0dHJpYjNmID0gR0VUX1BST0NfQUREUkVTUyhn
bFZlcnRleEF0dHJpYjNmKTsKLSAgICB2ZXJ0ZXhBdHRyaWIzZnYgPSBHRVRfUFJPQ19BRERSRVNT
KGdsVmVydGV4QXR0cmliM2Z2KTsKLSAgICB2ZXJ0ZXhBdHRyaWI0ZiA9IEdFVF9QUk9DX0FERFJF
U1MoZ2xWZXJ0ZXhBdHRyaWI0Zik7Ci0gICAgdmVydGV4QXR0cmliNGZ2ID0gR0VUX1BST0NfQURE
UkVTUyhnbFZlcnRleEF0dHJpYjRmdik7Ci0gICAgdmVydGV4QXR0cmliUG9pbnRlciA9IEdFVF9Q
Uk9DX0FERFJFU1MoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKTsKLQotICAgIGlmICghbV92YWxpZCkg
ewotICAgICAgICBMT0dfRVJST1IoIkdyYXBoaWNzQ29udGV4dDNEOiBBbGwgbmVlZGVkIE9wZW5H
TCBleHRlbnNpb25zIGFyZSBub3QgYXZhaWxhYmxlIik7CisgICAgc3RhdGljIGJvb2wgaW5pdGlh
bGl6ZWQgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICBpZiAo
IWluaXRpYWxpemVkKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMo
KTsKKyAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3Mp
IHsKKyAgICAgICAgbV92YWxpZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgLy8gQ3JlYXRlIGJ1ZmZlcnMgZm9yIHRoZSBjYW52YXMgRkJPLgotICAgIGdlbkZyYW1lYnVm
ZmVycygvKiBjb3VudCAqLyAxLCAmbV9jYW52YXNGYm8pOworICAgIGdsR2VuRnJhbWVidWZmZXJz
KC8qIGNvdW50ICovIDEsICZtX2NhbnZhc0Zibyk7CiAKICAgICBnbEdlblRleHR1cmVzKDEsICZt
X3RleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fdGV4dHVyZSk7CkBAIC00NTQsNyArMTY4LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmli
dXQKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsK
IAogICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAgICBnZW5SZW5kZXJidWZmZXJzKC8qIGNv
dW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8q
IGNvdW50ICovIDEsICZtX2RlcHRoQnVmZmVyKTsKIAogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9F
U18yKQogICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CkBAIC00NjMsNyArMTc3LDcgQEAg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXQKIAogICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0
IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCiAgICAgbV9jdXJyZW50RmJvID0gbV9jYW52
YXNGYm87Ci0gICAgYmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9jYW52YXNGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwogICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwg
MC4wLCAwLjApOwogfQogCkBAIC00NzIsOCArMTg2LDggQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6fkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoKQogICAgIG1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7CiAgICAgaWYgKG1fZ2xXaWRnZXQtPmlzVmFsaWQoKSkgewogICAgICAgICA6Omds
RGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGRlbGV0ZVJlbmRlcmJ1ZmZl
cnMoMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgICAgICBkZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1f
Y2FudmFzRmJvKTsKKyAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoQnVm
ZmVyKTsKKyAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1fY2FudmFzRmJvKTsKICAg
ICB9CiAgICAgZGVsZXRlIG1fZ2xXaWRnZXQ7CiAgICAgbV9nbFdpZGdldCA9IDA7CkBAIC01MTYs
MjkgKzIzMCwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKICAgICAgICAg
Ly8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCi0gICAgICAgIGJpbmRSZW5kZXJi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7Cisg
ICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2RlcHRoQnVmZmVyKTsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgICAgICBy
ZW5kZXJidWZmZXJTdG9yYWdlKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAg
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWlnaHQpOwogI2Vs
c2UKICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVO
Q0lMOCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgd2lk
dGgsIGhlaWdodCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkRFUFRIX0NPTVBPTkVOVCwgd2lkdGgsIGhlaWdodCk7CiAjZW5kaWYKLSAgICAgICAgYmlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCAwKTsKKyAgICAg
ICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIDAp
OwogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdCBjYW52YXMgRkJPLgotICAgIGJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKLSAgICBm
cmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fdGV4dHVyZSwgMCk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpD
T0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVy
ZSwgMCk7CiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVw
dGhCdWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQs
IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhCdWZmZXIpOwogI2lmICFk
ZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAg
IGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
R3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgbV9kZXB0aEJ1ZmZlcik7CisgICAgICAgIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBt
X2RlcHRoQnVmZmVyKTsKICNlbmRpZgogCi0gICAgR0xlbnVtIHN0YXR1cyA9IGNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKTsKKyAgICBHTGVudW0g
c3RhdHVzID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUik7CiAgICAgaWYgKHN0YXR1cyAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVJfQ09NUExFVEUpIHsKICAgICAgICAgTE9HX0VSUk9SKCJHcmFwaGljc0NvbnRleHQzRDogQ2Fu
dmFzIEZCTyBpbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTU3
NCwxMCArMjg4LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlCiAgICAgcXVpbnQzMiogaW1h
Z2VQaXhlbHMgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihvZmZzY3JlZW5JbWFnZS5iaXRz
KCkpOwogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBiaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zibyk7CisgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NhbnZhc0Zi
byk7CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCBtX2JvdW5kaW5nUmVj
dC53aWR0aCgpLCBtX2JvdW5kaW5nUmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CiAKLSAg
ICBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJl
bnRGYm8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9jdXJyZW50RmJvKTsKIAogICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMy
IGJpdHMsIGFuZCB3aXRoIHRoZSBvcmlnaW4gYXQgdGhlIGJvdHRvbSBsZWZ0CiAgICAgLy8gV2Ug
bmVlZCBSR0IzMiBvciBBUkdCMzJfUE0sIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQu
CkBAIC02MzIsMTAgKzM0NiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBh
aW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHF1aW50
MzIqIGltYWdlUGl4ZWxzID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1h
Z2UuYml0cygpKTsKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgYmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jYW52YXNGYm8pOwor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9j
YW52YXNGYm8pOwogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAotICAgIGJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJl
bnRGYm8pOwogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdp
dGggdGhlIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9y
IEFSR0IzMl9QTSwgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTY2NCwyMyAr
Mzc4LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciog
cGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBwYWludGVyLT5kcmF3SW1hZ2Uo
LyogeCAqLyAwLCAvKiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsKIH0KIAotdm9pZCogR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6Z2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9jKQot
ewotICAgIFN0cmluZyBleHRbM10gPSB7ICIiLCAiQVJCIiwgIkVYVCIgfTsKLQotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lV2l0aEV4dCA9IHBy
b2MgKyBleHRbaV07Ci0KLSAgICAgICAgdm9pZCogYWRkciA9IG1fZ2xXaWRnZXQtPmNvbnRleHQo
KS0+Z2V0UHJvY0FkZHJlc3MoUVN0cmluZyhuYW1lV2l0aEV4dCkpOwotICAgICAgICBpZiAoYWRk
cikgCi0gICAgICAgICAgICByZXR1cm4gYWRkcjsKLSAgICB9Ci0KLSAgICBMT0dfRVJST1IoIkdy
YXBoaWNzQ29udGV4dDNEOiBEaWQgbm90IGZpbmQgR0wgZnVuY3Rpb24gJXMiLCBwcm9jLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICByZXR1cm4gMDsKLX0KLQogUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQogewogICAgIC8vIFRo
aXMgaW1wbGVtZW50YXRpb24gZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgZGly
ZWN0bHkgdG8gdGhlIEhvc3RXaW5kb3cuCkBAIC03NTgsNyArNDU1LDcgQEAgSW50U2l6ZSBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSBjb25zdAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YWN0aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+
YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtNzY2LDcgKzQ2Myw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNo
YWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbEF0dGFjaFNo
YWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
dHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbWF4Q291
bnQsIEdDM0RzaXplaSogY291bnQsIFBsYXRmb3JtM0RPYmplY3QqIHNoYWRlcnMpCkBAIC03Nzcs
MzMgKzQ3NCwzMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMo
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEc2l6ZWkgbQogICAgIH0KIAogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QXR0
YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7CisgICAgZ2xH
ZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAg
ICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT5iaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgs
IG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwg
aW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQs
IGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcihH
QzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50
RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Ci0gICAgbV9p
bnRlcm5hbC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgbV9pbnRlcm5hbC0+bV9jdXJyZW50RmJv
KTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZi
byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJpbmRSZW5k
ZXJidWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJlbmRlcmJ1ZmZlcih0
YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRU
ZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtODE1
LDE5ICs1MTIsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFRleHR1cmUoR0MzRGVu
dW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBHQzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xh
bXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdl
dC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5ibGVuZENvbG9yKHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKKyAgICBnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0RlbnVtIG1v
ZGUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIGdsQmxlbmRFcXVhdGlvbihtb2Rl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdD
M0RlbnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
KG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5k
RnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQpAQCAtODM5LDMxICs1MzYs
MzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3Is
IEdDM0RlbnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmNTZXBh
cmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0MzRGVudW0gc3JjQWxwaGEs
IEdDM0RlbnVtIGRzdEFscGhhKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VD
dXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RS
R0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0Is
IGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51
bSB1c2FnZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVz
YWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAvKiBkYXRhICovIDAsIHVzYWdl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZm
ZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpidWZmZXJTdWJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQs
IEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+YnVmZmVyU3ViRGF0
YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdl
dCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29s
b3IoR0MzRGNsYW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBh
KQpAQCAtOTA0LDcgKzYwMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5j
b21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKQpA
QCAtOTUyLDcgKzY0OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKQEAgLTk2NCw3ICs2NjEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBpbmRleCkK
IHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50
ZXJuYWwtPmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3
QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAg
LTk4OCw3ICs2ODUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0g
Y2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0Mz
RHVpbnQgaW5kZXgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQo
KTsKLSAgICBtX2ludGVybmFsLT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmZpbmlzaCgpCkBAIC0xMDA2LDEzICs3MDMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogewogICAgIG1faW50ZXJu
YWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1
ZmZlcik7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2ht
ZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSwgR0MzRGlu
dCBsZXZlbCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKHRhcmdldCwgYXR0YWNobWVudCwg
dGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCh0
YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTEwMjQsNyAr
NzIxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQp
CiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2lu
dGVybmFsLT5nZW5lcmF0ZU1pcG1hcCh0YXJnZXQpOworICAgIGdsR2VuZXJhdGVNaXBtYXAodGFy
Z2V0KTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBA
IC0xMDM3LDE0ICs3MzQsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0
cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbWF4TGVuZ3RoID0g
MDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0
M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CisgICAgZ2xHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9BVFRSSUJVVEVfTUFY
X0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIqIG5hbWUgPSAoR0xjaGFyKikgZmFz
dE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xp
bnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwogCi0gICAgbV9pbnRlcm5hbC0+Z2V0
QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6
ZSwgJnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBt
YXhMZW5ndGgsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogCiAgICAgaWYgKCFu
YW1lTGVuZ3RoKSB7CiAgICAgICAgIGZhc3RGcmVlKG5hbWUpOwpAQCAtMTA2OSwxNCArNzY2LDE0
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZvcm0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKIAogICAgIEdMaW50IG1heExlbmd0aCA9IDA7Ci0gICAgbV9pbnRlcm5h
bC0+Z2V0UHJvZ3JhbWl2KHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbSksIEdyYXBoaWNzQ29u
dGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKKyAgICBnbEdl
dFByb2dyYW1pdihzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW0pLCBHcmFwaGljc0NvbnRleHQz
RDo6QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7CiAKICAgICBHTGNoYXIq
IG5hbWUgPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhtYXhMZW5ndGgpOwogICAgIEdMc2l6ZWkgbmFt
ZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwog
Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QWN0aXZlVW5pZm9ybShzdGF0aWNfY2FzdDxHTHVpbnQ+KHBy
b2dyYW0pLCBpbmRleCwgbWF4TGVuZ3RoLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1l
KTsKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0oc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtKSwg
aW5kZXgsIG1heExlbmd0aCwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAKICAg
ICBpZiAoIW5hbWVMZW5ndGgpIHsKICAgICAgICAgZmFzdEZyZWUobmFtZSk7CkBAIC0xMDk3LDcg
Kzc5NCw3IEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsKICAg
ICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVy
biBtX2ludGVybmFsLT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgp
LmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCkBAIC0xMTM2LDcgKzgzMyw3IEBAIEdDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgIAogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmlzQnVmZmVyKGJ1
ZmZlcik7CisgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC0xMTUxLDcgKzg0
OCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBt
X2ludGVybmFsLT5pc0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0Zy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMTYwLDcgKzg1Nyw3
IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRl
cm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+
aXNQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0K
IAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQpAQCAtMTE2OSw3ICs4NjYsNyBAQCBHQzNEYm9vbGVhbiBH
cmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5kZXJi
dWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2ludGVybmFsLT5t
X2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIHJldHVybiBtX2ludGVybmFsLT5pc1JlbmRl
cmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQ
bGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTExNzgsNyArODc1LDcgQEAgR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+aXNTaGFkZXIoc2hhZGVyKTsK
KyAgICByZXR1cm4gZ2xJc1NoYWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTEyMDAs
NyArODk3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmxpbmtQcm9ncmFt
KHByb2dyYW0pOworICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCBwYXJh
bSkKQEAgLTEyNTEsMTMgKzk0OCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJi
dWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAg
ICBicmVhazsKICAgICB9CiAjZW5kaWYKLSAgICBtX2ludGVybmFsLT5yZW5kZXJidWZmZXJTdG9y
YWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1
ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+c2FtcGxlQ292ZXJhZ2UodmFsdWUsIGludmVy
dCk7CisgICAgZ2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c2Npc3NvcihHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdp
ZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTI4Myw3ICs5ODAsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0
cmluZyYgc291cgogICAgIENTdHJpbmcgc291cmNlQ1MgPSBwcmVmaXhlZFNvdXJjZS51dGY4KCk7
CiAgICAgY29uc3QgY2hhciogZGF0YSA9IHNvdXJjZUNTLmRhdGEoKTsKICAgICBpbnQgbGVuZ3Ro
ID0gcHJlZml4ZWRTb3VyY2UubGVuZ3RoKCk7Ci0gICAgbV9pbnRlcm5hbC0+c2hhZGVyU291cmNl
KChHTHVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5ndGgpOworICAgIGds
U2hhZGVyU291cmNlKChHTHVpbnQpIHNoYWRlciwgLyogY291bnQgKi8gMSwgJmRhdGEsICZsZW5n
dGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBm
dW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKQEAgLTEyOTUsNyArOTkyLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCBy
ZWYsIEdDM0R1aW50IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1Nl
cGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWlu
dCBtYXNrKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0g
ICAgbV9pbnRlcm5hbC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2sp
OworICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYsIG1hc2spOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQpAQCAt
MTMwNyw3ICsxMDA0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0Mz
RHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUo
R0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lk
Z2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnN0ZW5jaWxNYXNrU2VwYXJhdGUo
ZmFjZSwgbWFzayk7CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVu
dW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQpAQCAtMTMxOSw3ICsxMDE2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRl
KEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6
cGFzcykKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPnN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7
CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC0xMzM3LDEyMSArMTAzNCwx
MjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMWYo
bG9jYXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9h
dCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6
ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmYobG9jYXRpb24sIHYwLCB2
MSk7CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1
cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQg
djAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNmKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9n
bFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtM2Z2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00ZihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQg
djMpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT51bmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50
KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwor
ICAgIGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCkKIHsK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJu
YWwtPnVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2
MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTFpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBs
b2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSkKIHsKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVuaWZvcm0yaShsb2NhdGlv
biwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtMml2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xX
aWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dW5pZm9ybTNpdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MiwgR0MzRGludCB2MykKIHsKICAg
ICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwt
PnVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXpl
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9z
ZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51bmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRy
aXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
bV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT51
bmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBn
bFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4NGZ2KEdDM0RpbnQgbG9jYXRp
b24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBt
X2ludGVybmFsLT51bmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFy
cmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwg
YXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3Vy
cmVudCgpOwotICAgIG1faW50ZXJuYWwtPnVzZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xVc2VQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVBy
b2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAtMTQ1OSw2MSArMTE1Niw2MSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2ds
V2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZhbGlkYXRlUHJvZ3JhbShw
cm9ncmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2
MCkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPnZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIx
ZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIx
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+
bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIx
ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgdjAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJl
bnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKKyAg
ICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwLCBHQzNE
ZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwg
djEsIHYyKTsKKyAgICBnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBH
QzNEZmxvYXQqIGFycmF5KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7Cisg
ICAgZ2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0Mz
RGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtX2ludGVybmFs
LT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPnZlcnRleEF0dHJp
YjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwg
djAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRy
aWI0ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT52ZXJ0ZXhBdHRy
aWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDM0R1
aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUsIEdDM0Rib29sZWFuIG5vcm1h
bGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zmc2V0KQogewogICAgIG1faW50
ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+dmVydGV4
QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWlu
dGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7Cisg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBz
dHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9m
ZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTE1MzEs
NyArMTIyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVt
IHBhcmFtTmFtZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwYXJhbU5hbWUs
IEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwYXJh
bU5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1O
YW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dihHQzNE
ZW51bSBwYXJhbU5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xNTQzLDcgKzEyNDAsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYoR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNE
ZmxvYXQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBH
QzNEZW51bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1f
Z2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEludGVnZXJ2KEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xNTU1
LDcgKzEyNTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51
bSBwYXJhbU5hbWUsIEdDM0RpbnQqIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGVudW0gcGFyYW1OYW1lLCBH
QzNEaW50KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVu
dCgpOwotICAgIG1faW50ZXJuYWwtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZh
bHVlKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0K
IAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCkBAIC0xNTYzLDcgKzEyNjAsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQgbGVuZ3Ro
ID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250
ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJv
Z3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OklORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAKICAg
ICBHTHNpemVpIHNpemUgPSAwOwogCkBAIC0xNTcxLDcgKzEyNjgsNyBAQCBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkK
ICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdl
dFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0
UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJp
bmcgcmVzdWx0KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTU4MiwxNCArMTI3OSwx
NCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50
KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcGFyYW1O
YW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBh
cmFtTmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJp
dihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVudW0gcGFyYW1OYW1lLCBHQzNEaW50KiB2
YWx1ZSkKIHsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0
LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmdldFNoYWRlcml2KHNoYWRlciwgcGFy
YW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIHBhcmFtTmFtZSwgdmFs
dWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0xNTk3LDE0ICsxMjk0LDE0IEBAIFN0cmluZyBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
ICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAgICAgR0xpbnQg
bGVuZ3RoID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRTaGFkZXJpdihzaGFkZXIsIEdyYXBoaWNz
Q29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0U2hhZGVyaXYo
c2hhZGVyLCBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKIAog
ICAgIEdMc2l6ZWkgc2l6ZSA9IDA7CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RN
YWxsb2MobGVuZ3RoKTsKICAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAg
IG1faW50ZXJuYWwtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZv
KTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsK
IAogICAgIFN0cmluZyByZXN1bHQoaW5mbyk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xNjE3
LDE0ICsxMzE0LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNl
KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1h
a2VDdXJyZW50KCk7CiAKICAgICBHTGludCBsZW5ndGggPSAwOwotICAgIG1faW50ZXJuYWwtPmdl
dFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RI
LCAmbGVuZ3RoKTsKKyAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR3JhcGhpY3NDb250ZXh0M0Q6
OlNIQURFUl9TT1VSQ0VfTEVOR1RILCAmbGVuZ3RoKTsKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7
CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKICAgICBp
ZiAoIWluZm8pCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIG1faW50ZXJuYWwtPmdldFNoYWRl
clNvdXJjZShzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0U2hhZGVyU291
cmNlKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICBTdHJpbmcgcmVzdWx0KGlu
Zm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTY0NywxMyArMTM0NCwxMyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIHBhcmFtTmFtZSwgRwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFBs
YXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiB2YWx1
ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1f
aW50ZXJuYWwtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGds
R2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRn
ZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24s
IHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTY2
MSwxOSArMTM1OCwxOSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9j
YXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAogICAgIEFTU0VSVChwcm9n
cmFtKTsKICAgICAKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
bmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVy
dGV4QXR0cmliZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGZsb2F0
KiB2YWx1ZSkKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwot
ICAgIG1faW50ZXJuYWwtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwYXJhbU5hbWUsIHZhbHVlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVpbnQgaW5k
ZXgsIEdDM0RlbnVtIHBhcmFtTmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbV9pbnRlcm5h
bC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhB
dHRyaWJpdihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJp
dihpbmRleCwgcGFyYW1OYW1lLCB2YWx1ZSk7CiB9CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBw
YXJhbU5hbWUpCkBAIC0xNjgxLDcgKzEzNzgsNyBAQCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcAog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAgICAgCiAgICAgR0x2
b2lkKiBwb2ludGVyID0gMDsKLSAgICBtX2ludGVybmFsLT5nZXRWZXJ0ZXhBdHRyaWJQb2ludGVy
dihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2lu
dGVydihpbmRleCwgcGFyYW1OYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdDM0RzaXplaXB0cj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQog
CkBAIC0xNzAyLDcgKzEzOTksNyBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGVCdWZmZXIoKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJy
ZW50KCk7CiAgICAgR0x1aW50IGhhbmRsZSA9IDA7Ci0gICAgbV9pbnRlcm5hbC0+Z2VuQnVmZmVy
cygvKiBjb3VudCAqLyAxLCAmaGFuZGxlKTsKKyAgICBnbEdlbkJ1ZmZlcnMoLyogY291bnQgKi8g
MSwgJmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIApAQCAtMTcxMCwyOCArMTQwNywy
OCBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZl
cigpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBH
THVpbnQgaGFuZGxlID0gMDsKLSAgICBtX2ludGVybmFsLT5nZW5GcmFtZWJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJmhhbmRsZSk7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwg
JmhhbmRsZSk7CiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdp
ZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+Y3JlYXRlUHJvZ3Jh
bSgpOworICAgIHJldHVybiBnbENyZWF0ZVByb2dyYW0oKTsKIH0KIAogUGxhdGZvcm0zRE9iamVj
dCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogICAgIEdMdWludCBoYW5kbGUgPSAwOwot
ICAgIG1faW50ZXJuYWwtPmdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJmhhbmRsZSk7
CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzKC8qIGNvdW50ICovIDEsICZoYW5kbGUpOwogICAgIHJl
dHVybiBoYW5kbGU7CiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQt
Pm1ha2VDdXJyZW50KCk7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmNyZWF0ZVNoYWRlcih0eXBl
KTsKKyAgICByZXR1cm4gZ2xDcmVhdGVTaGFkZXIodHlwZSk7CiB9CiAKIFBsYXRmb3JtM0RPYmpl
Y3QgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVRleHR1cmUoKQpAQCAtMTc0NSwzMSArMTQ0Miwz
MSBAQCBQbGF0Zm9ybTNET2JqZWN0IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKCkK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1
ZmZlcikKIHsKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAg
IG1faW50ZXJuYWwtPmRlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7CisgICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFt
ZWJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGZyYW1lYnVmZmVyKQogewogICAgIG1faW50ZXJuYWwt
Pm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5hbC0+ZGVsZXRlRnJhbWVi
dWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZy
YW1lYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbShQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5kZWxldGVQcm9ncmFtKHByb2dyYW0pOwor
ICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZGVsZXRlUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewog
ICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9pbnRlcm5h
bC0+ZGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJl
bmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIHsKICAgICBtX2ludGVy
bmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1faW50ZXJuYWwtPmRlbGV0ZVNo
YWRlcihzaGFkZXIpOworICAgIGdsRGVsZXRlU2hhZGVyKHNoYWRlcik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>