<?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>235444</bug_id>
          
          <creation_ts>2022-01-21 09:22:23 -0800</creation_ts>
          <short_desc>[GTK][STABLE] More missing headers and preprocessor guards for non-unified 2.34.4 build</short_desc>
          <delta_ts>2022-01-23 17:28:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dennis Nezic">dennisn</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1832791</commentid>
    <comment_count>0</comment_count>
      <attachid>449665</attachid>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-21 09:22:23 -0800</bug_when>
    <thetext>Created attachment 449665
more missing headers and buggy ENABLE preprocessing

I bumped into 20 more compilation errors after fiddling with more ENABLE_ configuration variables. This patch is against 2.34.3 ... I&apos;ll see if any more show up with 2.34.4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832862</commentid>
    <comment_count>1</comment_count>
      <attachid>449665</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-01-21 13:04:13 -0800</bug_when>
    <thetext>Comment on attachment 449665
more missing headers and buggy ENABLE preprocessing

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

Hi, to land in WebKit you&apos;d need (a) ChangeLog entries generated with the prepareChangeLog script, and (b) r? Bugzilla flag set.

Fixes should land in trunk first, then a second patch fixing the issues in the stable branch can be accepted second. If we fix the issues in stable first without fixing trunk, that just sets us up to have the same problems again next release.

#include fixes and #if fixes are best split into two separate patches, not all in one patch, to match the title of the bug (which is your commit message title).

Lastly, while #if fixes in cross-platform code are always welcome, in the platform-specific code we instead prefer to minimize the number of preprocessor guards that we use. Changing the value of private build options is not supported at all and that&apos;s not expected to build successfully. There&apos;s no reason to ever build GTK port with fullscreen API or resource load statistics disabled, for example, because they have no build dependencies. I guess you might save a few bytes on disk, but that&apos;s not worth the cost of maintaining the guards in our code. Building without ENABLE_USER_MESSAGE_HANDLERS will disable some pretty core functionality. These flags are private because it doesn&apos;t make sense to use them. If you really want them for some reason, please propose a patch to expose them as public, including justification for why it makes sense to build without.

&gt; b/Tools/MiniBrowser/gtk/BrowserTab.c:345
&gt; +    }
&gt; +#if ENABLE(POINTER_LOCK)
&gt; +		else if (WEBKIT_IS_POINTER_LOCK_PERMISSION_REQUEST(request)) {

Careful here too.

&gt; b/Tools/MiniBrowser/gtk/BrowserTab.c:360
&gt; -    } else if (WEBKIT_IS_WEBSITE_DATA_ACCESS_PERMISSION_REQUEST(request)) {
&gt; +    }
&gt; +#endif
&gt; +		else if (WEBKIT_IS_WEBSITE_DATA_ACCESS_PERMISSION_REQUEST(request)) {

Careful with indentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833137</commentid>
    <comment_count>2</comment_count>
      <attachid>449763</attachid>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-23 13:44:01 -0800</bug_when>
    <thetext>Created attachment 449763
missing headers and if preprocessor guards against 2.34.4

Attached are the updated patches against stable 2.34.4. It includes the previous one that I submitted bug 235273 (I&apos;ll close it), plus one more missing header (Frame.h in Source/WebCore/inspector/agents/InspectorCanvasAgent.h).

What&apos;s the point of having those ENABLE preprocessor guards if they don&apos;t work? It won&apos;t compile if they&apos;re used -- might as well get rid of them then? And many of them sound very useful to be configurable, like ENABLE_GEOLOCATION ENABLE_ACCESSIBILITY ENABLE_VIDEO, etc.

I don&apos;t know what &quot;EWS&quot; means, and I assumed that having this patch reviewed was implied.

I fixed the indentation (the tab instead of the spaces), woops.

Guys, I spent many hours hunting down these bugs. And sooo many more waiting for it to compile -- *it takes well over 24 hours of non-stop 100% cpu time here to compile this!*. Can you guys do the final commit or whatever is needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833139</commentid>
    <comment_count>3</comment_count>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-23 13:45:49 -0800</bug_when>
    <thetext>*** Bug 235273 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833141</commentid>
    <comment_count>4</comment_count>
      <attachid>449764</attachid>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-23 14:02:21 -0800</bug_when>
    <thetext>Created attachment 449764
woops, the previous one dragged in some changes that others made in those files, between versions .3 and .4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833146</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-01-23 14:56:42 -0800</bug_when>
    <thetext>(In reply to Dennis from comment #2)
&gt; What&apos;s the point of having those ENABLE preprocessor guards if they don&apos;t
&gt; work? 

They&apos;re for other WebKit ports, and in cross-platform code they do need to be maintained.

In platform-specific code, they are just clutter.
 
&gt; I don&apos;t know what &quot;EWS&quot; means, and I assumed that having this patch reviewed
&gt; was implied.

Sorry, EWS is the CI system that builds your patch (scroll up a bit). Your previous patch was red on every single bot, indicating that the patch doesn&apos;t apply to trunk. They need to be at least mostly green (it&apos;s OK if bots are failing as long as the failure looks unrelated to your work).

You still need to set the r? Bugzilla flag to request a review. And again, if you don&apos;t follow my previous instructions to include changelog entries, it will be rejected.

&gt; Guys, I spent many hours hunting down these bugs. And sooo many more waiting
&gt; for it to compile -- *it takes well over 24 hours of non-stop 100% cpu time
&gt; here to compile this!*.

Wow, that&apos;s... pretty intense.

&gt; Can you guys do the final commit or whatever is needed?

No, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833148</commentid>
    <comment_count>6</comment_count>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-23 15:09:31 -0800</bug_when>
    <thetext>So webkit-gtk users shouldn&apos;t be able to disable &quot;accessibility&quot;? And why would I need a &quot;fullscreen api&quot; - maybe I&apos;m not understanding what it means, but I never intend to use my browser in fullscreen mode. And why would I ever need &quot;resource load statistics&quot; - I&apos;m pretty sure I&apos;ve never used them in the past several years?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833150</commentid>
    <comment_count>7</comment_count>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-23 15:14:30 -0800</bug_when>
    <thetext>Also, are you saying that those preprocessor guards work properly in other (non-unified) WebKit ports? That I&apos;m the only one bumping into those bugs with my gtk port?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833151</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-01-23 15:32:47 -0800</bug_when>
    <thetext>(In reply to Dennis from comment #6)
&gt; So webkit-gtk users shouldn&apos;t be able to disable &quot;accessibility&quot;? And why
&gt; would I need a &quot;fullscreen api&quot; - maybe I&apos;m not understanding what it means,
&gt; but I never intend to use my browser in fullscreen mode. And why would I
&gt; ever need &quot;resource load statistics&quot; - I&apos;m pretty sure I&apos;ve never used them
&gt; in the past several years?

Normally we only expose build options when there is a new build dependency that might not be available on older systems. You can simply not use the feature at runtime if you don&apos;t want it. WebKitGTK always has accessibility support enabled. I don&apos;t know much about fullscreen, but I imagine disabling that option would likely break the fullscreen button on every video player, for instance. Not sure why other ports would ever use it.

Then resource load statistics is intelligent tracking prevention. That flag has been renamed in trunk, which is why your patch failed EWS again. You failed to read my first comment in this issue. I don&apos;t think your patch is going to be accepted if you&apos;re unable to respond to my feedback. We don&apos;t accept patches onto the stable branch unless a corresponding patch has landed in master first. Fixing 2.34 only to see you come back with similar patches for 2.36 a few months later, because you didn&apos;t land your changes into trunk first, is a waste of everybody&apos;s time, which is why it&apos;s not allowed here. (This best practice applies to all software projects, not just WebKit.)

(In reply to Dennis from comment #7)
&gt; Also, are you saying that those preprocessor guards work properly in other
&gt; (non-unified) WebKit ports?

They would be expected to work in at least one other port. (Sometimes this is not always true. :)

&gt; That I&apos;m the only one bumping into those bugs with my gtk port?

You&apos;re trying to use options that are not meant to be used with WebKitGTK, and discovering that they do not build, as expected. How did you even find these options? We have them marked as ADVANCED to ensure CMake doesn&apos;t expose them unless you purposefully go looking for the hidden options.

The non-ADVANCED options are public and expected to work. If you change them and then wind up with build failures, that&apos;s a bug to be fixed.

I don&apos;t mind adding #includes where useful. Nobody is going to complain about that. But in the GTK-specific files, you should only use guards if the GTK port actually allows changing the value of those guards (i.e. it is not marked ADVANCED).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833161</commentid>
    <comment_count>9</comment_count>
    <who name="Dennis Nezic">dennisn</who>
    <bug_when>2022-01-23 16:35:23 -0800</bug_when>
    <thetext>&gt; You can simply not use the feature at runtime if you don&apos;t want it.

That&apos;s not a good policy. It increases the attack surface and increases the stress on system resources. All of the few bloated &quot;modern browsers&quot; that still exist are constantly being hacked because the code is so bloated and unmaintainable - I don&apos;t want hackers to even have the possibility of accessing the geolocation api, for example - I don&apos;t want it anywhere in my code.

Again, I don&apos;t want fullscreen capability, or &quot;intelligent tracking prevention&quot;, or countless other features. I recently randomly saw some SpeechRecognition module being compiled. Things have gotten way out of control.

&gt; You&apos;re trying to use options that are not meant to be used with WebKitGTK

Says you. You shouldn&apos;t be telling users what kind of software they should be running, especially when you&apos;re pushing them into a more insecure and bloated direction.

Also, at least one of my fixes (the ones involving the *TransientZoom functions, is broken because I had USE_OPENGL_OR_ES=OFF ... is that not public/&quot;allowed&quot; either?

And I think all the other preprocessor guards that I added are just adding to what already exists ... if my ones aren&apos;t worth it, than the existing ones shouldn&apos;t be either. They literally do the same thing - someone just forgot to maintain them over time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833176</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-01-23 17:28:37 -0800</bug_when>
    <thetext>(In reply to Dennis Nezic from comment #9)
&gt; Also, at least one of my fixes (the ones involving the *TransientZoom
&gt; functions, is broken because I had USE_OPENGL_OR_ES=OFF ... is that not
&gt; public/&quot;allowed&quot; either?

That one is public: if the build fails, it&apos;s a bug. The rest I&apos;ve said above still applies.
 
&gt; And I think all the other preprocessor guards that I added are just adding
&gt; to what already exists ... if my ones aren&apos;t worth it, than the existing
&gt; ones shouldn&apos;t be either. They literally do the same thing - someone just
&gt; forgot to maintain them over time.

Again, these guards are needed in *cross-platform files* but not our platform-specific files.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449665</attachid>
            <date>2022-01-21 09:22:23 -0800</date>
            <delta_ts>2022-01-23 13:44:01 -0800</delta_ts>
            <desc>more missing headers and buggy ENABLE preprocessing</desc>
            <filename>missingheaders-2.34.3_set2.patch</filename>
            <type>text/plain</type>
            <size>32361</size>
            <attacher name="Dennis Nezic">dennisn</attacher>
            
              <data encoding="base64">ZGlmZiAtcnUgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCTIwMjEtMDktMDEgMDU6
MTY6NDYuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAkyMDIyLTAxLTIxIDEyOjEwOjA2LjAwMDAwMDAwMCAtMDUwMApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29t
bW9uLmgiCisjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKZGlmZiAtcnUgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5jcHAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCTIwMjEtMDktMDEgMDU6MTY6NDYu
MDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJl
ZElkZW50aWZpZXJzLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHQ29t
bW9uRGF0YS5oIgorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmll
cklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpkaWZmIC1ydSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5oCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmgJMjAyMS0wOS0wMSAw
NToxNjo0Ni4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEZXNpcmVkSWRlbnRpZmllcnMuaAkyMDIyLTAxLTIxIDEyOjExOjIyLjAwMDAwMDAwMCAtMDUw
MApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJI
ZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CmRpZmYgLXJ1
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRHJpdmVyLmNwcAkyMDIxLTA5LTAxIDA1OjE2OjQ2LjAwMDAwMDAwMCAtMDQwMAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJMjAyMi0wMS0yMSAxMTo1
MToyMS4wMDAwMDAwMDAgLTA1MDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdQbGFu
LmgiCiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25BbGxvd2xpc3Qu
aCIKKyNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNs
dWRlICJKSVRXb3JrbGlzdC5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKZGlmZiAtcnUgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCTIwMjEtMDktMDEgMDU6MTY6NDYuMDAwMDAwMDAw
IC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNw
cAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgi
CiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpkaWZmIC1ydSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudEJhc2UuY3BwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5j
cHAJMjAyMS0wOS0wMSAwNToxNjo0Ni4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmNwcAkyMDIyLTAxLTIx
IDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZp
bGVCYXNlZEZ1enplckFnZW50QmFzZS5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC1ydSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVzaXplT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1Jlc2l6ZU9ic2VydmVyRW50cnlDdXN0b20uY3BwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVzaXplT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAJMjAyMS0wOS0wMSAw
NToxNjo1MC4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZXNpemVPYnNlcnZlckVudHJ5Q3VzdG9tLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAw
MDAwMCAtMDUwMApAQCAtMjUsNiArMjUsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisKICNpbmNsdWRlICJKU1Jlc2l6ZU9ic2Vy
dmVyRW50cnkuaCIKIAogI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgpAQCAtNDEsMyArNDQsNSBA
QAogREVGSU5FX1ZJU0lUX0FERElUSU9OQUxfQ0hJTERSRU4oSlNSZXNpemVPYnNlcnZlckVudHJ5
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtcnUgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCTIwMjEtMDktMDEgMDU6MTY6NTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJMjAyMi0wMS0yMSAxMTo1MToyMS4w
MDAwMDAwMDAgLTA1MDAKQEAgLTc0ODMsNiArNzQ4Myw3IEBACiB7CiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiAKKyNpZiBFTkFCTEUoTU9ERVJOX01FRElBX0NPTlRST0xTKQogICAgIGlm
ICghZW5zdXJlTWVkaWFDb250cm9sc0luamVjdGVkU2NyaXB0KCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNzU2Myw2ICs3NTY0LDcgQEAKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsK
KyNlbmRpZiAvLyBFTkFCTEUoTU9ERVJOX01FRElBX0NPTlRST0xTKQogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3Rvcihib29s
IGRlcGVuZHNPblBhZ2VTY2FsZSkKZGlmZiAtcnUgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCTIwMjEtMDktMDEgMDU6MTY6NTAuMDAw
MDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0
b3JDb250cm9sbGVyLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkhlYXBBZ2VudC5oIgogI2luY2x1ZGUg
IldlYkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0TWFu
YWdlci5oIgpkaWZmIC1ydSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAJMjAyMS0wOS0wMSAwNToxNjo1MC4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCTIwMjItMDEtMjEgMTE6NTM6MDMu
MDAwMDAwMDAwIC0wNTAwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1
ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKZGlmZiAtcnUgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCTIwMjEtMDktMDEgMDU6
MTY6NTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAtMTExLDYgKzExMSw3
IEBACiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN1ZGRlblRlcm1pbmF0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIu
aCIKICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZp
ZXdwb3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKZGlmZiAtcnUgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCTIwMjEtMDktMDEgMDU6MTY6NTAuMDAwMDAwMDAw
IC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUw
MApAQCAtMjQ2LDExICsyNDYsMTMgQEAKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKIHsKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChtX2lzUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQgJiYgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID09
IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCkgewogICAgICAgICBtX2Nvb2tpZUFj
Y2VwdFBvbGljeSA9IHBvbGljeTsKICAgICAgICAgaWYgKG1fY29va2llQWNjZXB0UG9saWN5ID09
IEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bikKICAgICAgICAgICAgIHBvbGljeSA9IEhUVFBDb29raWVBY2NlcHRQb2xpY3k6OkFsd2F5c0Fj
Y2VwdDsKICAgICB9CisjZW5kaWYKIAogICAgIFNvdXBDb29raWVKYXJBY2NlcHRQb2xpY3kgc291
cFBvbGljeSA9IFNPVVBfQ09PS0lFX0pBUl9BQ0NFUFRfTk9fVEhJUkRfUEFSVFk7CiAgICAgc3dp
dGNoIChwb2xpY3kpIHsKZGlmZiAtcnUgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCTIwMjEtMDktMDEgMDU6MTY6NTEuMDAwMDAwMDAw
IC0wNDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAtNTI3LDcg
KzUyNywxMSBAQAogICAgIG1fY29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb247CiAgICAgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIgPSBuZXdDb3JlSWRlbnRpZmllcjsKIAorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIHx8IG1f
Y2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB8fCBtX3NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2spOworI2Vsc2UKKyAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyIHx8IG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk7CisjZW5kaWYKICAgICBib29sIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgPSB0cnVlOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlUmVzcG9uc2UgeyBtX3Jlc3BvbnNlLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlIH0pOwogfQpkaWZmIC1ydSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFBvaW50ZXJMb2NrUGVybWlzc2lvblJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5j
cHAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAJMjAyMS0wOS0wMSAwNToxNjo1MS4wMDAwMDAwMDAgLTA0
MDAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAJMjAyMi0wMS0yMSAxMTo1MToyMi4wMDAwMDAwMDAgLTA1
MDAKQEAgLTE4LDYgKzE4LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaCIKQEAg
LTExMSwzICsxMTQsNSBAQAogICAgIHJlcXVlc3QtPnByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7
CiAgICAgcmVxdWVzdC0+cHJpdi0+d2ViVmlldyA9IG51bGxwdHI7CiB9CisKKyNlbmRpZiAvLyBF
TkFCTEUoUE9JTlRFUl9MT0NLKQpkaWZmIC1ydSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJMjAy
MS0wOS0wMSAwNToxNjo1MS4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAkyMDIyLTAxLTIxIDEx
OjUzOjA3LjAwMDAwMDAwMCAtMDUwMApAQCAtMTQ4LDkgKzE0OCwxMSBAQAogICAgIGNhc2UgUFJP
UF9IU1RTX0NBQ0hFX0RJUkVDVE9SWToKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVl
LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1h
bmFnZXIpKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBjYXNlIFBST1BfSVRQX0RJUkVDVE9SWToKICAgICAgICAgZ192YWx1ZV9zZXRf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9kaXJlY3Rv
cnkobWFuYWdlcikpOwogICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgUFJPUF9TRVJW
SUNFX1dPUktFUl9SRUdJU1RSQVRJT05TX0RJUkVDVE9SWToKICAgICAgICAgZ192YWx1ZV9zZXRf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3NlcnZpY2Vfd29y
a2VyX3JlZ2lzdHJhdGlvbnNfZGlyZWN0b3J5KG1hbmFnZXIpKTsKICAgICAgICAgYnJlYWs7CkBA
IC0xOTQsOSArMTk2LDExIEBACiAgICAgY2FzZSBQUk9QX0hTVFNfQ0FDSEVfRElSRUNUT1JZOgog
ICAgICAgICBtYW5hZ2VyLT5wcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9k
dXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgY2FzZSBQUk9QX0lUUF9ESVJFQ1RPUlk6CiAgICAgICAgIG1h
bmFnZXItPnByaXYtPml0cERpcmVjdG9yeS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUp
KTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFBST1BfU0VSVklDRV9XT1JLRVJf
UkVHSVNUUkFUSU9OU19ESVJFQ1RPUlk6CiAgICAgICAgIG1hbmFnZXItPnByaXYtPnN3UmVnaXN0
cmF0aW9uc0RpcmVjdG9yeS5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yMjQsOCArMjI4LDEwIEBACiAgICAgICAgICAgICBwcml2LT5pbmRleGVk
REJEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVjdG9y
eS5nZXQoKSwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7CiAgICAgICAgIGlm
ICghcHJpdi0+d2ViU1FMRGlyZWN0b3J5KQogICAgICAgICAgICAgcHJpdi0+d2ViU1FMRGlyZWN0
b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCks
ICJkYXRhYmFzZXMiLCBudWxscHRyKSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICAgICAgaWYgKCFwcml2LT5pdHBEaXJlY3RvcnkpCiAgICAgICAgICAgICBwcml2
LT5pdHBEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVj
dG9yeS5nZXQoKSwgIml0cCIsIG51bGxwdHIpKTsKKyNlbmRpZgogICAgICAgICBpZiAoIXByaXYt
PnN3UmVnaXN0cmF0aW9uc0RpcmVjdG9yeSkKICAgICAgICAgICAgIHByaXYtPnN3UmVnaXN0cmF0
aW9uc0RpcmVjdG9yeS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0
b3J5LmdldCgpLCAic2VydmljZXdvcmtlcnMiLCBudWxscHRyKSk7CiAgICAgfQpAQCAtMzk2LDYg
KzQwMiw3IEBACiAgICAgICAgICAgICBudWxscHRyLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
R1BhcmFtRmxhZ3M+KFdFQktJVF9QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9P
TkxZKSkpOwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAvKioK
ICAgICAgKiBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI6aXRwLWRpcmVjdG9yeToKICAgICAgKgpA
QCAtNDEyLDYgKzQxOSw3IEBACiAgICAgICAgICAgICBfKCJUaGUgZGlyZWN0b3J5IHdoZXJlIElu
dGVsbGlnZW50IFRyYWNraW5nIFByZXZlbnRpb24gZGF0YSB3aWxsIGJlIHN0b3JlZCIpLAogICAg
ICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihX
RUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiAgICAgLyoqCiAgICAgICog
V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOnNlcnZpY2Utd29ya2VyLXJlZ2lzdHJhdGlvbnMtZGly
ZWN0b3J5OgpAQCAtNDg1LDggKzQ5MywxMCBAQAogICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+
c2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAg
aWYgKHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeSkKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24t
PnNldEhTVFNTdG9yYWdlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpKSk7CisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKHByaXYtPml0cERpcmVj
dG9yeSkKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5pdHBEaXJlY3RvcnkuZ2V0KCkpKTsKKyNlbmRpZgogICAgICAgICBpZiAocHJpdi0+
c3dSZWdpc3RyYXRpb25zRGlyZWN0b3J5KQogICAgICAgICAgICAgY29uZmlndXJhdGlvbi0+c2V0
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPnN3UmVnaXN0cmF0aW9uc0RpcmVjdG9yeS5n
ZXQoKSkpOwogICAgICAgICBpZiAocHJpdi0+ZG9tQ2FjaGVEaXJlY3RvcnkpCkBAIC03MzUsNiAr
NzQ1LDcgQEAKICAgICByZXR1cm4gcHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LmdldCgpOwogfQog
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIC8qKgogICogd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5OgogICogQG1hbmFnZXI6IGEgI1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlcgpAQCAtNzU3LDYgKzc2OCw3IEBACiAgICAgICAgIHByaXYt
Pml0cERpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkudXRmOCgpLmRhdGEoKSkpOwog
ICAgIHJldHVybiBwcml2LT5pdHBEaXJlY3RvcnkuZ2V0KCk7CiB9CisjZW5kaWYgLy8gRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogLyoqCiAgKiB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X3NlcnZpY2Vfd29ya2VyX3JlZ2lzdHJhdGlvbnNfZGlyZWN0b3J5OgpAQCAt
ODI0LDYgKzgzNiw3IEBACiAgICAgcmV0dXJuIG1hbmFnZXItPnByaXYtPmNvb2tpZU1hbmFnZXIu
Z2V0KCk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogLyoqCiAg
KiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkOgogICogQG1hbmFn
ZXI6IGEgI1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlcgpAQCAtODU5LDYgKzg3Miw3IEBACiAKICAg
ICByZXR1cm4gd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKG1hbmFnZXIpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKIAogLyoqCiAgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfc2V0X3BlcnNpc3RlbnRfY3JlZGVudGlhbF9zdG9yYWdlX2VuYWJsZWQ6CkBAIC05OTcsOCAr
MTAxMSwxMCBAQAogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpDb29r
aWVzKTsKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNI
X1NBTFQpCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6OkRldmljZUlk
SGFzaFNhbHQpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9JVFApCiAgICAgICAgIHJldHVyblZhbHVlLmFk
ZChXZWJzaXRlRGF0YVR5cGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpOworI2VuZGlmCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RB
VEFfU0VSVklDRV9XT1JLRVJfUkVHSVNUUkFUSU9OUykKICAgICAgICAgcmV0dXJuVmFsdWUuYWRk
KFdlYnNpdGVEYXRhVHlwZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnMpOwpAQCAtMTE3OSw2
ICsxMTk1LDcgQEAKICAgICByZXR1cm4gZ190YXNrX3Byb3BhZ2F0ZV9ib29sZWFuKEdfVEFTSyhy
ZXN1bHQpLCBlcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogc3RydWN0IF9XZWJLaXRJVFBGaXJzdFBhcnR5IHsKICAgICBleHBsaWNpdCBfV2ViS2l0SVRQ
Rmlyc3RQYXJ0eShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5JiYgZGF0YSkKICAgICAgICAgOiBkb21haW4oZGF0YS5maXJz
dFBhcnR5RG9tYWluLnN0cmluZygpLnV0ZjgoKSkKQEAgLTExOTIsNiArMTIwOSw3IEBACiAgICAg
R1JlZlB0cjxHRGF0ZVRpbWU+IGxhc3RVcGRhdGVkOwogICAgIGludCByZWZlcmVuY2VDb3VudCB7
IDEgfTsKIH07CisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAog
LyoqCiAgKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X21lbW9yeV9wcmVzc3VyZV9z
ZXR0aW5nczoKQEAgLTEyMTcsNiArMTIzNSw4IEBACiAgICAgV2ViUHJvY2Vzc1Bvb2w6OnNldE5l
dHdvcmtQcm9jZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29uZmlndXJhdGlvbihjb25maWcpOwog
fQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKwogR19ERUZJTkVfQk9Y
RURfVFlQRShXZWJLaXRJVFBGaXJzdFBhcnR5LCB3ZWJraXRfaXRwX2ZpcnN0X3BhcnR5LCB3ZWJr
aXRfaXRwX2ZpcnN0X3BhcnR5X3JlZiwgd2Via2l0X2l0cF9maXJzdF9wYXJ0eV91bnJlZikKIAog
c3RhdGljIFdlYktpdElUUEZpcnN0UGFydHkqIHdlYmtpdElUUEZpcnN0UGFydHlDcmVhdGUoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmly
c3RQYXJ0eSYmIGRhdGEpCkBAIC0xNDc0LDMgKzE0OTQsNCBAQAogCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdMaXN0Kj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKEdfVEFTSyhyZXN1bHQpLCBl
cnJvcikpOwogfQorI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRp
ZmYgLXJ1IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcAkyMDIxLTA5LTAxIDA1OjE2OjUxLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkyMDIyLTAxLTIx
IDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAtNjkyLDggKzY5MiwxMCBAQAogICAgIGdfY2xl
YXJfcG9pbnRlcigmd2ViVmlldy0+cHJpdi0+ZGlhbG9nLCBndGtfd2lkZ2V0X2Rlc3Ryb3kpOwog
ICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyh3ZWJWaWV3LCBu
dWxscHRyKTsKICNlbmRpZgorI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQogICAgIGlmICh3ZWJW
aWV3LT5wcml2LT5hY2Nlc3NpYmxlKQogICAgICAgICB3ZWJraXRXZWJWaWV3QWNjZXNzaWJsZVNl
dFdlYlZpZXcoV0VCS0lUX1dFQl9WSUVXX0FDQ0VTU0lCTEUod2ViVmlldy0+cHJpdi0+YWNjZXNz
aWJsZS5nZXQoKSksIG51bGxwdHIpOworI2VuZGlmCiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywg
MjQsIDApCiAgICAgd2Via2l0V2ViVmlld0Jhc2VDb21wbGV0ZUVtb2ppQ2hvb3NlclJlcXVlc3Qo
d2ViVmlldywgZW1wdHlTdHJpbmcoKSk7CiAjZW5kaWYKQEAgLTcwNCw3ICs3MDYsOSBAQAogICAg
IHdlYlZpZXctPnByaXYtPmlucHV0TWV0aG9kRmlsdGVyLnNldENvbnRleHQobnVsbHB0cik7CiAg
ICAgd2ViVmlldy0+cHJpdi0+cGFnZVByb3h5LT5jbG9zZSgpOwogICAgIHdlYlZpZXctPnByaXYt
PmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlID0gbnVsbHB0cjsKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCiAgICAgd2ViVmlldy0+cHJpdi0+c2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CisjZW5k
aWYKICAgICB3ZWJWaWV3LT5wcml2LT5rZXlCaW5kaW5nVHJhbnNsYXRvci5pbnZhbGlkYXRlKCk7
CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+
ZGlzcG9zZShnb2JqZWN0KTsKIH0KQEAgLTE2NTAsNiArMTY1NCw3IEBACiAgICAgcmV0dXJuIFRS
VUU7CiB9CiAKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKICNpZiAhVVNFKEdUSzQpCiBzdGF0
aWMgQXRrT2JqZWN0KiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjY2Vzc2libGUoR3RrV2lkZ2V0KiB3
aWRnZXQpCiB7CkBAIC0xNjY4LDYgKzE2NzMsNyBAQAogICAgIHJldHVybiBwcml2LT5hY2Nlc3Np
YmxlLmdldCgpOwogfQogI2VuZGlmCisjZW5kaWYKIAogI2lmIFVTRShHVEs0KQogc3RhdGljIHZv
aWQgdG9wbGV2ZWxXaW5kb3dJc0FjdGl2ZUNoYW5nZWQoR3RrV2luZG93KiB3aW5kb3csIEdQYXJh
bVNwZWMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCkBAIC0yMTYxLDkgKzIxNjcs
MTEgQEAKICAgICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRv
dWNoRXZlbnQ7CiAjZW5kaWYKICAgICB3aWRnZXRDbGFzcy0+cXVlcnlfdG9vbHRpcCA9IHdlYmtp
dFdlYlZpZXdCYXNlUXVlcnlUb29sdGlwOworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQogI2lm
ICFVU0UoR1RLNCkKICAgICB3aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUgPSB3ZWJraXRXZWJW
aWV3QmFzZUdldEFjY2Vzc2libGU7CiAjZW5kaWYKKyNlbmRpZgogI2lmIFVTRShHVEs0KQogICAg
IHdpZGdldENsYXNzLT5yb290ID0gd2Via2l0V2ViVmlld0Jhc2VSb290OwogICAgIHdpZGdldENs
YXNzLT51bnJvb3QgPSB3ZWJraXRXZWJWaWV3QmFzZVVucm9vdDsKQEAgLTI2ODIsNiArMjY5MCw3
IEBACiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlUmVxdWVzdFBvaW50ZXJMb2NrKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+
cHJpdjsKQEAgLTI3MDgsNiArMjcxNyw3IEBACiAgICAgcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2Vy
LT51bmxvY2soKTsKICAgICBwcml2LT5wb2ludGVyTG9ja01hbmFnZXIgPSBudWxscHRyOwogfQor
I2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VT
ZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCiB7CmRpZmYgLXJ1IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkyMDIxLTA5LTAxIDA1OjE2OjUxLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjIuMDAwMDAw
MDAwIC0wNTAwCkBAIC01ODQ1LDYgKzU4NDUsNyBAQAogCiAgICAgUmVmUHRyPEFQSTo6VXNlcklu
aXRpYXRlZEFjdGlvbj4gdXNlckluaXRpYXRlZEFjdGl2aXR5OwogICAgIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgLy8gV2ViS2l0IGNhbmNlbHMgdGhlIG9yaWdp
bmFsIGdlc3R1cmUgdG8gb3BlbiB0aGUgQkJDIHJhZGlvIHBsYXllciBzbwogICAgIC8vIHdlIGNh
biBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgZmlyc3QuIFdoZW4gd2UgcmUtaW5pdGlhdGUg
dGhlIG9wZW4sCiAgICAgLy8gd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGUgY2xpZW50IGtub3dzIHRo
YXQgdGhpcyB3YXMgdXNlciBpbml0aWF0ZWQgc28gaXQKQEAgLTU4NTIsNiArNTg1Myw3IEBACiAg
ICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkgPT0gUXVpcmtzOjpzdGF0aWNSYWRpb1BsYXll
clVSTFN0cmluZygpKQogICAgICAgICB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBBUEk6OlVzZXJJ
bml0aWF0ZWRBY3Rpb246OmNyZWF0ZSgpOwogICAgIGVsc2UKKyNlbmRpZgogICAgICAgICB1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAKICAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJs
KCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwpkaWZmIC1ydSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAJ
MjAyMS0wOS0wMSAwNToxNjo1MS4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3Rr
LmNwcAkyMDIyLTAxLTIxIDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAtNTUsNyArNTUsMTEg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0NTU0ltcG9ydFJ1bGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RPTUV4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICNpbmNsdWRlIDxXZWJDb3JlL0Z1bGxzY3JlZW5NYW5hZ2Vy
Lmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPFdlYkNvcmUvSlNFeGVjU3RhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAt
MzA0LDYgKzMwOCw3IEBACiAgICAgY2FzZSBET01fRE9DVU1FTlRfUFJPUF9DT01QQVRfTU9ERToK
ICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV9kb2N1bWVudF9n
ZXRfY29tcGF0X21vZGUoc2VsZikpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAgICAgY2FzZSBET01fRE9DVU1FTlRfUFJPUF9XRUJLSVRfSVNfRlVMTF9TQ1JF
RU46CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fZG9jdW1l
bnRfZ2V0X3dlYmtpdF9pc19mdWxsc2NyZWVuKHNlbGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
MTksNiArMzI0LDcgQEAKICAgICBjYXNlIERPTV9ET0NVTUVOVF9QUk9QX1dFQktJVF9GVUxMU0NS
RUVOX0VMRU1FTlQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2Rv
bV9kb2N1bWVudF9nZXRfd2Via2l0X2Z1bGxzY3JlZW5fZWxlbWVudChzZWxmKSk7CiAgICAgICAg
IGJyZWFrOworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBjYXNlIERPTV9E
T0NVTUVOVF9QUk9QX1BPSU5URVJfTE9DS19FTEVNRU5UOgogICAgICAgICBnX3ZhbHVlX3NldF9v
YmplY3QodmFsdWUsIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3BvaW50ZXJfbG9ja19lbGVtZW50
KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CkBAIC03NTAsNiArNzU2LDcgQEAKICAgICAgICAgICAg
IFdFQktJVF9ET01fVFlQRV9FTEVNRU5ULAogICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKSk7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eSgKICAgICAgICAgZ29iamVjdENsYXNzLAogICAgICAgICBET01fRE9D
VU1FTlRfUFJPUF9XRUJLSVRfRlVMTFNDUkVFTl9FTkFCTEVELApAQCAtNzY5LDYgKzc3Niw3IEBA
CiAgICAgICAgICAgICAicmVhZC1vbmx5IFdlYktpdERPTUVsZW1lbnQqIERvY3VtZW50OndlYmtp
dC1mdWxsc2NyZWVuLWVsZW1lbnQiLAogICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX0VMRU1F
TlQsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKKyNlbmRpZiAvLyBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KAogICAgICAgICBnb2JqZWN0Q2xhc3MsCkBAIC0xMzA4LDYgKzEzMTYsOCBAQAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIHZvaWQgd2Via2l0
X2RvbV9kb2N1bWVudF93ZWJraXRfY2FuY2VsX2Z1bGxzY3JlZW4oV2ViS2l0RE9NRG9jdW1lbnQq
IHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAt
MTMyMyw2ICsxMzMzLDcgQEAKICAgICBXZWJDb3JlOjpEb2N1bWVudCogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKICAgICBpdGVtLT5mdWxsc2NyZWVuTWFuYWdlcigpLmV4aXRGdWxsc2NyZWVu
KCk7CiB9CisjZW5kaWYKIAogdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X2V4aXRfcG9pbnRlcl9s
b2NrKFdlYktpdERPTURvY3VtZW50KiBzZWxmKQogewpAQCAtMTgxOCw2ICsxODI5LDggQEAKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiBnYm9v
bGVhbiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfaXNfZnVsbHNjcmVlbihXZWJLaXRE
T01Eb2N1bWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7CkBAIC0xODYyLDYgKzE4NzUsNyBAQAogICAgIFJlZlB0cjxXZWJDb3JlOjpFbGVtZW50
PiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+ZnVsbHNjcmVlbk1hbmFnZXIoKS5m
dWxsc2NyZWVuRWxlbWVudCgpKTsKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3Vs
dC5nZXQoKSk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCiBXZWJLaXRE
T01FbGVtZW50KiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9wb2ludGVyX2xvY2tfZWxlbWVudChX
ZWJLaXRET01Eb2N1bWVudCogc2VsZikKIHsKZGlmZiAtcnUgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJL
aXRET01ET01XaW5kb3cuY3BwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCTIwMjEtMDktMDEgMDU6
MTY6NTEuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01ET01XaW5kb3cuY3BwCTIwMjItMDEtMjEg
MTE6NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC0yOSw4ICsyOSwxMiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01Qcm9taXNlRGVmZXJyZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRXhlY1N0
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKworI2lm
IEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyTWVz
c2FnZUhhbmRsZXJzTmFtZXNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJLaXROYW1lc3Bh
Y2UuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dQcm94eS5oPgogI2luY2x1
ZGUgIldlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb25Qcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0RE9NRE9NU2VsZWN0aW9uUHJpdmF0ZS5oIgpAQCAtMTA1NCw2ICsxMDU4LDcgQEAKICNlbmRp
ZiAvKiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKSAqLwogfQogCisjaWYgRU5BQkxFKFVTRVJf
TUVTU0FHRV9IQU5ETEVSUykKIGdib29sZWFuIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRf
bWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3NhZ2UoV2ViS2l0RE9NRE9NV2luZG93KiB3aW5kb3cs
IGNvbnN0IGdjaGFyKiBoYW5kbGVyTmFtZSwgY29uc3QgZ2NoYXIqIG1lc3NhZ2UpCiB7CiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHdpbmRvdyksIEZB
TFNFKTsKQEAgLTEwODcsNCArMTA5Miw2IEBACiAKICAgICByZXR1cm4gVFJVRTsKIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQorCiBHX0dOVUNfRU5EX0lHTk9SRV9E
RVBSRUNBVElPTlM7CmRpZmYgLXJ1IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnRH
dGsuY3BwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01FbGVtZW50R3RrLmNwcAkyMDIxLTA5LTAxIDA1OjE2OjUxLjAwMDAw
MDAwMCAtMDQwMAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudEd0ay5jcHAJMjAyMi0wMS0yMSAxMTo1MToyMi4w
MDAwMDAwMDAgLTA1MDAKQEAgLTg4OCw2ICs4ODgsNyBAQAogICAgIHJldHVybiB3ZWJraXRfZG9t
X2VsZW1lbnRfbWF0Y2hlcyhzZWxmLCBzZWxlY3RvcnMsIGVycm9yKTsKIH0KIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKIHZvaWQgd2Via2l0X2RvbV9lbGVtZW50X3dlYmtpdF9yZXF1ZXN0
X2Z1bGxzY3JlZW4oV2ViS2l0RE9NRWxlbWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC04OTUsNiArODk2LDcgQEAKICAgICBXZWJDb3Jl
OjpFbGVtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPndlYmtpdFJl
cXVlc3RGdWxsc2NyZWVuKCk7CiB9CisjZW5kaWYKIAogV2ViS2l0RE9NRWxlbWVudCogd2Via2l0
X2RvbV9lbGVtZW50X2luc2VydF9hZGphY2VudF9lbGVtZW50KFdlYktpdERPTUVsZW1lbnQqIHNl
bGYsIGNvbnN0IGdjaGFyKiB3aGVyZSwgV2ViS2l0RE9NRWxlbWVudCogZWxlbWVudCwgR0Vycm9y
KiogZXJyb3IpCiB7CmRpZmYgLXJ1IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3QuaAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUhvc3QuaAkyMDIxLTA5LTAxIDA1OjE2OjUxLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUhvc3QuaAkyMDIyLTAxLTIxIDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAtMzMsMTMgKzMz
LDE2IEBACiAjaW5jbHVkZSAiU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
VGhyZWFkZWRDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiVGhyZWFkZWREaXNwbGF5UmVmcmVzaE1v
bml0b3IuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvT3B0aW9uU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAjaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPFdlYkNvcmUv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg+CiAjZW5kaWYKKyNlbmRpZgogCiAjaWYgVVNFKEdS
QVBISUNTX0xBWUVSX1RFWFRVUkVfTUFQUEVSKQogCkBAIC0yNDEsNiArMjQ0LDEwIEBACiBpbmxp
bmUgdm9pZCBMYXllclRyZWVIb3N0OjpzZXRJc0Rpc2NhcmRhYmxlKGJvb2wpIHsgfQogaW5saW5l
IHZvaWQgTGF5ZXJUcmVlSG9zdDo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgeyB9
CiBpbmxpbmUgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eUlEKSB7IHJldHVybiBudWxscHRyOyB9CisjaWYgUExBVEZPUk0oR1RLKQoraW5saW5lIHZvaWQg
TGF5ZXJUcmVlSG9zdDo6YWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQpIHsgfQoraW5saW5lIHZvaWQgTGF5ZXJUcmVlSG9zdDo6Y29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQpIHsgfQorI2VuZGlmCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLXJ1IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAkyMDIxLTA5LTAxIDA1OjE2OjUxLjAwMDAwMDAw
MCAtMDQwMAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBh
Z2VHTGliLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAtMTM0LDEx
ICsxMzQsMTUgQEAKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpKSB7CiAg
ICAgICAgIGF1dG8mIGlucHV0RWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpl
bGVtZW50KTsKICAgICAgICAgc3RhdGUuc2V0UHVycG9zZUZvcklucHV0RWxlbWVudChpbnB1dEVs
ZW1lbnQpOworI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICAgICAgICAgc3RhdGUuYWRkSGlu
dHNGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoaW5wdXRFbGVtZW50LmF1dG9jYXBpdGFsaXplVHlwZSgp
KTsKKyNlbmRpZgogICAgIH0gZWxzZSBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKmVsZW1l
bnQpIHx8IChlbGVtZW50LT5oYXNFZGl0YWJsZVN0eWxlKCkgJiYgaXM8SFRNTEVsZW1lbnQ+KCpl
bGVtZW50KSkpIHsKICAgICAgICAgYXV0byYgaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxl
bWVudD4oKmVsZW1lbnQpOwogICAgICAgICBzdGF0ZS5zZXRQdXJwb3NlT3JIaW50Rm9ySW5wdXRN
b2RlKGh0bWxFbGVtZW50LmNhbm9uaWNhbElucHV0TW9kZSgpKTsKKyNpZiBFTkFCTEUoQVVUT0NB
UElUQUxJWkUpCiAgICAgICAgIHN0YXRlLmFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKGh0
bWxFbGVtZW50LmF1dG9jYXBpdGFsaXplVHlwZSgpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIGlm
IChlbGVtZW50LT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCmRpZmYgLXJ1IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
VGFiLmMKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYwkyMDIxLTA5LTAx
IDA1OjE2OjUxLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlclRhYi5jCTIwMjItMDEtMjEgMTE6NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYg
ZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisj
aW5jbHVkZSAiY29uZmlnLmgiCiAjZW5kaWYKICNpbmNsdWRlICJCcm93c2VyVGFiLmgiCiAKQEAg
LTQ4LDggKzQ5LDEwIEBACiAgICAgZ2Jvb2xlYW4gaW5zcGVjdG9ySXNWaXNpYmxlOwogICAgIEd0
a1dpZGdldCAqZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbDsKICAgICBndWludCBmdWxsU2NyZWVuTWVz
c2FnZUxhYmVsSWQ7CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICBHdGtXaWRnZXQgKnBv
aW50ZXJMb2NrTWVzc2FnZUxhYmVsOwogICAgIGd1aW50IHBvaW50ZXJMb2NrTWVzc2FnZUxhYmVs
SWQ7CisjZW5kaWYKIAogICAgIC8qIFRhYiBUaXRsZSAqLwogICAgIEd0a1dpZGdldCAqdGl0bGVC
b3g7CkBAIC0yNTgsMTIgKzI2MSwxNCBAQAogICAgIHJldHVybiBUUlVFOwogfQogCisjaWYgRU5B
QkxFKFBPSU5URVJfTE9DSykKIHN0YXRpYyBnYm9vbGVhbiBwb2ludGVyTG9ja01lc3NhZ2VUaW1l
b3V0Q2FsbGJhY2soQnJvd3NlclRhYiAqdGFiKQogewogICAgIGd0a193aWRnZXRfaGlkZSh0YWIt
PnBvaW50ZXJMb2NrTWVzc2FnZUxhYmVsKTsKICAgICB0YWItPnBvaW50ZXJMb2NrTWVzc2FnZUxh
YmVsSWQgPSAwOwogICAgIHJldHVybiBGQUxTRTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgdm9pZCBw
ZXJtaXNzaW9uUmVxdWVzdERpYWxvZ1Jlc3BvbnNlKEd0a1dpZGdldCAqZGlhbG9nLCBnaW50IHJl
c3BvbnNlLCBQZXJtaXNzaW9uUmVxdWVzdERhdGEgKnJlcXVlc3REYXRhKQogewpAQCAtMzM1LDcg
KzM0MCw5IEBACiAgICAgICAgIH0KICAgICAgICAgZ19mcmVlKG9yaWdpbik7CiAgICAgICAgIHJl
dHVybiBGQUxTRTsKLSAgICB9IGVsc2UgaWYgKFdFQktJVF9JU19QT0lOVEVSX0xPQ0tfUEVSTUlT
U0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAgfQorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CisJCWVsc2UgaWYgKFdFQktJVF9JU19QT0lOVEVSX0xPQ0tfUEVSTUlTU0lPTl9SRVFVRVNUKHJl
cXVlc3QpKSB7CiAgICAgICAgIGNvbnN0IGdjaGFyICp0aXRsZU9yVVJJID0gd2Via2l0X3dlYl92
aWV3X2dldF90aXRsZSh0YWItPndlYlZpZXcpOwogICAgICAgICBpZiAoIXRpdGxlT3JVUkkgfHwg
IXRpdGxlT3JVUklbMF0pCiAgICAgICAgICAgICB0aXRsZU9yVVJJID0gd2Via2l0X3dlYl92aWV3
X2dldF91cmkodGFiLT53ZWJWaWV3KTsKQEAgLTM0OCw3ICszNTUsOSBAQAogICAgICAgICB0YWIt
PnBvaW50ZXJMb2NrTWVzc2FnZUxhYmVsSWQgPSBnX3RpbWVvdXRfYWRkX3NlY29uZHMoMiwgKEdT
b3VyY2VGdW5jKXBvaW50ZXJMb2NrTWVzc2FnZVRpbWVvdXRDYWxsYmFjaywgdGFiKTsKICAgICAg
ICAgZ19zb3VyY2Vfc2V0X25hbWVfYnlfaWQodGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbElk
LCAiW1dlYktpdF1wb2ludGVyTG9ja01lc3NhZ2VUaW1lb3V0Q2FsbGJhY2siKTsKICAgICAgICAg
cmV0dXJuIFRSVUU7Ci0gICAgfSBlbHNlIGlmIChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX0FDQ0VT
U19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICB9CisjZW5kaWYKKwkJZWxzZSBp
ZiAoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9BQ0NFU1NfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpKSB7CiAgICAgICAgIHRpdGxlID0gIldlYnNpdGVEYXRhIGFjY2VzcyByZXF1ZXN0IjsKICAg
ICAgICAgV2ViS2l0V2Vic2l0ZURhdGFBY2Nlc3NQZXJtaXNzaW9uUmVxdWVzdCAqd2Vic2l0ZURh
dGFBY2Nlc3NSZXF1ZXN0ID0gV0VCS0lUX1dFQlNJVEVfREFUQV9BQ0NFU1NfUEVSTUlTU0lPTl9S
RVFVRVNUKHJlcXVlc3QpOwogICAgICAgICBjb25zdCBnY2hhciAqcmVxdWVzdGluZ0RvbWFpbiA9
IHdlYmtpdF93ZWJzaXRlX2RhdGFfYWNjZXNzX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfcmVxdWVz
dGluZ19kb21haW4od2Vic2l0ZURhdGFBY2Nlc3NSZXF1ZXN0KTsKQEAgLTU2NSw4ICs1NzQsMTEg
QEAKIAogICAgIGlmICh0YWItPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCkKICAgICAgICAgZ19z
b3VyY2VfcmVtb3ZlKHRhYi0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkKTsKKworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCiAgICAgaWYgKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCkK
ICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCk7
CisjZW5kaWYKIAogICAgIEdfT0JKRUNUX0NMQVNTKGJyb3dzZXJfdGFiX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKGdPYmplY3QpOwogfQpAQCAtNjI0LDYgKzYzNiw3IEBACiAjZW5kaWYKICAgICBn
dGtfb3ZlcmxheV9hZGRfb3ZlcmxheShHVEtfT1ZFUkxBWShvdmVybGF5KSwgdGFiLT5mdWxsU2Ny
ZWVuTWVzc2FnZUxhYmVsKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdGFiLT5w
b2ludGVyTG9ja01lc3NhZ2VMYWJlbCA9IGd0a19sYWJlbF9uZXcoTlVMTCk7CiAgICAgZ3RrX3dp
ZGdldF9zZXRfaGFsaWduKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWwsIEdUS19BTElHTl9D
RU5URVIpOwogICAgIGd0a193aWRnZXRfc2V0X3ZhbGlnbih0YWItPnBvaW50ZXJMb2NrTWVzc2Fn
ZUxhYmVsLCBHVEtfQUxJR05fU1RBUlQpOwpAQCAtNjMxLDYgKzY0NCw3IEBACiAgICAgZ3RrX3dp
ZGdldF9zZXRfbm9fc2hvd19hbGwodGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbCwgVFJVRSk7
CiAjZW5kaWYKICAgICBndGtfb3ZlcmxheV9hZGRfb3ZlcmxheShHVEtfT1ZFUkxBWShvdmVybGF5
KSwgdGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbCk7CisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKIAogICAgIGd0a193aWRnZXRfc2V0X3ZleHBhbmQoR1RLX1dJREdFVCh0YWItPndl
YlZpZXcpLCBUUlVFKTsKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKZGlmZiAtcnUg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21h
aW4uYwotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCTIwMjEtMDktMDEgMDU6MTY6
NTEuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMJMjAy
Mi0wMS0yMSAxMTo1MToyMi4wMDAwMDAwMDAgLTA1MDAKQEAgLTI2LDYgKzI2LDcgQEAKICAqLwog
CiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1
ZGUgIkJyb3dzZXJXaW5kb3cuaCIKICNpbmNsdWRlICJCdWlsZFJldmlzaW9uLmgiCkBAIC01Miw3
ICs1MywxMSBAQAogc3RhdGljIGNvbnN0IGNoYXIgKmNvb2tpZXNQb2xpY3k7CiBzdGF0aWMgY29u
c3QgY2hhciAqcHJveHk7CiBzdGF0aWMgZ2Jvb2xlYW4gZGFya01vZGU7CisKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogc3RhdGljIGdib29sZWFuIGVuYWJsZUlUUDsKKyNl
bmRpZgorCiBzdGF0aWMgZ2Jvb2xlYW4gZW5hYmxlU2FuZGJveDsKIHN0YXRpYyBnYm9vbGVhbiBl
eGl0QWZ0ZXJMb2FkOwogc3RhdGljIGdib29sZWFuIHdlYlByb2Nlc3NDcmFzaGVkOwpAQCAtMTQ2
LDcgKzE1MSw5IEBACiAgICAgeyAiaWdub3JlLWhvc3QiLCAwLCAwLCBHX09QVElPTl9BUkdfU1RS
SU5HX0FSUkFZLCAmaWdub3JlSG9zdHMsICJTZXQgcHJveHkgaWdub3JlIGhvc3RzIiwgIkhPU1RT
IiB9LAogICAgIHsgImlnbm9yZS10bHMtZXJyb3JzIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUs
ICZpZ25vcmVUTFNFcnJvcnMsICJJZ25vcmUgVExTIGVycm9ycyIsIE5VTEwgfSwKICAgICB7ICJj
b250ZW50LWZpbHRlciIsIDAsIDAsIEdfT1BUSU9OX0FSR19GSUxFTkFNRSwgJmNvbnRlbnRGaWx0
ZXIsICJKU09OIHdpdGggY29udGVudCBmaWx0ZXJpbmcgcnVsZXMiLCAiRklMRSIgfSwKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHsgImVuYWJsZS1pdHAiLCAwLCAw
LCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZUlUUCwgIkVuYWJsZSBJbnRlbGxpZ2VudCBUcmFj
a2luZyBQcmV2ZW50aW9uIChJVFApIiwgTlVMTCB9LAorI2VuZGlmCiAgICAgeyAiZW5hYmxlLXNh
bmRib3giLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmVuYWJsZVNhbmRib3gsICJFbmFibGUg
d2ViIHByb2Nlc3Mgc2FuZGJveCBzdXBwb3J0IiwgTlVMTCB9LAogICAgIHsgImV4aXQtYWZ0ZXIt
bG9hZCIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmZXhpdEFmdGVyTG9hZCwgIlF1aXQgdGhl
IGJyb3dzZXIgYWZ0ZXIgdGhlIGxvYWQgZmluaXNoZXMiLCBOVUxMIH0sCiAgICAgeyAidmVyc2lv
biIsICd2JywgMCwgR19PUFRJT05fQVJHX05PTkUsICZwcmludFZlcnNpb24sICJQcmludCB0aGUg
V2ViS2l0R1RLIHZlcnNpb24iLCBOVUxMIH0sCkBAIC00NTEsNyArNDU4LDkgQEAKICAgICBhYm91
dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJQbHVnaW5zIERh
dGEiLCBXRUJLSVRfV0VCU0lURV9EQVRBX1BMVUdJTl9EQVRBLCBOVUxMLCBwYWdlSUQpOwogICAg
IGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIk9mZmxp
bmUgV2ViIEFwcGxpY2F0aW9ucyBDYWNoZSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9B
UFBMSUNBVElPTl9DQUNIRSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5l
X2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKICAgICBhYm91
dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJIU1RTIENhY2hl
IiwgV0VCS0lUX1dFQlNJVEVfREFUQV9IU1RTX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2hzdHNfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJl
c3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiSVRQIGRhdGEiLCBXRUJLSVRfV0VCU0lURV9E
QVRBX0lUUCwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5KG1h
bmFnZXIpLCBwYWdlSUQpOworI2VuZGlmCiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwg
ZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiU2VydmljZSBXb3JrZXIgUmVnaXN0cmF0YXRpb25zIiwg
V0VCS0lUX1dFQlNJVEVfREFUQV9TRVJWSUNFX1dPUktFUl9SRUdJU1RSQVRJT05TLAogICAgICAg
ICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3NlcnZpY2Vfd29ya2VyX3JlZ2lzdHJh
dGlvbnNfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwogICAgIGFib3V0RGF0YUZpbGxUYWJs
ZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIkRPTSBDYWNoZSIsIFdFQktJVF9XRUJT
SVRFX0RBVEFfRE9NX0NBQ0hFLCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2RvbV9j
YWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CkBAIC00NzAsNiArNDc5LDcgQEAKICAg
ICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2gobWFuYWdlciwgV0VCS0lUX1dFQlNJ
VEVfREFUQV9BTEwsIE5VTEwsIChHQXN5bmNSZWFkeUNhbGxiYWNrKWdvdFdlYnNpdGVEYXRhQ2Fs
bGJhY2ssIGRhdGFSZXF1ZXN0KTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCAqcmVx
dWVzdDsKICAgICBHTGlzdCAqdGhpcmRQYXJ0eUxpc3Q7CkBAIC01MjQsNiArNTM0LDcgQEAKICAg
ICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgKm1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYkNvbnRleHQpOwogICAgIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfaXRwX3N1bW1hcnkobWFuYWdlciwgTlVMTCwgKEdBc3luY1JlYWR5
Q2FsbGJhY2spZ290SVRQU3VtbWFyeUNhbGxiYWNrLCBpdHBSZXF1ZXN0KTsKIH0KKyNlbmRpZiAv
LyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCiBzdGF0aWMgdm9pZCBhYm91dFVS
SVNjaGVtZVJlcXVlc3RDYWxsYmFjayhXZWJLaXRVUklTY2hlbWVSZXF1ZXN0ICpyZXF1ZXN0LCBX
ZWJLaXRXZWJDb250ZXh0ICp3ZWJDb250ZXh0KQogewpAQCAtNTQ2LDggKzU1NywxMCBAQAogICAg
ICAgICBnX29iamVjdF91bnJlZihzdHJlYW0pOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChw
YXRoLCAiZGF0YSIpKQogICAgICAgICBhYm91dERhdGFIYW5kbGVSZXF1ZXN0KHJlcXVlc3QsIHdl
YkNvbnRleHQpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgZWxz
ZSBpZiAoIWdfc3RyY21wMChwYXRoLCAiaXRwIikpCiAgICAgICAgIGFib3V0SVRQSGFuZGxlUmVx
dWVzdChyZXF1ZXN0LCB3ZWJDb250ZXh0KTsKKyNlbmRpZgogICAgIGVsc2UgewogICAgICAgICBl
cnJvciA9IGdfZXJyb3JfbmV3KE1JTklfQlJPV1NFUl9FUlJPUiwgTUlOSV9CUk9XU0VSX0VSUk9S
X0lOVkFMSURfQUJPVVRfUEFUSCwgIkludmFsaWQgYWJvdXQ6JXMgcGFnZS4iLCBwYXRoKTsKICAg
ICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdCwgZXJy
b3IpOwpAQCAtNjU5LDYgKzY3Miw3IEBACiAgICAgICAgIGdfZnJlZShjYWNoZURpcmVjdG9yeSk7
CiAgICAgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X2l0cF9lbmFibGVkKG1hbmFnZXIsIGVuYWJsZUlU
UCk7CiAKICAgICBpZiAocHJveHkpIHsKQEAgLTY2Niw2ICs2ODAsNyBAQAogICAgICAgICB3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfc2V0X25ldHdvcmtfcHJveHlfc2V0dGluZ3MobWFuYWdl
ciwgV0VCS0lUX05FVFdPUktfUFJPWFlfTU9ERV9DVVNUT00sIHdlYmtpdFByb3h5U2V0dGluZ3Mp
OwogICAgICAgICB3ZWJraXRfbmV0d29ya19wcm94eV9zZXR0aW5nc19mcmVlKHdlYmtpdFByb3h5
U2V0dGluZ3MpOwogICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKGlnbm9yZVRMU0Vycm9ycykKICAg
ICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF90bHNfZXJyb3JzX3BvbGljeSht
YW5hZ2VyLCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449763</attachid>
            <date>2022-01-23 13:44:01 -0800</date>
            <delta_ts>2022-01-23 14:02:21 -0800</delta_ts>
            <desc>missing headers and if preprocessor guards against 2.34.4</desc>
            <filename>missing-headers-and-ifs-2.34.4.patch</filename>
            <type>text/plain</type>
            <size>38815</size>
            <attacher name="Dennis Nezic">dennisn</attacher>
            
              <data encoding="base64">LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCTIwMjEt
MTAtMjEgMDQ6NTI6MDcuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkyMDIyLTAxLTIxIDEyOjEwOjA2LjAwMDAwMDAwMCAt
MDUwMApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCTIwMjEtMTAtMjEgMDQ6
NTI6MDcuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZElkZW50aWZpZXJzLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUw
MApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uRGF0YS5oIgorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSWRl
bnRpZmllcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5oCTIwMjEt
MDUtMTcgMDk6MjI6MzUuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmgJMjAyMi0wMS0yMSAxMjoxMToyMi4wMDAwMDAw
MDAgLTA1MDAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5j
bHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJMjAyMS0xMC0yMSAw
NDo1MjowNy4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiREZHUGxhbi5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQWxsb3dsaXN0LmgiCisjaW5jbHVkZSAiSGVhcElubGluZXMuaCIK
ICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmNwcAkyMDIxLTA1LTE3IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJMjAyMi0wMS0yMSAxMTo1MToy
MS4wMDAwMDAwMDAgLTA1MDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRpc2Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJh
c2VkRnV6emVyQWdlbnRCYXNlLmNwcAkyMDIxLTEwLTIxIDA0OjUyOjA3LjAwMDAwMDAwMCAtMDQw
MAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2Vu
dEJhc2UuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmgiCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVzaXplT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAJMjAyMS0wNS0x
NyAwOToyMjo0MS4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSZXNpemVPYnNlcnZlckVudHJ5Q3VzdG9tLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAw
MDAwMDAwMCAtMDUwMApAQCAtMjUsNiArMjUsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisKICNpbmNsdWRlICJKU1Jlc2l6ZU9i
c2VydmVyRW50cnkuaCIKIAogI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgpAQCAtNDEsMyArNDQs
NSBAQAogREVGSU5FX1ZJU0lUX0FERElUSU9OQUxfQ0hJTERSRU4oSlNSZXNpemVPYnNlcnZlckVu
dHJ5KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJhdGlvbk5vZGUuY3BwCTIwMjEtMTAtMjEgMDQ6NTI6
MDkuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNP
cGVyYXRpb25Ob2RlLmNwcAkyMDIyLTAxLTIzIDE0OjE4OjUwLjAwMDAwMDAwMCAtMDUwMApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTVW5pdHMuaCIKICNpbmNsdWRlICJDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbi5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ByaW1p
dGl2ZVZhbHVlTm9kZS5jcHAJMjAyMS0xMC0yMSAwNDo1MjowOS4wMDAwMDAwMDAgLTA0MDAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZS5jcHAJ
MjAyMi0wMS0yMyAxNDoxODo1MC4wMDAwMDAwMDAgLTA1MDAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ2FsY0V4cHJl
c3Npb25MZW5ndGguaCIKICNpbmNsdWRlICJDYWxjRXhwcmVzc2lvbk51bWJlci5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkyMDIyLTAxLTIwIDEwOjUyOjIyLjAwMDAwMDAwMCAtMDUwMAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAw
MDAwIC0wNTAwCkBAIC00NDY5LDggKzQ0NjksNyBAQAogCiAgICAgYXV0byBwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKICAgICBhdXRvJiB3b3JsZCA9IGVuc3Vy
ZUlzb2xhdGVkV29ybGQoKTsKLSAgICBSZWYgcHJvdGVjdGVkRnJhbWUgPSAqZG9jdW1lbnQoKS5m
cmFtZSgpOwotICAgIGF1dG8mIHNjcmlwdENvbnRyb2xsZXIgPSBwcm90ZWN0ZWRGcmFtZS0+c2Ny
aXB0KCk7CisgICAgYXV0byYgc2NyaXB0Q29udHJvbGxlciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+
c2NyaXB0KCk7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzY3JpcHRDb250cm9sbGVyLmdsb2JhbE9iamVjdCh3b3JsZCkpOwogICAgIGF1
dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2so
dm0pOwpAQCAtNzQ4NCw2ICs3NDgzLDcgQEAKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAorI2lmIEVOQUJMRShNT0RFUk5fTUVESUFfQ09OVFJPTFMpCiAgICAgaWYgKCFlbnN1cmVN
ZWRpYUNvbnRyb2xzSW5qZWN0ZWRTY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03NTY0
LDYgKzc1NjQsNyBAQAogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOworI2VuZGlmIC8v
IEVOQUJMRShNT0RFUk5fTUVESUFfQ09OVFJPTFMpCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0TWVkaWFDb250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yKGJvb2wgZGVwZW5kc09u
UGFnZVNjYWxlKQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmgJMjAyMS0xMC0yMSAwNDo1MjowOS4wMDAwMDAwMDAgLTA0MDAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCTIw
MjItMDEtMjMgMTQ6MjA6NTkuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNhbnZhcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCTIwMjEt
MDUtMTcgMDk6MjI6NDEuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAw
MDAwMDAwMCAtMDUwMApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJ
SG9zdC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJKU0V4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkhlYXBB
Z2VudC5oIgogI2luY2x1ZGUgIldlYkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIldl
YkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAJMjAyMi0wMS0xOSAxMDowMjozNS4wMDAwMDAwMDAgLTA1
MDAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CTIwMjItMDEtMjEgMTE6NTM6MDMuMDAwMDAwMDAwIC0wNTAwCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCTIwMjEtMTAtMjEgMDQ6NTI6
MDkuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUwMApAQCAtMTExLDYgKzExMSw3IEBA
CiAjaW5jbHVkZSAiU3R5bGVTY29wZS5oIgogI2luY2x1ZGUgIlN1ZGRlblRlcm1pbmF0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgIlVzZXJDb250ZW50UHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc3VhbFZpZXdw
b3J0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnQuaCIKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCTIwMjEtMTAtMjggMDU6NTE6MzguMDAwMDAwMDAwIC0wNDAwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkyMDIyLTAxLTIzIDE0OjE4
OjUwLjAwMDAwMDAwMCAtMDUwMApAQCAtMTE0LDYgKzExNCw3IEBACiAjaW5jbHVkZSAiV2luZG93
c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAJMjAyMS0xMC0yMSAwNDo1MjowOS4wMDAwMDAwMDAgLTA0MDAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNDYs
MTEgKzI0NiwxMyBAQAogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llQWNj
ZXB0UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogeworI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKG1faXNSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCAmJiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPT0gVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsKSB7CiAgICAgICAgIG1fY29va2llQWNjZXB0UG9saWN5
ID0gcG9saWN5OwogICAgICAgICBpZiAobV9jb29raWVBY2NlcHRQb2xpY3kgPT0gSFRUUENvb2tp
ZUFjY2VwdFBvbGljeTo6RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQogICAgICAg
ICAgICAgcG9saWN5ID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeTo6QWx3YXlzQWNjZXB0OwogICAg
IH0KKyNlbmRpZgogCiAgICAgU291cENvb2tpZUphckFjY2VwdFBvbGljeSBzb3VwUG9saWN5ID0g
U09VUF9DT09LSUVfSkFSX0FDQ0VQVF9OT19USElSRF9QQVJUWTsKICAgICBzd2l0Y2ggKHBvbGlj
eSkgewotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAJMjAyMi0wMS0xOSAxNDoyMToxMC4wMDAwMDAwMDAgLTA1MDAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCTIwMjItMDEt
MjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC01MTksMTEgKzUxOSw2IEBACiAgICAgICAg
IG1fbmV0d29ya0xvYWQtPmNhbmNlbCgpOwogICAgIH0KIAotICAgIGlmIChpc1N5bmNocm9ub3Vz
KCkpIHsKLSAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5lcnJvciA9IFJlc291cmNlRXJy
b3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfTsKLSAgICAgICAgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbnVsbHB0ciwg
eyB9KTsKLSAgICB9Ci0KICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkNhbmNlbCk7CiB9CiAKQEAg
LTUzMiw3ICs1MjcsMTEgQEAKICAgICBtX2Nvbm5lY3Rpb24gPSBuZXdDb25uZWN0aW9uOwogICAg
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyID0gbmV3Q29yZUlkZW50aWZpZXI7CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciB8fCBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfHwg
bV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fcmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciB8fCBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UpOworI2VuZGlmCiAgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlID0gdHJ1ZTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgbV9yZXNwb25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSB9KTsKIH0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAJMjAyMS0wNS0xNyAw
OToyMjo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAJMjAyMi0wMS0yMSAx
MTo1MToyMi4wMDAwMDAwMDAgLTA1MDAKQEAgLTE4LDYgKzE4LDkgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQorCiAjaW5jbHVkZSAiV2Vi
S2l0UG9pbnRlckxvY2tQZXJtaXNzaW9uUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0UGVy
bWlzc2lvblJlcXVlc3QuaCIKQEAgLTExMSwzICsxMTQsNSBAQAogICAgIHJlcXVlc3QtPnByaXYt
Pm1hZGVEZWNpc2lvbiA9IHRydWU7CiAgICAgcmVxdWVzdC0+cHJpdi0+d2ViVmlldyA9IG51bGxw
dHI7CiB9CisKKyNlbmRpZiAvLyBFTkFCTEUoUE9JTlRFUl9MT0NLKQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCTIwMjEt
MTAtMjEgMDQ6NTI6MDkuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAJMjAyMi0wMS0yMSAxMTo1
MzowNy4wMDAwMDAwMDAgLTA1MDAKQEAgLTE0OCw5ICsxNDgsMTEgQEAKICAgICBjYXNlIFBST1Bf
SFNUU19DQUNIRV9ESVJFQ1RPUlk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwg
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShtYW5h
Z2VyKSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgY2FzZSBQUk9QX0lUUF9ESVJFQ1RPUlk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0
cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5
KG1hbmFnZXIpKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFBST1BfU0VSVklD
RV9XT1JLRVJfUkVHSVNUUkFUSU9OU19ESVJFQ1RPUlk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0
cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9zZXJ2aWNlX3dvcmtl
cl9yZWdpc3RyYXRpb25zX2RpcmVjdG9yeShtYW5hZ2VyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTk0LDkgKzE5NiwxMSBAQAogICAgIGNhc2UgUFJPUF9IU1RTX0NBQ0hFX0RJUkVDVE9SWToKICAg
ICAgICAgbWFuYWdlci0+cHJpdi0+aHN0c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfdmFsdWVfZHVw
X3N0cmluZyh2YWx1ZSkpOwogICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGNhc2UgUFJPUF9JVFBfRElSRUNUT1JZOgogICAgICAgICBtYW5h
Z2VyLT5wcml2LT5pdHBEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7
CiAgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgY2FzZSBQUk9QX1NFUlZJQ0VfV09SS0VSX1JF
R0lTVFJBVElPTlNfRElSRUNUT1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2LT5zd1JlZ2lzdHJh
dGlvbnNEaXJlY3RvcnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMjI0LDggKzIyOCwxMCBAQAogICAgICAgICAgICAgcHJpdi0+aW5kZXhlZERC
RGlyZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3Rvcnku
Z2V0KCksICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwogICAgICAgICBpZiAo
IXByaXYtPndlYlNRTERpcmVjdG9yeSkKICAgICAgICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9y
eS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpLCAi
ZGF0YWJhc2VzIiwgbnVsbHB0cikpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgICAgIGlmICghcHJpdi0+aXRwRGlyZWN0b3J5KQogICAgICAgICAgICAgcHJpdi0+
aXRwRGlyZWN0b3J5LnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3Rv
cnkuZ2V0KCksICJpdHAiLCBudWxscHRyKSk7CisjZW5kaWYKICAgICAgICAgaWYgKCFwcml2LT5z
d1JlZ2lzdHJhdGlvbnNEaXJlY3RvcnkpCiAgICAgICAgICAgICBwcml2LT5zd1JlZ2lzdHJhdGlv
bnNEaXJlY3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVjdG9y
eS5nZXQoKSwgInNlcnZpY2V3b3JrZXJzIiwgbnVsbHB0cikpOwogICAgIH0KQEAgLTM5Niw2ICs0
MDIsNyBAQAogICAgICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQ
YXJhbUZsYWdzPihXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05M
WSkpKTsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgLyoqCiAg
ICAgICogV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyOml0cC1kaXJlY3Rvcnk6CiAgICAgICoKQEAg
LTQxMiw2ICs0MTksNyBAQAogICAgICAgICAgICAgXygiVGhlIGRpcmVjdG9yeSB3aGVyZSBJbnRl
bGxpZ2VudCBUcmFja2luZyBQcmV2ZW50aW9uIGRhdGEgd2lsbCBiZSBzdG9yZWQiKSwKICAgICAg
ICAgICAgIG51bGxwdHIsCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VC
S0lUX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogICAgIC8qKgogICAgICAqIFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlcjpzZXJ2aWNlLXdvcmtlci1yZWdpc3RyYXRpb25zLWRpcmVj
dG9yeToKQEAgLTQ4NSw4ICs0OTMsMTAgQEAKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNl
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGlm
IChwcml2LT5oc3RzQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uLT5z
ZXRIU1RTU3RvcmFnZURpcmVjdG9yeShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChwcml2LT5pdHBEaXJlY3Rv
cnkpCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cHJpdi0+aXRwRGlyZWN0b3J5LmdldCgpKSk7CisjZW5kaWYKICAgICAgICAgaWYgKHByaXYtPnN3
UmVnaXN0cmF0aW9uc0RpcmVjdG9yeSkKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5zd1JlZ2lzdHJhdGlvbnNEaXJlY3RvcnkuZ2V0
KCkpKTsKICAgICAgICAgaWYgKHByaXYtPmRvbUNhY2hlRGlyZWN0b3J5KQpAQCAtNzM1LDYgKzc0
NSw3IEBACiAgICAgcmV0dXJuIHByaXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIAor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAvKioKICAqIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeToKICAqIEBtYW5hZ2VyOiBhICNXZWJL
aXRXZWJzaXRlRGF0YU1hbmFnZXIKQEAgLTc1Nyw2ICs3NjgsNyBAQAogICAgICAgICBwcml2LT5p
dHBEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAg
ICByZXR1cm4gcHJpdi0+aXRwRGlyZWN0b3J5LmdldCgpOwogfQorI2VuZGlmIC8vIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9zZXJ2aWNlX3dvcmtlcl9yZWdpc3RyYXRpb25zX2RpcmVjdG9yeToKQEAgLTgy
NCw2ICs4MzYsNyBAQAogICAgIHJldHVybiBtYW5hZ2VyLT5wcml2LT5jb29raWVNYW5hZ2VyLmdl
dCgpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIC8qKgogICog
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZDoKICAqIEBtYW5hZ2Vy
OiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIKQEAgLTg1OSw2ICs4NzIsNyBAQAogCiAgICAg
cmV0dXJuIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwogfQorI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAKIC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X3NldF9wZXJzaXN0ZW50X2NyZWRlbnRpYWxfc3RvcmFnZV9lbmFibGVkOgpAQCAtOTk3LDggKzEw
MTEsMTAgQEAKICAgICAgICAgcmV0dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q29va2ll
cyk7CiAgICAgaWYgKHR5cGVzICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9T
QUxUKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhh
c2hTYWx0KTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICh0
eXBlcyAmIFdFQktJVF9XRUJTSVRFX0RBVEFfSVRQKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQo
V2Vic2l0ZURhdGFUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKTsKKyNlbmRpZgogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRB
X1NFUlZJQ0VfV09SS0VSX1JFR0lTVFJBVElPTlMpCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChX
ZWJzaXRlRGF0YVR5cGU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTExNzksNiAr
MTE5NSw3IEBACiAgICAgcmV0dXJuIGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVz
dWx0KSwgZXJyb3IpOwogfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
IHN0cnVjdCBfV2ViS2l0SVRQRmlyc3RQYXJ0eSB7CiAgICAgZXhwbGljaXQgX1dlYktpdElUUEZp
cnN0UGFydHkoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZv
clNwZWNpZmljRmlyc3RQYXJ0eSYmIGRhdGEpCiAgICAgICAgIDogZG9tYWluKGRhdGEuZmlyc3RQ
YXJ0eURvbWFpbi5zdHJpbmcoKS51dGY4KCkpCkBAIC0xMTkyLDYgKzEyMDksNyBAQAogICAgIEdS
ZWZQdHI8R0RhdGVUaW1lPiBsYXN0VXBkYXRlZDsKICAgICBpbnQgcmVmZXJlbmNlQ291bnQgeyAx
IH07CiB9OworI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIC8q
KgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9tZW1vcnlfcHJlc3N1cmVfc2V0
dGluZ3M6CkBAIC0xMjE3LDYgKzEyMzUsOCBAQAogICAgIFdlYlByb2Nlc3NQb29sOjpzZXROZXR3
b3JrUHJvY2Vzc01lbW9yeVByZXNzdXJlSGFuZGxlckNvbmZpZ3VyYXRpb24oY29uZmlnKTsKIH0K
IAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisKIEdfREVGSU5FX0JPWEVE
X1RZUEUoV2ViS2l0SVRQRmlyc3RQYXJ0eSwgd2Via2l0X2l0cF9maXJzdF9wYXJ0eSwgd2Via2l0
X2l0cF9maXJzdF9wYXJ0eV9yZWYsIHdlYmtpdF9pdHBfZmlyc3RfcGFydHlfdW5yZWYpCiAKIHN0
YXRpYyBXZWJLaXRJVFBGaXJzdFBhcnR5KiB3ZWJraXRJVFBGaXJzdFBhcnR5Q3JlYXRlKFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHkmJiBkYXRhKQpAQCAtMTQ3NCwzICsxNDk0LDQgQEAKIAogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHTGlzdCo+KGdfdGFza19wcm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJy
b3IpKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAky
MDIxLTEwLTI4IDA1OjI0OjI3LjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIy
LjAwMDAwMDAwMCAtMDUwMApAQCAtNjkyLDggKzY5MiwxMCBAQAogICAgIGdfY2xlYXJfcG9pbnRl
cigmd2ViVmlldy0+cHJpdi0+ZGlhbG9nLCBndGtfd2lkZ2V0X2Rlc3Ryb3kpOwogICAgIHdlYmtp
dFdlYlZpZXdCYXNlU2V0VG9wbGV2ZWxPblNjcmVlbldpbmRvdyh3ZWJWaWV3LCBudWxscHRyKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQogICAgIGlmICh3ZWJWaWV3LT5wcml2
LT5hY2Nlc3NpYmxlKQogICAgICAgICB3ZWJraXRXZWJWaWV3QWNjZXNzaWJsZVNldFdlYlZpZXco
V0VCS0lUX1dFQl9WSUVXX0FDQ0VTU0lCTEUod2ViVmlldy0+cHJpdi0+YWNjZXNzaWJsZS5nZXQo
KSksIG51bGxwdHIpOworI2VuZGlmCiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMjQsIDApCiAg
ICAgd2Via2l0V2ViVmlld0Jhc2VDb21wbGV0ZUVtb2ppQ2hvb3NlclJlcXVlc3Qod2ViVmlldywg
ZW1wdHlTdHJpbmcoKSk7CiAjZW5kaWYKQEAgLTcwNCw3ICs3MDYsOSBAQAogICAgIHdlYlZpZXct
PnByaXYtPmlucHV0TWV0aG9kRmlsdGVyLnNldENvbnRleHQobnVsbHB0cik7CiAgICAgd2ViVmll
dy0+cHJpdi0+cGFnZVByb3h5LT5jbG9zZSgpOwogICAgIHdlYlZpZXctPnByaXYtPmFjY2VsZXJh
dGVkQmFja2luZ1N0b3JlID0gbnVsbHB0cjsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAg
ICAgd2ViVmlldy0+cHJpdi0+c2xlZXBEaXNhYmxlciA9IG51bGxwdHI7CisjZW5kaWYKICAgICB3
ZWJWaWV3LT5wcml2LT5rZXlCaW5kaW5nVHJhbnNsYXRvci5pbnZhbGlkYXRlKCk7CiAgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShn
b2JqZWN0KTsKIH0KQEAgLTE2NTAsNiArMTY1NCw3IEBACiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
KyNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWSkKICNpZiAhVVNFKEdUSzQpCiBzdGF0aWMgQXRrT2Jq
ZWN0KiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjY2Vzc2libGUoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7
CkBAIC0xNjY4LDYgKzE2NzMsNyBAQAogICAgIHJldHVybiBwcml2LT5hY2Nlc3NpYmxlLmdldCgp
OwogfQogI2VuZGlmCisjZW5kaWYKIAogI2lmIFVTRShHVEs0KQogc3RhdGljIHZvaWQgdG9wbGV2
ZWxXaW5kb3dJc0FjdGl2ZUNoYW5nZWQoR3RrV2luZG93KiB3aW5kb3csIEdQYXJhbVNwZWMqLCBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCkBAIC0yMTYxLDkgKzIxNjcsMTEgQEAKICAg
ICB3aWRnZXRDbGFzcy0+dG91Y2hfZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQ7
CiAjZW5kaWYKICAgICB3aWRnZXRDbGFzcy0+cXVlcnlfdG9vbHRpcCA9IHdlYmtpdFdlYlZpZXdC
YXNlUXVlcnlUb29sdGlwOworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZKQogI2lmICFVU0UoR1RL
NCkKICAgICB3aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUgPSB3ZWJraXRXZWJWaWV3QmFzZUdl
dEFjY2Vzc2libGU7CiAjZW5kaWYKKyNlbmRpZgogI2lmIFVTRShHVEs0KQogICAgIHdpZGdldENs
YXNzLT5yb290ID0gd2Via2l0V2ViVmlld0Jhc2VSb290OwogICAgIHdpZGdldENsYXNzLT51bnJv
b3QgPSB3ZWJraXRXZWJWaWV3QmFzZVVucm9vdDsKQEAgLTI2ODIsNiArMjY5MCw3IEBACiB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
UmVxdWVzdFBvaW50ZXJMb2NrKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKQEAg
LTI3MDgsNiArMjcxNyw3IEBACiAgICAgcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyLT51bmxvY2so
KTsKICAgICBwcml2LT5wb2ludGVyTG9ja01hbmFnZXIgPSBudWxscHRyOwogfQorI2VuZGlmIC8v
IEVOQUJMRShQT0lOVEVSX0xPQ0spCiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1l
dGhvZENvbnRleHQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJLaXRJbnB1dE1l
dGhvZENvbnRleHQqIGNvbnRleHQpCiB7Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJMjAyMi0wMS0yMCAwNzozOTowMy4wMDAwMDAwMDAgLTA1MDAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkyMDIyLTAxLTIxIDExOjUx
OjIyLjAwMDAwMDAwMCAtMDUwMApAQCAtNDc4MSwzNyArNDc4MSwzNyBAQAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlz
aW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5n
IHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7Ci0gICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKLQotICAgIGlmIChtX3Byb3Zpc2lvbmFs
UGFnZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgeworICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFn
ZSAmJiBtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklEKCkgPT0gbmF2aWdhdGlvbklEKSB7
CiAgICAgICAgIC8vIFRoZSBsb2FkIGRpZCBub3QgZmFpbCwgaXQgaXMgbWVyZWx5IGhhcHBlbmlu
ZyBpbiBhIG5ldyBwcm92aXNpb25hbCBwcm9jZXNzLgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZp
Z2F0aW9uSUQsIHByb3Zpc2lvbmFsVVJMLCBlcnJvciwgd2lsbENvbnRpbnVlTG9hZGluZywgdXNl
ckRhdGEpOworICAgIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIFdURk1vdmUocmVxdWVz
dCksIG5hdmlnYXRpb25JRCwgcHJvdmlzaW9uYWxVUkwsIGVycm9yLCB3aWxsQ29udGludWVMb2Fk
aW5nLCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRp
bnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVS
TCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENv
bnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2Fk
aW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBw
aWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVz
IiwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNF
X0xPR19FUlJPUihQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFt
ZUlEPSUiIFBSSXU2NCAiLCBkb21haW49JXMsIGNvZGU9JWQiLCBmcmFtZS5mcmFtZUlEKCkudG9V
SW50NjQoKSwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OworICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBmcmFtZUlEPSUiIFBSSXU2NCAiLCBkb21haW49JXMsIGNv
ZGU9JWQiLCBmcmFtZUlELnRvVUludDY0KCksIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOworCiAg
ICAgaWYgKG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikgewogICAgICAgICBpZiAoYXV0byogYXV0
b21hdGlvblNlc3Npb24gPSBwcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9u
KCkpCi0gICAgICAgICAgICBhdXRvbWF0aW9uU2Vzc2lvbi0+bmF2aWdhdGlvbk9jY3VycmVkRm9y
RnJhbWUoZnJhbWUpOworICAgICAgICAgICAgYXV0b21hdGlvblNlc3Npb24tPm5hdmlnYXRpb25P
Y2N1cnJlZEZvckZyYW1lKCpmcmFtZSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBp
dCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIGJhY2sv
Zm9yd2FyZCBjYWNoZS4KICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOwot
ICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKKyAgICBpZiAoZnJh
bWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0g
bmF2aWdhdGlvblN0YXRlKCkudGFrZU5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAogICAgIGF1
dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAotICAgIGlm
IChmcmFtZS5pc01haW5GcmFtZSgpKSB7CisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGVycm9yKTsKICAgICAgICAgbV9wYWdlTG9h
ZFN0YXRlLmRpZEZhaWxQcm92aXNpb25hbExvYWQodHJhbnNhY3Rpb24pOwogICAgICAgICBwYWdl
Q2xpZW50KCkuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSgpOwpAQCAtNDgxOSw3
ICs0ODE5LDcgQEAKICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25B
Y3Rpdml0eShudWxscHRyKTsKICAgICB9CiAKLSAgICBmcmFtZS5kaWRGYWlsUHJvdmlzaW9uYWxM
b2FkKCk7CisgICAgZnJhbWUtPmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKIAogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CiAKQEAgLTQ4MjcsNyArNDgyNyw3IEBACiAgICAg
bV9mYWlsaW5nUHJvdmlzaW9uYWxMb2FkVVJMID0gcHJvdmlzaW9uYWxVUkw7CiAKICAgICBpZiAo
bV9sb2FkZXJDbGllbnQpCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBl
cnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOworICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIGVycm9y
LCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgRnJhbWVJbmZvRGF0YSB7IGZyYW1l
SW5mbyB9LCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgICAgICBtX25hdmlnYXRp
b25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSgqdGhpcywg
V1RGTW92ZShyZXF1ZXN0KSwgZXJyb3IsIFdURk1vdmUoZnJhbWVJbmZvKSk7CkBAIC00ODM2LDcg
KzQ4MzYsNyBAQAogICAgIG1fZmFpbGluZ1Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKIAogICAg
IC8vIElmIHRoZSBwcm92aXNpb25hbCBwYWdlJ3MgbG9hZCBmYWlscyB0aGVuIHdlIGRlc3Ryb3kg
dGhlIHByb3Zpc2lvbmFsIHBhZ2UuCi0gICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlICYmIG1fcHJv
dmlzaW9uYWxQYWdlLT5tYWluRnJhbWUoKSA9PSAmZnJhbWUgJiYgd2lsbENvbnRpbnVlTG9hZGlu
ZyA9PSBXaWxsQ29udGludWVMb2FkaW5nOjpObykKKyAgICBpZiAobV9wcm92aXNpb25hbFBhZ2Ug
JiYgbV9wcm92aXNpb25hbFBhZ2UtPm1haW5GcmFtZSgpID09IGZyYW1lICYmIHdpbGxDb250aW51
ZUxvYWRpbmcgPT0gV2lsbENvbnRpbnVlTG9hZGluZzo6Tm8pCiAgICAgICAgIG1fcHJvdmlzaW9u
YWxQYWdlID0gbnVsbHB0cjsKIH0KIApAQCAtNTAyNywyNiArNTAyNywyMyBAQAogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6
ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRo
cm91Z2ggdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4KICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBuYXZpZ2F0aW9uOwotICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9u
SUQgJiYgbmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpKQorICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmln
YXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAg
ICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUtPmlzTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFpc01h
aW5GcmFtZSB8fCAhbmF2aWdhdGlvbklEIHx8IG5hdmlnYXRpb24pIHsKLSAgICAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwotCi0gICAgICAgIGlm
IChpc01haW5GcmFtZSkKLSAgICAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRGaW5pc2hMb2Fk
KHRyYW5zYWN0aW9uKTsKLQotICAgICAgICBpZiAobV9jb250cm9sbGVkQnlBdXRvbWF0aW9uKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCkucHJv
Y2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQotICAgICAgICAgICAgICAgIGF1dG9tYXRp
b25TZXNzaW9uLT5uYXZpZ2F0aW9uT2NjdXJyZWRGb3JGcmFtZSgqZnJhbWUpOwotICAgICAgICB9
CisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwog
Ci0gICAgICAgIGZyYW1lLT5kaWRGaW5pc2hMb2FkKCk7CisgICAgYm9vbCBpc01haW5GcmFtZSA9
IGZyYW1lLT5pc01haW5GcmFtZSgpOworICAgIGlmIChpc01haW5GcmFtZSkKKyAgICAgICAgbV9w
YWdlTG9hZFN0YXRlLmRpZEZpbmlzaExvYWQodHJhbnNhY3Rpb24pOwogCi0gICAgICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7CisgICAgaWYgKG1fY29udHJvbGxlZEJ5QXV0b21h
dGlvbikgeworICAgICAgICBpZiAoYXV0byogYXV0b21hdGlvblNlc3Npb24gPSBwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQorICAgICAgICAgICAgYXV0b21hdGlv
blNlc3Npb24tPm5hdmlnYXRpb25PY2N1cnJlZEZvckZyYW1lKCpmcmFtZSk7CiAgICAgfQogCisg
ICAgZnJhbWUtPmRpZEZpbmlzaExvYWQoKTsKKworICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRD
aGFuZ2VzKCk7CiAgICAgaWYgKG1fbG9hZGVyQ2xpZW50KQogICAgICAgICBtX2xvYWRlckNsaWVu
dC0+ZGlkRmluaXNoTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCks
IG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSku
Z2V0KCkpOwogICAgIGVsc2UgewpAQCAtNTg0OCw2ICs1ODQ1LDcgQEAKIAogICAgIFJlZlB0cjxB
UEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+IHVzZXJJbml0aWF0ZWRBY3Rpdml0eTsKICAgICAKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIC8vIFdlYktpdCBjYW5jZWxz
IHRoZSBvcmlnaW5hbCBnZXN0dXJlIHRvIG9wZW4gdGhlIEJCQyByYWRpbyBwbGF5ZXIgc28KICAg
ICAvLyB3ZSBjYW4gY2FsbCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGZpcnN0LiBXaGVuIHdlIHJl
LWluaXRpYXRlIHRoZSBvcGVuLAogICAgIC8vIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhlIGNsaWVu
dCBrbm93cyB0aGF0IHRoaXMgd2FzIHVzZXIgaW5pdGlhdGVkIHNvIGl0CkBAIC01ODU1LDYgKzU4
NTMsNyBAQAogICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygpID09IFF1aXJrczo6c3RhdGlj
UmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkKICAgICAgICAgdXNlckluaXRpYXRlZEFjdGl2aXR5ID0g
QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uOjpjcmVhdGUoKTsKICAgICBlbHNlCisjZW5kaWYKICAg
ICAgICAgdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0
aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwog
CiAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVx
dWVzdCgpLnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKQEAgLTc5NjYsOSAr
Nzk2NSw2IEBACiAgICAgbV9lZGl0b3JTdGF0ZSA9IEVkaXRvclN0YXRlKCk7CiAgICAgbV9jYWNo
ZWRGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQucmVzZXQoKTsKIAotICAgIGlmICh0ZXJt
aW5hdGlvblJlYXNvbiAhPSBQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2Fw
KQotICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7Ci0KICAgICBpZiAodGVybWlu
YXRpb25SZWFzb24gPT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkK
ICAgICAgICAgcGFnZUNsaWVudCgpLnByb2Nlc3NXaWxsU3dhcCgpOwogICAgIGVsc2UKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURvY3VtZW50R3RrLmNwcAkyMDIxLTEwLTIxIDA0OjUyOjEwLjAwMDAwMDAwMCAtMDQwMAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjIuMDAwMDAwMDAwIC0w
NTAwCkBAIC01NSw3ICs1NSwxMSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogI2luY2x1ZGUgPFdlYkNv
cmUvRnVsbHNjcmVlbk1hbmFnZXIuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8V2ViQ29yZS9KU0V4
ZWNTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CkBAIC0zMDQsNiArMzA4LDcgQEAKICAgICBjYXNlIERPTV9ET0NVTUVO
VF9QUk9QX0NPTVBBVF9NT0RFOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF9jb21wYXRfbW9kZShzZWxmKSk7CiAgICAgICAgIGJyZWFr
OworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBjYXNlIERPTV9ET0NVTUVOVF9QUk9Q
X1dFQktJVF9JU19GVUxMX1NDUkVFTjoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1
ZSwgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfd2Via2l0X2lzX2Z1bGxzY3JlZW4oc2VsZikpOwog
ICAgICAgICBicmVhazsKQEAgLTMxOSw2ICszMjQsNyBAQAogICAgIGNhc2UgRE9NX0RPQ1VNRU5U
X1BST1BfV0VCS0lUX0ZVTExTQ1JFRU5fRUxFTUVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfb2Jq
ZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfZnVsbHNjcmVlbl9lbGVt
ZW50KHNlbGYpKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQogICAgIGNhc2UgRE9NX0RPQ1VNRU5UX1BST1BfUE9JTlRFUl9MT0NLX0VMRU1FTlQ6CiAg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRf
cG9pbnRlcl9sb2NrX2VsZW1lbnQoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTc1MCw2ICs3
NTYsNyBAQAogICAgICAgICAgICAgV0VCS0lUX0RPTV9UWVBFX0VMRU1FTlQsCiAgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAogICAgICAgICBnb2JqZWN0Q2xh
c3MsCiAgICAgICAgIERPTV9ET0NVTUVOVF9QUk9QX1dFQktJVF9GVUxMU0NSRUVOX0VOQUJMRUQs
CkBAIC03NjksNiArNzc2LDcgQEAKICAgICAgICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NRWxl
bWVudCogRG9jdW1lbnQ6d2Via2l0LWZ1bGxzY3JlZW4tZWxlbWVudCIsCiAgICAgICAgICAgICBX
RUJLSVRfRE9NX1RZUEVfRUxFTUVOVCwKICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJM
RSkpOworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIAogICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAgICAgIGdvYmplY3RDbGFzcywKQEAgLTEzMDgsNiAr
MTMxNiw4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogdm9pZCB3ZWJraXRfZG9tX2RvY3VtZW50X3dlYmtpdF9jYW5jZWxfZnVsbHNjcmVl
bihXZWJLaXRET01Eb2N1bWVudCogc2VsZikKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CkBAIC0xMzIzLDYgKzEzMzMsNyBAQAogICAgIFdlYkNvcmU6OkRvY3Vt
ZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPmZ1bGxzY3JlZW5NYW5h
Z2VyKCkuZXhpdEZ1bGxzY3JlZW4oKTsKIH0KKyNlbmRpZgogCiB2b2lkIHdlYmtpdF9kb21fZG9j
dW1lbnRfZXhpdF9wb2ludGVyX2xvY2soV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYpCiB7CkBAIC0x
ODE4LDYgKzE4MjksOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKworI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKIGdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF9p
c19mdWxsc2NyZWVuKFdlYktpdERPTURvY3VtZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTE4NjIsNiArMTg3NSw3IEBACiAgICAgUmVm
UHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5m
dWxsc2NyZWVuTWFuYWdlcigpLmZ1bGxzY3JlZW5FbGVtZW50KCkpOwogICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCiAKIFdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3Bv
aW50ZXJfbG9ja19lbGVtZW50KFdlYktpdERPTURvY3VtZW50KiBzZWxmKQogewotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RE9NV2luZG93LmNwcAkyMDIxLTA1LTE3IDA5OjIyOjQzLjAwMDAwMDAwMCAtMDQwMAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0
RE9NRE9NV2luZG93LmNwcAkyMDIyLTAxLTIxIDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAt
MjksOCArMjksMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NUHJvbWlzZURlZmVycmVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmg+CisKKyNpZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJT
KQogI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2ViS2l0TmFtZXNwYWNlLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPFdl
YkNvcmUvV2luZG93UHJveHkuaD4KICNpbmNsdWRlICJXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0
aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURPTVNlbGVjdGlvblByaXZhdGUuaCIK
QEAgLTEwNTQsNiArMTA1OCw3IEBACiAjZW5kaWYgLyogRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5U
UykgKi8KIH0KIAorI2lmIEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCiBnYm9vbGVhbiB3
ZWJraXRfZG9tX2RvbV93aW5kb3dfd2Via2l0X21lc3NhZ2VfaGFuZGxlcnNfcG9zdF9tZXNzYWdl
KFdlYktpdERPTURPTVdpbmRvdyogd2luZG93LCBjb25zdCBnY2hhciogaGFuZGxlck5hbWUsIGNv
bnN0IGdjaGFyKiBtZXNzYWdlKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9E
T01fSVNfRE9NX1dJTkRPVyh3aW5kb3cpLCBGQUxTRSk7CkBAIC0xMDg3LDQgKzEwOTIsNiBAQAog
CiAgICAgcmV0dXJuIFRSVUU7CiB9CisjZW5kaWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5E
TEVSUykKKwogR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVu
dEd0ay5jcHAJMjAyMS0wNS0xNyAwOToyMjo0My4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVs
ZW1lbnRHdGsuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC04ODgs
NiArODg4LDcgQEAKICAgICByZXR1cm4gd2Via2l0X2RvbV9lbGVtZW50X21hdGNoZXMoc2VsZiwg
c2VsZWN0b3JzLCBlcnJvcik7CiB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiB2b2lk
IHdlYmtpdF9kb21fZWxlbWVudF93ZWJraXRfcmVxdWVzdF9mdWxsc2NyZWVuKFdlYktpdERPTUVs
ZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwpAQCAtODk1LDYgKzg5Niw3IEBACiAgICAgV2ViQ29yZTo6RWxlbWVudCogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogfQor
I2VuZGlmCiAKIFdlYktpdERPTUVsZW1lbnQqIHdlYmtpdF9kb21fZWxlbWVudF9pbnNlcnRfYWRq
YWNlbnRfZWxlbWVudChXZWJLaXRET01FbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogd2hlcmUs
IFdlYktpdERPTUVsZW1lbnQqIGVsZW1lbnQsIEdFcnJvcioqIGVycm9yKQogewotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCTIwMjEtMTAtMjEgMDQ6NTI6MTAuMDAwMDAwMDAwIC0w
NDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRlZEdyYXBoaWNzLmgJMjAyMi0wMS0yMyAxNDoxODo1
NC4wMDAwMDAwMDAgLTA1MDAKQEAgLTI4LDYgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWEuaCIKKyNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWdpb24uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlSG9zdC5oCTIwMjEtMTAtMjEgMDQ6NTI6MTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdC5oCTIwMjItMDEtMjEgMTE6NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC0zMywxMyArMzMs
MTYgQEAKICNpbmNsdWRlICJTaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJU
aHJlYWRlZENvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9u
aXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KICNlbmRpZgorI2VuZGlmCiAKICNpZiBVU0UoR1JB
UEhJQ1NfTEFZRVJfVEVYVFVSRV9NQVBQRVIpCiAKQEAgLTI0MSw2ICsyNDQsMTAgQEAKIGlubGlu
ZSB2b2lkIExheWVyVHJlZUhvc3Q6OnNldElzRGlzY2FyZGFibGUoYm9vbCkgeyB9CiBpbmxpbmUg
dm9pZCBMYXllclRyZWVIb3N0OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSB7IH0K
IGlubGluZSBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBMYXllclRyZWVI
b3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNpZiBQTEFURk9STShHVEspCitpbmxpbmUgdm9pZCBM
YXllclRyZWVIb3N0OjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCkgeyB9CitpbmxpbmUgdm9pZCBMYXllclRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29t
KGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCkgeyB9CisjZW5kaWYKICNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z2xpYi9XZWJQYWdlR0xpYi5jcHAJMjAyMS0xMC0yMSAwNDo1MjoxMC4wMDAwMDAwMDAgLTA0MDAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5j
cHAJMjAyMi0wMS0yMSAxMTo1MToyMi4wMDAwMDAwMDAgLTA1MDAKQEAgLTEzNCwxMSArMTM0LDE1
IEBACiAgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICBh
dXRvJiBpbnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCk7
CiAgICAgICAgIHN0YXRlLnNldFB1cnBvc2VGb3JJbnB1dEVsZW1lbnQoaW5wdXRFbGVtZW50KTsK
KyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAgICAgICAgIHN0YXRlLmFkZEhpbnRzRm9yQXV0
b2NhcGl0YWxpemVUeXBlKGlucHV0RWxlbWVudC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7CisjZW5k
aWYKICAgICB9IGVsc2UgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCplbGVtZW50KSB8fCAo
ZWxlbWVudC0+aGFzRWRpdGFibGVTdHlsZSgpICYmIGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkp
KSB7CiAgICAgICAgIGF1dG8mIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpl
bGVtZW50KTsKICAgICAgICAgc3RhdGUuc2V0UHVycG9zZU9ySGludEZvcklucHV0TW9kZShodG1s
RWxlbWVudC5jYW5vbmljYWxJbnB1dE1vZGUoKSk7CisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpF
KQogICAgICAgICBzdGF0ZS5hZGRIaW50c0ZvckF1dG9jYXBpdGFsaXplVHlwZShodG1sRWxlbWVu
dC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoZWxlbWVu
dC0+aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlclRhYi5jCTIwMjEtMTAtMjEgMDQ6NTI6MTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmMJMjAyMi0wMS0yMyAxNjoyODoxNC4wMDAw
MDAwMDAgLTA1MDAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2lmIGRlZmluZWQoSEFWRV9DT05GSUdf
SCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCiAjaW5j
bHVkZSAiY21ha2Vjb25maWcuaCIKKyNpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgogI2luY2x1
ZGUgIkJyb3dzZXJUYWIuaCIKIApAQCAtNDgsOCArNDksMTAgQEAKICAgICBnYm9vbGVhbiBpbnNw
ZWN0b3JJc1Zpc2libGU7CiAgICAgR3RrV2lkZ2V0ICpmdWxsU2NyZWVuTWVzc2FnZUxhYmVsOwog
ICAgIGd1aW50IGZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZDsKKyNpZiBFTkFCTEUoUE9JTlRFUl9M
T0NLKQogICAgIEd0a1dpZGdldCAqcG9pbnRlckxvY2tNZXNzYWdlTGFiZWw7CiAgICAgZ3VpbnQg
cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZDsKKyNlbmRpZgogCiAgICAgLyogVGFiIFRpdGxlICov
CiAgICAgR3RrV2lkZ2V0ICp0aXRsZUJveDsKQEAgLTI1OCwxMiArMjYxLDE0IEBACiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogc3RhdGljIGdib29sZWFu
IHBvaW50ZXJMb2NrTWVzc2FnZVRpbWVvdXRDYWxsYmFjayhCcm93c2VyVGFiICp0YWIpCiB7CiAg
ICAgZ3RrX3dpZGdldF9oaWRlKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWwpOwogICAgIHRh
Yi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCA9IDA7CiAgICAgcmV0dXJuIEZBTFNFOwogfQor
I2VuZGlmCiAKIHN0YXRpYyB2b2lkIHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nUmVzcG9uc2UoR3Rr
V2lkZ2V0ICpkaWFsb2csIGdpbnQgcmVzcG9uc2UsIFBlcm1pc3Npb25SZXF1ZXN0RGF0YSAqcmVx
dWVzdERhdGEpCiB7CkBAIC0zMzUsNyArMzQwLDkgQEAKICAgICAgICAgfQogICAgICAgICBnX2Zy
ZWUob3JpZ2luKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0gZWxzZSBpZiAoV0VCS0lU
X0lTX1BPSU5URVJfTE9DS19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICB9Cisj
aWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAgICBlbHNlIGlmIChXRUJLSVRfSVNfUE9JTlRFUl9M
T0NLX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgewogICAgICAgICBjb25zdCBnY2hhciAq
dGl0bGVPclVSSSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGFiLT53ZWJWaWV3KTsKICAg
ICAgICAgaWYgKCF0aXRsZU9yVVJJIHx8ICF0aXRsZU9yVVJJWzBdKQogICAgICAgICAgICAgdGl0
bGVPclVSSSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRhYi0+d2ViVmlldyk7CkBAIC0zNDgs
NyArMzU1LDkgQEAKICAgICAgICAgdGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbElkID0gZ190
aW1lb3V0X2FkZF9zZWNvbmRzKDIsIChHU291cmNlRnVuYylwb2ludGVyTG9ja01lc3NhZ2VUaW1l
b3V0Q2FsbGJhY2ssIHRhYik7CiAgICAgICAgIGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHRhYi0+
cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCwgIltXZWJLaXRdcG9pbnRlckxvY2tNZXNzYWdlVGlt
ZW91dENhbGxiYWNrIik7CiAgICAgICAgIHJldHVybiBUUlVFOwotICAgIH0gZWxzZSBpZiAoV0VC
S0lUX0lTX1dFQlNJVEVfREFUQV9BQ0NFU1NfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7
CisgICAgfQorI2VuZGlmCisgICAgZWxzZSBpZiAoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9BQ0NF
U1NfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CiAgICAgICAgIHRpdGxlID0gIldlYnNp
dGVEYXRhIGFjY2VzcyByZXF1ZXN0IjsKICAgICAgICAgV2ViS2l0V2Vic2l0ZURhdGFBY2Nlc3NQ
ZXJtaXNzaW9uUmVxdWVzdCAqd2Vic2l0ZURhdGFBY2Nlc3NSZXF1ZXN0ID0gV0VCS0lUX1dFQlNJ
VEVfREFUQV9BQ0NFU1NfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpOwogICAgICAgICBjb25z
dCBnY2hhciAqcmVxdWVzdGluZ0RvbWFpbiA9IHdlYmtpdF93ZWJzaXRlX2RhdGFfYWNjZXNzX3Bl
cm1pc3Npb25fcmVxdWVzdF9nZXRfcmVxdWVzdGluZ19kb21haW4od2Vic2l0ZURhdGFBY2Nlc3NS
ZXF1ZXN0KTsKQEAgLTU2NSw4ICs1NzQsMTEgQEAKIAogICAgIGlmICh0YWItPmZ1bGxTY3JlZW5N
ZXNzYWdlTGFiZWxJZCkKICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHRhYi0+ZnVsbFNjcmVlbk1l
c3NhZ2VMYWJlbElkKTsKKworI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgaWYgKHRhYi0+
cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCkKICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHRhYi0+
cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCk7CisjZW5kaWYKIAogICAgIEdfT0JKRUNUX0NMQVNT
KGJyb3dzZXJfdGFiX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKGdPYmplY3QpOwogfQpAQCAtNjI0
LDYgKzYzNiw3IEBACiAjZW5kaWYKICAgICBndGtfb3ZlcmxheV9hZGRfb3ZlcmxheShHVEtfT1ZF
UkxBWShvdmVybGF5KSwgdGFiLT5mdWxsU2NyZWVuTWVzc2FnZUxhYmVsKTsKIAorI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCiAgICAgdGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbCA9IGd0a19s
YWJlbF9uZXcoTlVMTCk7CiAgICAgZ3RrX3dpZGdldF9zZXRfaGFsaWduKHRhYi0+cG9pbnRlckxv
Y2tNZXNzYWdlTGFiZWwsIEdUS19BTElHTl9DRU5URVIpOwogICAgIGd0a193aWRnZXRfc2V0X3Zh
bGlnbih0YWItPnBvaW50ZXJMb2NrTWVzc2FnZUxhYmVsLCBHVEtfQUxJR05fU1RBUlQpOwpAQCAt
NjMxLDYgKzY0NCw3IEBACiAgICAgZ3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwodGFiLT5wb2lu
dGVyTG9ja01lc3NhZ2VMYWJlbCwgVFJVRSk7CiAjZW5kaWYKICAgICBndGtfb3ZlcmxheV9hZGRf
b3ZlcmxheShHVEtfT1ZFUkxBWShvdmVybGF5KSwgdGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJl
bCk7CisjZW5kaWYgLy8gRU5BQkxFKFBPSU5URVJfTE9DSykKIAogICAgIGd0a193aWRnZXRfc2V0
X3ZleHBhbmQoR1RLX1dJREdFVCh0YWItPndlYlZpZXcpLCBUUlVFKTsKICNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCA5OCwgNSkKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwkyMDIx
LTEwLTIxIDA0OjUyOjEwLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvbWFpbi5jCTIwMjItMDEtMjEgMTE6NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNiw2ICsy
Niw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpbmNsdWRlICJCcm93c2VyV2luZG93LmgiCiAjaW5jbHVkZSAiQnVpbGRSZXZpc2lv
bi5oIgpAQCAtNTIsNyArNTMsMTEgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5
Owogc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOwor
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHN0YXRpYyBnYm9vbGVhbiBl
bmFibGVJVFA7CisjZW5kaWYKKwogc3RhdGljIGdib29sZWFuIGVuYWJsZVNhbmRib3g7CiBzdGF0
aWMgZ2Jvb2xlYW4gZXhpdEFmdGVyTG9hZDsKIHN0YXRpYyBnYm9vbGVhbiB3ZWJQcm9jZXNzQ3Jh
c2hlZDsKQEAgLTE0Niw3ICsxNTEsOSBAQAogICAgIHsgImlnbm9yZS1ob3N0IiwgMCwgMCwgR19P
UFRJT05fQVJHX1NUUklOR19BUlJBWSwgJmlnbm9yZUhvc3RzLCAiU2V0IHByb3h5IGlnbm9yZSBo
b3N0cyIsICJIT1NUUyIgfSwKICAgICB7ICJpZ25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BU
SU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJyb3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBOVUxM
IH0sCiAgICAgeyAiY29udGVudC1maWx0ZXIiLCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUs
ICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJ
TEUiIH0sCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB7ICJlbmFi
bGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50
ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlvbiAoSVRQKSIsIE5VTEwgfSwKKyNlbmRpZgogICAg
IHsgImVuYWJsZS1zYW5kYm94IiwgMCwgMCwgR19PUFRJT05fQVJHX05PTkUsICZlbmFibGVTYW5k
Ym94LCAiRW5hYmxlIHdlYiBwcm9jZXNzIHNhbmRib3ggc3VwcG9ydCIsIE5VTEwgfSwKICAgICB7
ICJleGl0LWFmdGVyLWxvYWQiLCAwLCAwLCBHX09QVElPTl9BUkdfTk9ORSwgJmV4aXRBZnRlckxv
YWQsICJRdWl0IHRoZSBicm93c2VyIGFmdGVyIHRoZSBsb2FkIGZpbmlzaGVzIiwgTlVMTCB9LAog
ICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9u
LCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJzaW9uIiwgTlVMTCB9LApAQCAtNDUxLDcgKzQ1OCw5
IEBACiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0
LCAiUGx1Z2lucyBEYXRhIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9QTFVHSU5fREFUQSwgTlVMTCwg
cGFnZUlEKTsKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0
YUxpc3QsICJPZmZsaW5lIFdlYiBBcHBsaWNhdGlvbnMgQ2FjaGUiLCBXRUJLSVRfV0VCU0lURV9E
QVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJ
RCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxlKHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0
LCAiSFNUUyBDYWNoZSIsIFdFQktJVF9XRUJTSVRFX0RBVEFfSFNUU19DQUNIRSwgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFn
ZUlEKTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGFib3V0RGF0
YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIklUUCBkYXRhIiwgV0VC
S0lUX1dFQlNJVEVfREFUQV9JVFAsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRw
X2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKKyNlbmRpZgogICAgIGFib3V0RGF0YUZpbGxU
YWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBkYXRhTGlzdCwgIlNlcnZpY2UgV29ya2VyIFJlZ2lz
dHJhdGF0aW9ucyIsIFdFQktJVF9XRUJTSVRFX0RBVEFfU0VSVklDRV9XT1JLRVJfUkVHSVNUUkFU
SU9OUywKICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9zZXJ2aWNlX3dv
cmtlcl9yZWdpc3RyYXRpb25zX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKICAgICBhYm91
dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJET00gQ2FjaGUi
LCBXRUJLSVRfV0VCU0lURV9EQVRBX0RPTV9DQUNIRSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9kb21fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIpLCBwYWdlSUQpOwpAQCAtNDcwLDYg
KzQ3OSw3IEBACiAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoKG1hbmFnZXIs
IFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMLCBOVUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylnb3RX
ZWJzaXRlRGF0YUNhbGxiYWNrLCBkYXRhUmVxdWVzdCk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QgKnJlcXVlc3Q7CiAgICAgR0xpc3QgKnRoaXJkUGFydHlMaXN0OwpAQCAtNTI0LDYg
KzUzNCw3IEBACiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyICptYW5hZ2VyID0gd2Via2l0
X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJDb250ZXh0KTsKICAgICB3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2l0cF9zdW1tYXJ5KG1hbmFnZXIsIE5VTEws
IChHQXN5bmNSZWFkeUNhbGxiYWNrKWdvdElUUFN1bW1hcnlDYWxsYmFjaywgaXRwUmVxdWVzdCk7
CiB9CisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogc3RhdGlj
IHZvaWQgYWJvdXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2soV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dCAqcmVxdWVzdCwgV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCkKIHsKQEAgLTU0Niw4ICs1
NTcsMTAgQEAKICAgICAgICAgZ19vYmplY3RfdW5yZWYoc3RyZWFtKTsKICAgICB9IGVsc2UgaWYg
KCFnX3N0cmNtcDAocGF0aCwgImRhdGEiKSkKICAgICAgICAgYWJvdXREYXRhSGFuZGxlUmVxdWVz
dChyZXF1ZXN0LCB3ZWJDb250ZXh0KTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAocGF0aCwgIml0cCIpKQogICAgICAgICBhYm91
dElUUEhhbmRsZVJlcXVlc3QocmVxdWVzdCwgd2ViQ29udGV4dCk7CisjZW5kaWYKICAgICBlbHNl
IHsKICAgICAgICAgZXJyb3IgPSBnX2Vycm9yX25ldyhNSU5JX0JST1dTRVJfRVJST1IsIE1JTklf
QlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VUX1BBVEgsICJJbnZhbGlkIGFib3V0OiVzIHBhZ2Uu
IiwgcGF0aCk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9y
KHJlcXVlc3QsIGVycm9yKTsKQEAgLTY1OSw2ICs2NzIsNyBAQAogICAgICAgICBnX2ZyZWUoY2Fj
aGVEaXJlY3RvcnkpOwogICAgIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZChtYW5h
Z2VyLCBlbmFibGVJVFApOwogCiAgICAgaWYgKHByb3h5KSB7CkBAIC02NjYsNiArNjgwLDcgQEAK
ICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9uZXR3b3JrX3Byb3h5X3Nl
dHRpbmdzKG1hbmFnZXIsIFdFQktJVF9ORVRXT1JLX1BST1hZX01PREVfQ1VTVE9NLCB3ZWJraXRQ
cm94eVNldHRpbmdzKTsKICAgICAgICAgd2Via2l0X25ldHdvcmtfcHJveHlfc2V0dGluZ3NfZnJl
ZSh3ZWJraXRQcm94eVNldHRpbmdzKTsKICAgICB9CisjZW5kaWYKIAogICAgIGlmIChpZ25vcmVU
TFNFcnJvcnMpCiAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfdGxzX2Vy
cm9yc19wb2xpY3kobWFuYWdlciwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449764</attachid>
            <date>2022-01-23 14:02:21 -0800</date>
            <delta_ts>2022-01-23 14:02:21 -0800</delta_ts>
            <desc>woops, the previous one dragged in some changes that others made in those files, between versions .3 and .4</desc>
            <filename>missing-headers-and-ifs-2.34.4_v2.patch</filename>
            <type>text/plain</type>
            <size>31378</size>
            <attacher name="Dennis Nezic">dennisn</attacher>
            
              <data encoding="base64">LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCTIwMjEt
MTAtMjEgMDQ6NTI6MDcuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkyMDIyLTAxLTIxIDEyOjEwOjA2LjAwMDAwMDAwMCAt
MDUwMApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJPcHRp
b25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkSWRlbnRpZmllcnMuY3BwCTIwMjEtMTAtMjEgMDQ6
NTI6MDcuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZElkZW50aWZpZXJzLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAwMDAwMDAwMCAtMDUw
MApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
REZHQ29tbW9uRGF0YS5oIgorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSWRl
bnRpZmllcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRJZGVudGlmaWVycy5oCTIwMjEt
MDUtMTcgMDk6MjI6MzUuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZElkZW50aWZpZXJzLmgJMjAyMi0wMS0yMSAxMjoxMToyMi4wMDAwMDAw
MDAgLTA1MDAKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5j
bHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJMjAyMS0xMC0yMSAw
NDo1MjowNy4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiREZHUGxhbi5oIgogI2luY2x1ZGUgIkRGR1RodW5rcy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQWxsb3dsaXN0LmgiCisjaW5jbHVkZSAiSGVhcElubGluZXMuaCIK
ICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1i
bGVyLmNwcAkyMDIxLTA1LTE3IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERpc2Fzc2VtYmxlci5jcHAJMjAyMi0wMS0yMSAxMTo1MToy
MS4wMDAwMDAwMDAgLTA1MDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRpc2Fzc2Vt
Ymxlci5oIgorI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvU3RyaW5n
UHJpbnRTdHJlYW0uaD4KLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJh
c2VkRnV6emVyQWdlbnRCYXNlLmNwcAkyMDIxLTEwLTIxIDA0OjUyOjA3LjAwMDAwMDAwMCAtMDQw
MAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2Vu
dEJhc2UuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiRmlsZUJhc2VkRnV6emVyQWdlbnRCYXNlLmgiCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVzaXplT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAJMjAyMS0wNS0x
NyAwOToyMjo0MS4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSZXNpemVPYnNlcnZlckVudHJ5Q3VzdG9tLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIxLjAw
MDAwMDAwMCAtMDUwMApAQCAtMjUsNiArMjUsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisKICNpbmNsdWRlICJKU1Jlc2l6ZU9i
c2VydmVyRW50cnkuaCIKIAogI2luY2x1ZGUgIkpTTm9kZUN1c3RvbS5oIgpAQCAtNDEsMyArNDQs
NSBAQAogREVGSU5FX1ZJU0lUX0FERElUSU9OQUxfQ0hJTERSRU4oSlNSZXNpemVPYnNlcnZlckVu
dHJ5KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY09wZXJhdGlvbk5vZGUuY3BwCTIwMjEtMTAtMjEgMDQ6NTI6
MDkuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9jYWxjL0NTU0NhbGNP
cGVyYXRpb25Ob2RlLmNwcAkyMDIyLTAxLTIzIDE0OjE4OjUwLjAwMDAwMDAwMCAtMDUwMApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTVW5pdHMuaCIKICNpbmNsdWRlICJDYWxjRXhwcmVzc2lvbk9wZXJhdGlvbi5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ByaW1p
dGl2ZVZhbHVlTm9kZS5jcHAJMjAyMS0xMC0yMSAwNDo1MjowOS4wMDAwMDAwMDAgLTA0MDAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL2NhbGMvQ1NTQ2FsY1ByaW1pdGl2ZVZhbHVlTm9kZS5jcHAJ
MjAyMi0wMS0yMyAxNDoxODo1MC4wMDAwMDAwMDAgLTA1MDAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ2FsY0V4cHJl
c3Npb25MZW5ndGguaCIKICNpbmNsdWRlICJDYWxjRXhwcmVzc2lvbk51bWJlci5oIgorI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAkyMDIyLTAxLTIwIDEwOjUyOjIyLjAwMDAwMDAwMCAtMDUwMAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAw
MDAwIC0wNTAwCkBAIC03NDg0LDYgKzc0ODMsNyBAQAogewogICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogCisjaWYgRU5BQkxFKE1PREVSTl9NRURJQV9DT05UUk9MUykKICAgICBpZiAoIWVu
c3VyZU1lZGlhQ29udHJvbHNJbmplY3RlZFNjcmlwdCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTc1NjQsNiArNzU2NCw3IEBACiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CisjZW5k
aWYgLy8gRU5BQkxFKE1PREVSTl9NRURJQV9DT05UUk9MUykKIH0KIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRNZWRpYUNvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3IoYm9vbCBkZXBl
bmRzT25QYWdlU2NhbGUpCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuaAkyMDIxLTEwLTIxIDA0OjUyOjA5LjAwMDAwMDAwMCAtMDQwMAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmgJMjAyMi0wMS0yMyAxNDoyMDo1OS4wMDAwMDAwMDAgLTA1MDAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQmFzZS5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAJ
MjAyMS0wNS0xNyAwOToyMjo0MS4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCTIwMjItMDEtMjEgMTE6NTE6
MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29tbWFuZExp
bmVBUElIb3N0LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUg
IkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2Vi
SGVhcEFnZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVk
ZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAkyMDIyLTAxLTE5IDEwOjAyOjM1LjAwMDAwMDAw
MCAtMDUwMAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAJMjAyMi0wMS0yMSAxMTo1MzowMy4wMDAwMDAwMDAgLTA1MDAKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNs
dWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJMjAyMS0xMC0yMSAw
NDo1MjowOS4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCTIwMjItMDEtMjEgMTE6NTE6MjEuMDAwMDAwMDAwIC0wNTAwCkBAIC0xMTEsNiArMTEx
LDcgQEAKICNpbmNsdWRlICJTdHlsZVNjb3BlLmgiCiAjaW5jbHVkZSAiU3VkZGVuVGVybWluYXRp
b24uaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSAiVXNlckNvbnRlbnRQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzdWFs
Vmlld3BvcnQuaCIKICNpbmNsdWRlICJXZWJLaXRQb2ludC5oIgotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJMjAyMS0xMC0yOCAwNTo1MTozOC4wMDAwMDAwMDAgLTA0
MDAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCTIwMjItMDEtMjMg
MTQ6MTg6NTAuMDAwMDAwMDAwIC0wNTAwCkBAIC0xMTQsNiArMTE0LDcgQEAKICNpbmNsdWRlICJX
aW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKElPU19UT1VDSF9F
VkVOVFMpCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25Tb3VwLmNwcAkyMDIxLTEwLTIxIDA0OjUyOjA5LjAwMDAwMDAwMCAtMDQw
MAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAJMjAyMi0wMS0yMSAxMTo1MToyMS4wMDAwMDAwMDAgLTA1MDAKQEAg
LTI0NiwxMSArMjQ2LDEzIEBACiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29r
aWVBY2NlcHRQb2xpY3koSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAobV9pc1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkICYmIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9PSBUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwpIHsKICAgICAgICAgbV9jb29raWVBY2NlcHRQ
b2xpY3kgPSBwb2xpY3k7CiAgICAgICAgIGlmIChtX2Nvb2tpZUFjY2VwdFBvbGljeSA9PSBIVFRQ
Q29va2llQWNjZXB0UG9saWN5OjpFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnREb21haW4pCiAg
ICAgICAgICAgICBwb2xpY3kgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5OjpBbHdheXNBY2NlcHQ7
CiAgICAgfQorI2VuZGlmCiAKICAgICBTb3VwQ29va2llSmFyQWNjZXB0UG9saWN5IHNvdXBQb2xp
Y3kgPSBTT1VQX0NPT0tJRV9KQVJfQUNDRVBUX05PX1RISVJEX1BBUlRZOwogICAgIHN3aXRjaCAo
cG9saWN5KSB7Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcAkyMDIyLTAxLTE5IDE0OjIxOjEwLjAwMDAwMDAwMCAtMDUwMAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJMjAy
Mi0wMS0yMSAxMTo1MToyMS4wMDAwMDAwMDAgLTA1MDAKQEAgLTUzMiw3ICs1MjcsMTEgQEAKICAg
ICBtX2Nvbm5lY3Rpb24gPSBuZXdDb25uZWN0aW9uOwogICAgIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyID0gbmV3Q29yZUlkZW50aWZpZXI7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciB8fCBtX2NhY2hlRW50cnlXYWl0
aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfHwgbV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKTsKKyNlbHNlCisgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciB8fCBt
X2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOworI2VuZGlm
CiAgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gdHJ1ZTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgbV9yZXNwb25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB9KTsK
IH0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAJMjAyMS0wNS0xNyAwOToyMjo0Mi4wMDAwMDAwMDAgLTA0
MDAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UG9pbnRlckxv
Y2tQZXJtaXNzaW9uUmVxdWVzdC5jcHAJMjAyMi0wMS0yMSAxMTo1MToyMi4wMDAwMDAwMDAgLTA1
MDAKQEAgLTE4LDYgKzE4LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBF
TkFCTEUoUE9JTlRFUl9MT0NLKQorCiAjaW5jbHVkZSAiV2ViS2l0UG9pbnRlckxvY2tQZXJtaXNz
aW9uUmVxdWVzdC5oIgogCiAjaW5jbHVkZSAiV2ViS2l0UGVybWlzc2lvblJlcXVlc3QuaCIKQEAg
LTExMSwzICsxMTQsNSBAQAogICAgIHJlcXVlc3QtPnByaXYtPm1hZGVEZWNpc2lvbiA9IHRydWU7
CiAgICAgcmVxdWVzdC0+cHJpdi0+d2ViVmlldyA9IG51bGxwdHI7CiB9CisKKyNlbmRpZiAvLyBF
TkFCTEUoUE9JTlRFUl9MT0NLKQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCTIwMjEtMTAtMjEgMDQ6NTI6MDkuMDAwMDAw
MDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdl
YnNpdGVEYXRhTWFuYWdlci5jcHAJMjAyMi0wMS0yMSAxMTo1MzowNy4wMDAwMDAwMDAgLTA1MDAK
QEAgLTE0OCw5ICsxNDgsMTEgQEAKICAgICBjYXNlIFBST1BfSFNUU19DQUNIRV9ESVJFQ1RPUlk6
CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9oc3RzX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyKSk7CiAgICAgICAgIGJyZWFr
OworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgY2FzZSBQUk9QX0lU
UF9ESVJFQ1RPUlk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pdHBfZGlyZWN0b3J5KG1hbmFnZXIpKTsKICAgICAgICAg
YnJlYWs7CisjZW5kaWYKICAgICBjYXNlIFBST1BfU0VSVklDRV9XT1JLRVJfUkVHSVNUUkFUSU9O
U19ESVJFQ1RPUlk6CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9zZXJ2aWNlX3dvcmtlcl9yZWdpc3RyYXRpb25zX2RpcmVj
dG9yeShtYW5hZ2VyKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTk0LDkgKzE5NiwxMSBAQAogICAg
IGNhc2UgUFJPUF9IU1RTX0NBQ0hFX0RJUkVDVE9SWToKICAgICAgICAgbWFuYWdlci0+cHJpdi0+
aHN0c0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfdmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkpOwogICAg
ICAgICBicmVhazsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGNh
c2UgUFJPUF9JVFBfRElSRUNUT1JZOgogICAgICAgICBtYW5hZ2VyLT5wcml2LT5pdHBEaXJlY3Rv
cnkucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOworI2Vu
ZGlmCiAgICAgY2FzZSBQUk9QX1NFUlZJQ0VfV09SS0VSX1JFR0lTVFJBVElPTlNfRElSRUNUT1JZ
OgogICAgICAgICBtYW5hZ2VyLT5wcml2LT5zd1JlZ2lzdHJhdGlvbnNEaXJlY3RvcnkucmVzZXQo
Z192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjI0LDggKzIy
OCwxMCBAQAogICAgICAgICAgICAgcHJpdi0+aW5kZXhlZERCRGlyZWN0b3J5LnJlc2V0KGdfYnVp
bGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJkYXRhYmFzZXMiLCAi
aW5kZXhlZGRiIiwgbnVsbHB0cikpOwogICAgICAgICBpZiAoIXByaXYtPndlYlNRTERpcmVjdG9y
eSkKICAgICAgICAgICAgIHByaXYtPndlYlNRTERpcmVjdG9yeS5yZXNldChnX2J1aWxkX2ZpbGVu
YW1lKHByaXYtPmJhc2VEYXRhRGlyZWN0b3J5LmdldCgpLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikp
OworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmICghcHJp
di0+aXRwRGlyZWN0b3J5KQogICAgICAgICAgICAgcHJpdi0+aXRwRGlyZWN0b3J5LnJlc2V0KGdf
YnVpbGRfZmlsZW5hbWUocHJpdi0+YmFzZURhdGFEaXJlY3RvcnkuZ2V0KCksICJpdHAiLCBudWxs
cHRyKSk7CisjZW5kaWYKICAgICAgICAgaWYgKCFwcml2LT5zd1JlZ2lzdHJhdGlvbnNEaXJlY3Rv
cnkpCiAgICAgICAgICAgICBwcml2LT5zd1JlZ2lzdHJhdGlvbnNEaXJlY3RvcnkucmVzZXQoZ19i
dWlsZF9maWxlbmFtZShwcml2LT5iYXNlRGF0YURpcmVjdG9yeS5nZXQoKSwgInNlcnZpY2V3b3Jr
ZXJzIiwgbnVsbHB0cikpOwogICAgIH0KQEAgLTM5Niw2ICs0MDIsNyBAQAogICAgICAgICAgICAg
bnVsbHB0ciwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihXRUJLSVRfUEFS
QU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpKTsKIAorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgLyoqCiAgICAgICogV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyOml0cC1kaXJlY3Rvcnk6CiAgICAgICoKQEAgLTQxMiw2ICs0MTksNyBAQAogICAg
ICAgICAgICAgXygiVGhlIGRpcmVjdG9yeSB3aGVyZSBJbnRlbGxpZ2VudCBUcmFja2luZyBQcmV2
ZW50aW9uIGRhdGEgd2lsbCBiZSBzdG9yZWQiKSwKICAgICAgICAgICAgIG51bGxwdHIsCiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oV0VCS0lUX1BBUkFNX1JFQURXUklURSB8
IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKSk7CisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKIAogICAgIC8qKgogICAgICAqIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdl
cjpzZXJ2aWNlLXdvcmtlci1yZWdpc3RyYXRpb25zLWRpcmVjdG9yeToKQEAgLTQ4NSw4ICs0OTMs
MTAgQEAKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
d2ViU1FMRGlyZWN0b3J5LmdldCgpKSk7CiAgICAgICAgIGlmIChwcml2LT5oc3RzQ2FjaGVEaXJl
Y3RvcnkpCiAgICAgICAgICAgICBjb25maWd1cmF0aW9uLT5zZXRIU1RTU3RvcmFnZURpcmVjdG9y
eShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmhz
dHNDYWNoZURpcmVjdG9yeS5nZXQoKSkpOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgICAgIGlmIChwcml2LT5pdHBEaXJlY3RvcnkpCiAgICAgICAgICAgICBjb25m
aWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+aXRwRGlyZWN0b3J5Lmdl
dCgpKSk7CisjZW5kaWYKICAgICAgICAgaWYgKHByaXYtPnN3UmVnaXN0cmF0aW9uc0RpcmVjdG9y
eSkKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24tPnNldFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EaXJlY3RvcnkoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5zd1JlZ2lzdHJhdGlvbnNEaXJlY3RvcnkuZ2V0KCkpKTsKICAgICAgICAgaWYgKHBy
aXYtPmRvbUNhY2hlRGlyZWN0b3J5KQpAQCAtNzM1LDYgKzc0NSw3IEBACiAgICAgcmV0dXJuIHBy
aXYtPmhzdHNDYWNoZURpcmVjdG9yeS5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAvKioKICAqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
aXRwX2RpcmVjdG9yeToKICAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIK
QEAgLTc1Nyw2ICs3NjgsNyBAQAogICAgICAgICBwcml2LT5pdHBEaXJlY3RvcnkucmVzZXQoZ19z
dHJkdXAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICByZXR1cm4gcHJpdi0+aXRwRGly
ZWN0b3J5LmdldCgpOwogfQorI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9zZXJ2aWNlX3dv
cmtlcl9yZWdpc3RyYXRpb25zX2RpcmVjdG9yeToKQEAgLTgyNCw2ICs4MzYsNyBAQAogICAgIHJl
dHVybiBtYW5hZ2VyLT5wcml2LT5jb29raWVNYW5hZ2VyLmdldCgpOwogfQogCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX3NldF9pdHBfZW5hYmxlZDoKICAqIEBtYW5hZ2VyOiBhICNXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXIKQEAgLTg1OSw2ICs4NzIsNyBAQAogCiAgICAgcmV0dXJuIHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckdldERhdGFTdG9yZShtYW5hZ2VyKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCgpOwogfQorI2VuZGlmIC8vIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAK
IC8qKgogICogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X2NyZWRl
bnRpYWxfc3RvcmFnZV9lbmFibGVkOgpAQCAtOTk3LDggKzEwMTEsMTAgQEAKICAgICAgICAgcmV0
dXJuVmFsdWUuYWRkKFdlYnNpdGVEYXRhVHlwZTo6Q29va2llcyk7CiAgICAgaWYgKHR5cGVzICYg
V0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUKQogICAgICAgICByZXR1cm5W
YWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpEZXZpY2VJZEhhc2hTYWx0KTsKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICh0eXBlcyAmIFdFQktJVF9XRUJTSVRF
X0RBVEFfSVRQKQogICAgICAgICByZXR1cm5WYWx1ZS5hZGQoV2Vic2l0ZURhdGFUeXBlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKTsKKyNlbmRpZgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICBpZiAodHlwZXMgJiBXRUJLSVRfV0VCU0lURV9EQVRBX1NFUlZJQ0VfV09SS0VSX1JFR0lT
VFJBVElPTlMpCiAgICAgICAgIHJldHVyblZhbHVlLmFkZChXZWJzaXRlRGF0YVR5cGU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25zKTsKQEAgLTExNzksNiArMTE5NSw3IEBACiAgICAgcmV0dXJu
IGdfdGFza19wcm9wYWdhdGVfYm9vbGVhbihHX1RBU0socmVzdWx0KSwgZXJyb3IpOwogfQogCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIHN0cnVjdCBfV2ViS2l0SVRQRmly
c3RQYXJ0eSB7CiAgICAgZXhwbGljaXQgX1dlYktpdElUUEZpcnN0UGFydHkoV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSYm
IGRhdGEpCiAgICAgICAgIDogZG9tYWluKGRhdGEuZmlyc3RQYXJ0eURvbWFpbi5zdHJpbmcoKS51
dGY4KCkpCkBAIC0xMTkyLDYgKzEyMDksNyBAQAogICAgIEdSZWZQdHI8R0RhdGVUaW1lPiBsYXN0
VXBkYXRlZDsKICAgICBpbnQgcmVmZXJlbmNlQ291bnQgeyAxIH07CiB9OworI2VuZGlmIC8vIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIC8qKgogICogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX3NldF9tZW1vcnlfcHJlc3N1cmVfc2V0dGluZ3M6CkBAIC0xMjE3LDYgKzEy
MzUsOCBAQAogICAgIFdlYlByb2Nlc3NQb29sOjpzZXROZXR3b3JrUHJvY2Vzc01lbW9yeVByZXNz
dXJlSGFuZGxlckNvbmZpZ3VyYXRpb24oY29uZmlnKTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisKIEdfREVGSU5FX0JPWEVEX1RZUEUoV2ViS2l0SVRQRmlyc3RQ
YXJ0eSwgd2Via2l0X2l0cF9maXJzdF9wYXJ0eSwgd2Via2l0X2l0cF9maXJzdF9wYXJ0eV9yZWYs
IHdlYmtpdF9pdHBfZmlyc3RfcGFydHlfdW5yZWYpCiAKIHN0YXRpYyBXZWJLaXRJVFBGaXJzdFBh
cnR5KiB3ZWJraXRJVFBGaXJzdFBhcnR5Q3JlYXRlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkmJiBkYXRhKQpAQCAtMTQ3
NCwzICsxNDk0LDQgQEAKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGlzdCo+KGdfdGFza19w
cm9wYWdhdGVfcG9pbnRlcihHX1RBU0socmVzdWx0KSwgZXJyb3IpKTsKIH0KKyNlbmRpZiAvLyBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAkyMDIxLTEwLTI4IDA1OjI0OjI3LjAw
MDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAkyMDIyLTAxLTIxIDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAt
NjkyLDggKzY5MiwxMCBAQAogICAgIGdfY2xlYXJfcG9pbnRlcigmd2ViVmlldy0+cHJpdi0+ZGlh
bG9nLCBndGtfd2lkZ2V0X2Rlc3Ryb3kpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9wbGV2
ZWxPblNjcmVlbldpbmRvdyh3ZWJWaWV3LCBudWxscHRyKTsKICNlbmRpZgorI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZKQogICAgIGlmICh3ZWJWaWV3LT5wcml2LT5hY2Nlc3NpYmxlKQogICAgICAg
ICB3ZWJraXRXZWJWaWV3QWNjZXNzaWJsZVNldFdlYlZpZXcoV0VCS0lUX1dFQl9WSUVXX0FDQ0VT
U0lCTEUod2ViVmlldy0+cHJpdi0+YWNjZXNzaWJsZS5nZXQoKSksIG51bGxwdHIpOworI2VuZGlm
CiAjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMjQsIDApCiAgICAgd2Via2l0V2ViVmlld0Jhc2VD
b21wbGV0ZUVtb2ppQ2hvb3NlclJlcXVlc3Qod2ViVmlldywgZW1wdHlTdHJpbmcoKSk7CiAjZW5k
aWYKQEAgLTcwNCw3ICs3MDYsOSBAQAogICAgIHdlYlZpZXctPnByaXYtPmlucHV0TWV0aG9kRmls
dGVyLnNldENvbnRleHQobnVsbHB0cik7CiAgICAgd2ViVmlldy0+cHJpdi0+cGFnZVByb3h5LT5j
bG9zZSgpOwogICAgIHdlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQmFja2luZ1N0b3JlID0gbnVs
bHB0cjsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgd2ViVmlldy0+cHJpdi0+c2xl
ZXBEaXNhYmxlciA9IG51bGxwdHI7CisjZW5kaWYKICAgICB3ZWJWaWV3LT5wcml2LT5rZXlCaW5k
aW5nVHJhbnNsYXRvci5pbnZhbGlkYXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dl
Yl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShnb2JqZWN0KTsKIH0KQEAgLTE2NTAs
NiArMTY1NCw3IEBACiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKKyNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWSkKICNpZiAhVVNFKEdUSzQpCiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRXZWJWaWV3QmFz
ZUdldEFjY2Vzc2libGUoR3RrV2lkZ2V0KiB3aWRnZXQpCiB7CkBAIC0xNjY4LDYgKzE2NzMsNyBA
QAogICAgIHJldHVybiBwcml2LT5hY2Nlc3NpYmxlLmdldCgpOwogfQogI2VuZGlmCisjZW5kaWYK
IAogI2lmIFVTRShHVEs0KQogc3RhdGljIHZvaWQgdG9wbGV2ZWxXaW5kb3dJc0FjdGl2ZUNoYW5n
ZWQoR3RrV2luZG93KiB3aW5kb3csIEdQYXJhbVNwZWMqLCBXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCkBAIC0yMTYxLDkgKzIxNjcsMTEgQEAKICAgICB3aWRnZXRDbGFzcy0+dG91Y2hf
ZXZlbnQgPSB3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQ7CiAjZW5kaWYKICAgICB3aWRnZXRD
bGFzcy0+cXVlcnlfdG9vbHRpcCA9IHdlYmtpdFdlYlZpZXdCYXNlUXVlcnlUb29sdGlwOworI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZKQogI2lmICFVU0UoR1RLNCkKICAgICB3aWRnZXRDbGFzcy0+
Z2V0X2FjY2Vzc2libGUgPSB3ZWJraXRXZWJWaWV3QmFzZUdldEFjY2Vzc2libGU7CiAjZW5kaWYK
KyNlbmRpZgogI2lmIFVTRShHVEs0KQogICAgIHdpZGdldENsYXNzLT5yb290ID0gd2Via2l0V2Vi
Vmlld0Jhc2VSb290OwogICAgIHdpZGdldENsYXNzLT51bnJvb3QgPSB3ZWJraXRXZWJWaWV3QmFz
ZVVucm9vdDsKQEAgLTI2ODIsNiArMjY5MCw3IEBACiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQ
T0lOVEVSX0xPQ0spCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVxdWVzdFBvaW50ZXJMb2NrKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVBy
aXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKQEAgLTI3MDgsNiArMjcxNyw3IEBACiAg
ICAgcHJpdi0+cG9pbnRlckxvY2tNYW5hZ2VyLT51bmxvY2soKTsKICAgICBwcml2LT5wb2ludGVy
TG9ja01hbmFnZXIgPSBudWxscHRyOwogfQorI2VuZGlmIC8vIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQp
CiB7Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJMjAyMi0w
MS0yMCAwNzozOTowMy4wMDAwMDAwMDAgLTA1MDAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkyMDIyLTAxLTIxIDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApA
QCAtNTg0OCw2ICs1ODQ1LDcgQEAKIAogICAgIFJlZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rp
b24+IHVzZXJJbml0aWF0ZWRBY3Rpdml0eTsKICAgICAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIC8vIFdlYktpdCBjYW5jZWxzIHRoZSBvcmlnaW5hbCBnZXN0dXJl
IHRvIG9wZW4gdGhlIEJCQyByYWRpbyBwbGF5ZXIgc28KICAgICAvLyB3ZSBjYW4gY2FsbCB0aGUg
U3RvcmFnZSBBY2Nlc3MgQVBJIGZpcnN0LiBXaGVuIHdlIHJlLWluaXRpYXRlIHRoZSBvcGVuLAog
ICAgIC8vIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhlIGNsaWVudCBrbm93cyB0aGF0IHRoaXMgd2Fz
IHVzZXIgaW5pdGlhdGVkIHNvIGl0CkBAIC01ODU1LDYgKzU4NTMsNyBAQAogICAgIGlmIChyZXF1
ZXN0LnVybCgpLnN0cmluZygpID09IFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmco
KSkKICAgICAgICAgdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gQVBJOjpVc2VySW5pdGlhdGVkQWN0
aW9uOjpjcmVhdGUoKTsKICAgICBlbHNlCisjZW5kaWYKICAgICAgICAgdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogCiAgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVybCgpLmhvc3QoKSAh
PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcAkyMDIxLTEw
LTIxIDA0OjUyOjEwLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCTIw
MjItMDEtMjEgMTE6NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC01NSw3ICs1NSwxMSBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ1NTSW1wb3J0UnVsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NRXhj
ZXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogI2luY2x1ZGUgPFdlYkNvcmUvRnVsbHNjcmVlbk1hbmFnZXIuaD4KKyNl
bmRpZgorCiAjaW5jbHVkZSA8V2ViQ29yZS9KU0V4ZWNTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBAIC0zMDQsNiAr
MzA4LDcgQEAKICAgICBjYXNlIERPTV9ET0NVTUVOVF9QUk9QX0NPTVBBVF9NT0RFOgogICAgICAg
ICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9jb21w
YXRfbW9kZShzZWxmKSk7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKICAgICBjYXNlIERPTV9ET0NVTUVOVF9QUk9QX1dFQktJVF9JU19GVUxMX1NDUkVFTjoKICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRf
d2Via2l0X2lzX2Z1bGxzY3JlZW4oc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTMxOSw2ICsz
MjQsNyBAQAogICAgIGNhc2UgRE9NX0RPQ1VNRU5UX1BST1BfV0VCS0lUX0ZVTExTQ1JFRU5fRUxF
TUVOVDoKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfZG9tX2RvY3Vt
ZW50X2dldF93ZWJraXRfZnVsbHNjcmVlbl9lbGVtZW50KHNlbGYpKTsKICAgICAgICAgYnJlYWs7
CisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGNhc2UgRE9NX0RPQ1VNRU5U
X1BST1BfUE9JTlRFUl9MT0NLX0VMRU1FTlQ6CiAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2
YWx1ZSwgd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfcG9pbnRlcl9sb2NrX2VsZW1lbnQoc2VsZikp
OwogICAgICAgICBicmVhazsKQEAgLTc1MCw2ICs3NTYsNyBAQAogICAgICAgICAgICAgV0VCS0lU
X0RPTV9UWVBFX0VMRU1FTlQsCiAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAogICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIERPTV9ET0NVTUVOVF9Q
Uk9QX1dFQktJVF9GVUxMU0NSRUVOX0VOQUJMRUQsCkBAIC03NjksNiArNzc2LDcgQEAKICAgICAg
ICAgICAgICJyZWFkLW9ubHkgV2ViS2l0RE9NRWxlbWVudCogRG9jdW1lbnQ6d2Via2l0LWZ1bGxz
Y3JlZW4tZWxlbWVudCIsCiAgICAgICAgICAgICBXRUJLSVRfRE9NX1RZUEVfRUxFTUVOVCwKICAg
ICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworI2VuZGlmIC8vIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCiAgICAg
ICAgIGdvYmplY3RDbGFzcywKQEAgLTEzMDgsNiArMTMxNiw4IEBACiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogdm9pZCB3ZWJraXRfZG9tX2Rv
Y3VtZW50X3dlYmtpdF9jYW5jZWxfZnVsbHNjcmVlbihXZWJLaXRET01Eb2N1bWVudCogc2VsZikK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xMzIzLDYg
KzEzMzMsNyBAQAogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOwogICAgIGl0ZW0tPmZ1bGxzY3JlZW5NYW5hZ2VyKCkuZXhpdEZ1bGxzY3JlZW4oKTsKIH0K
KyNlbmRpZgogCiB2b2lkIHdlYmtpdF9kb21fZG9jdW1lbnRfZXhpdF9wb2ludGVyX2xvY2soV2Vi
S2l0RE9NRG9jdW1lbnQqIHNlbGYpCiB7CkBAIC0xODE4LDYgKzE4MjksOCBAQAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIGdib29sZWFuIHdl
YmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF9pc19mdWxsc2NyZWVuKFdlYktpdERPTURvY3Vt
ZW50KiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
QEAgLTE4NjIsNiArMTg3NSw3IEBACiAgICAgUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGdvYmpl
Y3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5mdWxsc2NyZWVuTWFuYWdlcigpLmZ1bGxzY3Jl
ZW5FbGVtZW50KCkpOwogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgp
KTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAKIFdlYktpdERPTUVsZW1l
bnQqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3BvaW50ZXJfbG9ja19lbGVtZW50KFdlYktpdERP
TURvY3VtZW50KiBzZWxmKQogewotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcAkyMDIxLTA1LTE3IDA5
OjIyOjQzLjAwMDAwMDAwMCAtMDQwMAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRE9NV2luZG93LmNwcAkyMDIyLTAxLTIx
IDExOjUxOjIyLjAwMDAwMDAwMCAtMDUwMApAQCAtMjksOCArMjksMTIgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0pTRE9NUHJvbWlzZURlZmVycmVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0V4ZWNT
dGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CisKKyNp
ZiBFTkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQogI2luY2x1ZGUgPFdlYkNvcmUvVXNlck1l
c3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViS2l0TmFtZXNw
YWNlLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93UHJveHkuaD4KICNpbmNs
dWRlICJXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdERPTURPTVNlbGVjdGlvblByaXZhdGUuaCIKQEAgLTEwNTQsNiArMTA1OCw3IEBACiAjZW5k
aWYgLyogRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykgKi8KIH0KIAorI2lmIEVOQUJMRShVU0VS
X01FU1NBR0VfSEFORExFUlMpCiBnYm9vbGVhbiB3ZWJraXRfZG9tX2RvbV93aW5kb3dfd2Via2l0
X21lc3NhZ2VfaGFuZGxlcnNfcG9zdF9tZXNzYWdlKFdlYktpdERPTURPTVdpbmRvdyogd2luZG93
LCBjb25zdCBnY2hhciogaGFuZGxlck5hbWUsIGNvbnN0IGdjaGFyKiBtZXNzYWdlKQogewogICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfRE9NX1dJTkRPVyh3aW5kb3cpLCBG
QUxTRSk7CkBAIC0xMDg3LDQgKzEwOTIsNiBAQAogCiAgICAgcmV0dXJuIFRSVUU7CiB9CisjZW5k
aWYgLy8gRU5BQkxFKFVTRVJfTUVTU0FHRV9IQU5ETEVSUykKKwogR19HTlVDX0VORF9JR05PUkVf
REVQUkVDQVRJT05TOwotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRWxlbWVudEd0ay5jcHAJMjAyMS0wNS0xNyAwOToyMjo0
My4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUVsZW1lbnRHdGsuY3BwCTIwMjItMDEtMjEgMTE6
NTE6MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC04ODgsNiArODg4LDcgQEAKICAgICByZXR1cm4gd2Vi
a2l0X2RvbV9lbGVtZW50X21hdGNoZXMoc2VsZiwgc2VsZWN0b3JzLCBlcnJvcik7CiB9CiAKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiB2b2lkIHdlYmtpdF9kb21fZWxlbWVudF93ZWJraXRf
cmVxdWVzdF9mdWxsc2NyZWVuKFdlYktpdERPTUVsZW1lbnQqIHNlbGYpCiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpAQCAtODk1LDYgKzg5Niw3IEBACiAgICAg
V2ViQ29yZTo6RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT53
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpOwogfQorI2VuZGlmCiAKIFdlYktpdERPTUVsZW1lbnQq
IHdlYmtpdF9kb21fZWxlbWVudF9pbnNlcnRfYWRqYWNlbnRfZWxlbWVudChXZWJLaXRET01FbGVt
ZW50KiBzZWxmLCBjb25zdCBnY2hhciogd2hlcmUsIFdlYktpdERPTUVsZW1lbnQqIGVsZW1lbnQs
IEdFcnJvcioqIGVycm9yKQogewotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhQ29vcmRpbmF0ZWRHcmFwaGljcy5oCTIw
MjEtMTAtMjEgMDQ6NTI6MTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFDb29yZGluYXRl
ZEdyYXBoaWNzLmgJMjAyMi0wMS0yMyAxNDoxODo1NC4wMDAwMDAwMDAgLTA1MDAKQEAgLTI4LDYg
KzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWEuaCIKKyNpbmNs
dWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgogCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCTIwMjEtMTAtMjEgMDQ6NTI6
MTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdC5oCTIwMjItMDEtMjEgMTE6NTE6MjIu
MDAwMDAwMDAwIC0wNTAwCkBAIC0zMywxMyArMzMsMTYgQEAKICNpbmNsdWRlICJTaW1wbGVWaWV3
cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUaHJlYWRlZENvbXBvc2l0b3IuaCIKICNpbmNs
dWRlICJUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpZiBQTEFU
Rk9STShHVEspCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4K
ICNlbmRpZgorI2VuZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfTEFZRVJfVEVYVFVSRV9NQVBQRVIp
CiAKQEAgLTI0MSw2ICsyNDQsMTAgQEAKIGlubGluZSB2b2lkIExheWVyVHJlZUhvc3Q6OnNldElz
RGlzY2FyZGFibGUoYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBMYXllclRyZWVIb3N0OjpkZXZpY2VP
clBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSB7IH0KIGlubGluZSBSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBMYXllclRyZWVIb3N0OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1v
bml0b3IoV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNp
ZiBQTEFURk9STShHVEspCitpbmxpbmUgdm9pZCBMYXllclRyZWVIb3N0OjphZGp1c3RUcmFuc2ll
bnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCkgeyB9CitpbmxpbmUgdm9pZCBMYXll
clRyZWVIb3N0Ojpjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCkgeyB9CisjZW5kaWYKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAJMjAyMS0x
MC0yMSAwNDo1MjoxMC4wMDAwMDAwMDAgLTA0MDAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAJMjAyMi0wMS0yMSAxMTo1MToyMi4wMDAw
MDAwMDAgLTA1MDAKQEAgLTEzNCwxMSArMTM0LDE1IEBACiAgICAgaWYgKGlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICBhdXRvJiBpbnB1dEVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCk7CiAgICAgICAgIHN0YXRlLnNldFB1cnBvc2VG
b3JJbnB1dEVsZW1lbnQoaW5wdXRFbGVtZW50KTsKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUp
CiAgICAgICAgIHN0YXRlLmFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKGlucHV0RWxlbWVu
dC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7CisjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+KCplbGVtZW50KSB8fCAoZWxlbWVudC0+aGFzRWRpdGFibGVTdHlsZSgp
ICYmIGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkpKSB7CiAgICAgICAgIGF1dG8mIGh0bWxFbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCplbGVtZW50KTsKICAgICAgICAgc3RhdGUuc2V0
UHVycG9zZU9ySGludEZvcklucHV0TW9kZShodG1sRWxlbWVudC5jYW5vbmljYWxJbnB1dE1vZGUo
KSk7CisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogICAgICAgICBzdGF0ZS5hZGRIaW50c0Zv
ckF1dG9jYXBpdGFsaXplVHlwZShodG1sRWxlbWVudC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7Cisj
ZW5kaWYKICAgICB9CiAKICAgICBpZiAoZWxlbWVudC0+aXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
KQotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclRhYi5jCTIwMjEtMTAtMjEgMDQ6
NTI6MTAuMDAwMDAwMDAwIC0wNDAwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
VGFiLmMJMjAyMi0wMS0yMyAxNjoyODoxNC4wMDAwMDAwMDAgLTA1MDAKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZp
bmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCiAjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNpbmNs
dWRlICJjb25maWcuaCIKICNlbmRpZgogI2luY2x1ZGUgIkJyb3dzZXJUYWIuaCIKIApAQCAtNDgs
OCArNDksMTAgQEAKICAgICBnYm9vbGVhbiBpbnNwZWN0b3JJc1Zpc2libGU7CiAgICAgR3RrV2lk
Z2V0ICpmdWxsU2NyZWVuTWVzc2FnZUxhYmVsOwogICAgIGd1aW50IGZ1bGxTY3JlZW5NZXNzYWdl
TGFiZWxJZDsKKyNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIEd0a1dpZGdldCAqcG9pbnRl
ckxvY2tNZXNzYWdlTGFiZWw7CiAgICAgZ3VpbnQgcG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZDsK
KyNlbmRpZgogCiAgICAgLyogVGFiIFRpdGxlICovCiAgICAgR3RrV2lkZ2V0ICp0aXRsZUJveDsK
QEAgLTI1OCwxMiArMjYxLDE0IEBACiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKKyNpZiBFTkFCTEUo
UE9JTlRFUl9MT0NLKQogc3RhdGljIGdib29sZWFuIHBvaW50ZXJMb2NrTWVzc2FnZVRpbWVvdXRD
YWxsYmFjayhCcm93c2VyVGFiICp0YWIpCiB7CiAgICAgZ3RrX3dpZGdldF9oaWRlKHRhYi0+cG9p
bnRlckxvY2tNZXNzYWdlTGFiZWwpOwogICAgIHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJ
ZCA9IDA7CiAgICAgcmV0dXJuIEZBTFNFOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHBlcm1p
c3Npb25SZXF1ZXN0RGlhbG9nUmVzcG9uc2UoR3RrV2lkZ2V0ICpkaWFsb2csIGdpbnQgcmVzcG9u
c2UsIFBlcm1pc3Npb25SZXF1ZXN0RGF0YSAqcmVxdWVzdERhdGEpCiB7CkBAIC0zMzUsNyArMzQw
LDkgQEAKICAgICAgICAgfQogICAgICAgICBnX2ZyZWUob3JpZ2luKTsKICAgICAgICAgcmV0dXJu
IEZBTFNFOwotICAgIH0gZWxzZSBpZiAoV0VCS0lUX0lTX1BPSU5URVJfTE9DS19QRVJNSVNTSU9O
X1JFUVVFU1QocmVxdWVzdCkpIHsKKyAgICB9CisjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKKyAg
ICBlbHNlIGlmIChXRUJLSVRfSVNfUE9JTlRFUl9MT0NLX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1
ZXN0KSkgewogICAgICAgICBjb25zdCBnY2hhciAqdGl0bGVPclVSSSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfdGl0bGUodGFiLT53ZWJWaWV3KTsKICAgICAgICAgaWYgKCF0aXRsZU9yVVJJIHx8ICF0
aXRsZU9yVVJJWzBdKQogICAgICAgICAgICAgdGl0bGVPclVSSSA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfdXJpKHRhYi0+d2ViVmlldyk7CkBAIC0zNDgsNyArMzU1LDkgQEAKICAgICAgICAgdGFiLT5w
b2ludGVyTG9ja01lc3NhZ2VMYWJlbElkID0gZ190aW1lb3V0X2FkZF9zZWNvbmRzKDIsIChHU291
cmNlRnVuYylwb2ludGVyTG9ja01lc3NhZ2VUaW1lb3V0Q2FsbGJhY2ssIHRhYik7CiAgICAgICAg
IGdfc291cmNlX3NldF9uYW1lX2J5X2lkKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCwg
IltXZWJLaXRdcG9pbnRlckxvY2tNZXNzYWdlVGltZW91dENhbGxiYWNrIik7CiAgICAgICAgIHJl
dHVybiBUUlVFOwotICAgIH0gZWxzZSBpZiAoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9BQ0NFU1Nf
UEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKSB7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSBp
ZiAoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9BQ0NFU1NfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVl
c3QpKSB7CiAgICAgICAgIHRpdGxlID0gIldlYnNpdGVEYXRhIGFjY2VzcyByZXF1ZXN0IjsKICAg
ICAgICAgV2ViS2l0V2Vic2l0ZURhdGFBY2Nlc3NQZXJtaXNzaW9uUmVxdWVzdCAqd2Vic2l0ZURh
dGFBY2Nlc3NSZXF1ZXN0ID0gV0VCS0lUX1dFQlNJVEVfREFUQV9BQ0NFU1NfUEVSTUlTU0lPTl9S
RVFVRVNUKHJlcXVlc3QpOwogICAgICAgICBjb25zdCBnY2hhciAqcmVxdWVzdGluZ0RvbWFpbiA9
IHdlYmtpdF93ZWJzaXRlX2RhdGFfYWNjZXNzX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfcmVxdWVz
dGluZ19kb21haW4od2Vic2l0ZURhdGFBY2Nlc3NSZXF1ZXN0KTsKQEAgLTU2NSw4ICs1NzQsMTEg
QEAKIAogICAgIGlmICh0YWItPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCkKICAgICAgICAgZ19z
b3VyY2VfcmVtb3ZlKHRhYi0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkKTsKKworI2lmIEVOQUJM
RShQT0lOVEVSX0xPQ0spCiAgICAgaWYgKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCkK
ICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWxJZCk7
CisjZW5kaWYKIAogICAgIEdfT0JKRUNUX0NMQVNTKGJyb3dzZXJfdGFiX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKGdPYmplY3QpOwogfQpAQCAtNjI0LDYgKzYzNiw3IEBACiAjZW5kaWYKICAgICBn
dGtfb3ZlcmxheV9hZGRfb3ZlcmxheShHVEtfT1ZFUkxBWShvdmVybGF5KSwgdGFiLT5mdWxsU2Ny
ZWVuTWVzc2FnZUxhYmVsKTsKIAorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdGFiLT5w
b2ludGVyTG9ja01lc3NhZ2VMYWJlbCA9IGd0a19sYWJlbF9uZXcoTlVMTCk7CiAgICAgZ3RrX3dp
ZGdldF9zZXRfaGFsaWduKHRhYi0+cG9pbnRlckxvY2tNZXNzYWdlTGFiZWwsIEdUS19BTElHTl9D
RU5URVIpOwogICAgIGd0a193aWRnZXRfc2V0X3ZhbGlnbih0YWItPnBvaW50ZXJMb2NrTWVzc2Fn
ZUxhYmVsLCBHVEtfQUxJR05fU1RBUlQpOwpAQCAtNjMxLDYgKzY0NCw3IEBACiAgICAgZ3RrX3dp
ZGdldF9zZXRfbm9fc2hvd19hbGwodGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbCwgVFJVRSk7
CiAjZW5kaWYKICAgICBndGtfb3ZlcmxheV9hZGRfb3ZlcmxheShHVEtfT1ZFUkxBWShvdmVybGF5
KSwgdGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbCk7CisjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKIAogICAgIGd0a193aWRnZXRfc2V0X3ZleHBhbmQoR1RLX1dJREdFVCh0YWItPndl
YlZpZXcpLCBUUlVFKTsKICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwkyMDIxLTEwLTIxIDA0OjUyOjEwLjAwMDAwMDAwMCAt
MDQwMAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCTIwMjItMDEtMjEgMTE6NTE6
MjIuMDAwMDAwMDAwIC0wNTAwCkBAIC0yNiw2ICsyNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNt
YWtlY29uZmlnLmgiCisjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJCcm93c2VyV2lu
ZG93LmgiCiAjaW5jbHVkZSAiQnVpbGRSZXZpc2lvbi5oIgpAQCAtNTIsNyArNTMsMTEgQEAKIHN0
YXRpYyBjb25zdCBjaGFyICpjb29raWVzUG9saWN5Owogc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5
Owogc3RhdGljIGdib29sZWFuIGRhcmtNb2RlOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIHN0YXRpYyBnYm9vbGVhbiBlbmFibGVJVFA7CisjZW5kaWYKKwogc3RhdGlj
IGdib29sZWFuIGVuYWJsZVNhbmRib3g7CiBzdGF0aWMgZ2Jvb2xlYW4gZXhpdEFmdGVyTG9hZDsK
IHN0YXRpYyBnYm9vbGVhbiB3ZWJQcm9jZXNzQ3Jhc2hlZDsKQEAgLTE0Niw3ICsxNTEsOSBAQAog
ICAgIHsgImlnbm9yZS1ob3N0IiwgMCwgMCwgR19PUFRJT05fQVJHX1NUUklOR19BUlJBWSwgJmln
bm9yZUhvc3RzLCAiU2V0IHByb3h5IGlnbm9yZSBob3N0cyIsICJIT1NUUyIgfSwKICAgICB7ICJp
Z25vcmUtdGxzLWVycm9ycyIsIDAsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmaWdub3JlVExTRXJy
b3JzLCAiSWdub3JlIFRMUyBlcnJvcnMiLCBOVUxMIH0sCiAgICAgeyAiY29udGVudC1maWx0ZXIi
LCAwLCAwLCBHX09QVElPTl9BUkdfRklMRU5BTUUsICZjb250ZW50RmlsdGVyLCAiSlNPTiB3aXRo
IGNvbnRlbnQgZmlsdGVyaW5nIHJ1bGVzIiwgIkZJTEUiIH0sCisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICB7ICJlbmFibGUtaXRwIiwgMCwgMCwgR19PUFRJT05fQVJH
X05PTkUsICZlbmFibGVJVFAsICJFbmFibGUgSW50ZWxsaWdlbnQgVHJhY2tpbmcgUHJldmVudGlv
biAoSVRQKSIsIE5VTEwgfSwKKyNlbmRpZgogICAgIHsgImVuYWJsZS1zYW5kYm94IiwgMCwgMCwg
R19PUFRJT05fQVJHX05PTkUsICZlbmFibGVTYW5kYm94LCAiRW5hYmxlIHdlYiBwcm9jZXNzIHNh
bmRib3ggc3VwcG9ydCIsIE5VTEwgfSwKICAgICB7ICJleGl0LWFmdGVyLWxvYWQiLCAwLCAwLCBH
X09QVElPTl9BUkdfTk9ORSwgJmV4aXRBZnRlckxvYWQsICJRdWl0IHRoZSBicm93c2VyIGFmdGVy
IHRoZSBsb2FkIGZpbmlzaGVzIiwgTlVMTCB9LAogICAgIHsgInZlcnNpb24iLCAndicsIDAsIEdf
T1BUSU9OX0FSR19OT05FLCAmcHJpbnRWZXJzaW9uLCAiUHJpbnQgdGhlIFdlYktpdEdUSyB2ZXJz
aW9uIiwgTlVMTCB9LApAQCAtNDUxLDcgKzQ1OCw5IEBACiAgICAgYWJvdXREYXRhRmlsbFRhYmxl
KHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiUGx1Z2lucyBEYXRhIiwgV0VCS0lUX1dF
QlNJVEVfREFUQV9QTFVHSU5fREFUQSwgTlVMTCwgcGFnZUlEKTsKICAgICBhYm91dERhdGFGaWxs
VGFibGUocmVzdWx0LCBkYXRhUmVxdWVzdCwgZGF0YUxpc3QsICJPZmZsaW5lIFdlYiBBcHBsaWNh
dGlvbnMgQ2FjaGUiLCBXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FD
SEUsIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9j
YWNoZV9kaXJlY3RvcnkobWFuYWdlciksIHBhZ2VJRCk7CiAgICAgYWJvdXREYXRhRmlsbFRhYmxl
KHJlc3VsdCwgZGF0YVJlcXVlc3QsIGRhdGFMaXN0LCAiSFNUUyBDYWNoZSIsIFdFQktJVF9XRUJT
SVRFX0RBVEFfSFNUU19DQUNIRSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9oc3Rz
X2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlEKTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1
ZXN0LCBkYXRhTGlzdCwgIklUUCBkYXRhIiwgV0VCS0lUX1dFQlNJVEVfREFUQV9JVFAsIHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaXRwX2RpcmVjdG9yeShtYW5hZ2VyKSwgcGFnZUlE
KTsKKyNlbmRpZgogICAgIGFib3V0RGF0YUZpbGxUYWJsZShyZXN1bHQsIGRhdGFSZXF1ZXN0LCBk
YXRhTGlzdCwgIlNlcnZpY2UgV29ya2VyIFJlZ2lzdHJhdGF0aW9ucyIsIFdFQktJVF9XRUJTSVRF
X0RBVEFfU0VSVklDRV9XT1JLRVJfUkVHSVNUUkFUSU9OUywKICAgICAgICAgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9zZXJ2aWNlX3dvcmtlcl9yZWdpc3RyYXRpb25zX2RpcmVjdG9y
eShtYW5hZ2VyKSwgcGFnZUlEKTsKICAgICBhYm91dERhdGFGaWxsVGFibGUocmVzdWx0LCBkYXRh
UmVxdWVzdCwgZGF0YUxpc3QsICJET00gQ2FjaGUiLCBXRUJLSVRfV0VCU0lURV9EQVRBX0RPTV9D
QUNIRSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kb21fY2FjaGVfZGlyZWN0b3J5
KG1hbmFnZXIpLCBwYWdlSUQpOwpAQCAtNDcwLDYgKzQ3OSw3IEBACiAgICAgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2ZldGNoKG1hbmFnZXIsIFdFQktJVF9XRUJTSVRFX0RBVEFfQUxMLCBO
VUxMLCAoR0FzeW5jUmVhZHlDYWxsYmFjaylnb3RXZWJzaXRlRGF0YUNhbGxiYWNrLCBkYXRhUmVx
dWVzdCk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogdHlwZWRl
ZiBzdHJ1Y3QgewogICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QgKnJlcXVlc3Q7CiAgICAgR0xp
c3QgKnRoaXJkUGFydHlMaXN0OwpAQCAtNTI0LDYgKzUzNCw3IEBACiAgICAgV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyICptYW5hZ2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcih3ZWJDb250ZXh0KTsKICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2l0cF9zdW1tYXJ5KG1hbmFnZXIsIE5VTEwsIChHQXN5bmNSZWFkeUNhbGxiYWNrKWdvdElU
UFN1bW1hcnlDYWxsYmFjaywgaXRwUmVxdWVzdCk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKIAogc3RhdGljIHZvaWQgYWJvdXRVUklTY2hlbWVSZXF1ZXN0
Q2FsbGJhY2soV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCAqcmVxdWVzdCwgV2ViS2l0V2ViQ29udGV4
dCAqd2ViQ29udGV4dCkKIHsKQEAgLTU0Niw4ICs1NTcsMTAgQEAKICAgICAgICAgZ19vYmplY3Rf
dW5yZWYoc3RyZWFtKTsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAocGF0aCwgImRhdGEiKSkK
ICAgICAgICAgYWJvdXREYXRhSGFuZGxlUmVxdWVzdChyZXF1ZXN0LCB3ZWJDb250ZXh0KTsKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVsc2UgaWYgKCFnX3N0cmNt
cDAocGF0aCwgIml0cCIpKQogICAgICAgICBhYm91dElUUEhhbmRsZVJlcXVlc3QocmVxdWVzdCwg
d2ViQ29udGV4dCk7CisjZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgZXJyb3IgPSBnX2Vycm9y
X25ldyhNSU5JX0JST1dTRVJfRVJST1IsIE1JTklfQlJPV1NFUl9FUlJPUl9JTlZBTElEX0FCT1VU
X1BBVEgsICJJbnZhbGlkIGFib3V0OiVzIHBhZ2UuIiwgcGF0aCk7CiAgICAgICAgIHdlYmtpdF91
cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yKTsKQEAgLTY1OSw2
ICs2NzIsNyBAQAogICAgICAgICBnX2ZyZWUoY2FjaGVEaXJlY3RvcnkpOwogICAgIH0KIAorI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX3NldF9pdHBfZW5hYmxlZChtYW5hZ2VyLCBlbmFibGVJVFApOwogCiAgICAgaWYg
KHByb3h5KSB7CkBAIC02NjYsNiArNjgwLDcgQEAKICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX3NldF9uZXR3b3JrX3Byb3h5X3NldHRpbmdzKG1hbmFnZXIsIFdFQktJVF9ORVRX
T1JLX1BST1hZX01PREVfQ1VTVE9NLCB3ZWJraXRQcm94eVNldHRpbmdzKTsKICAgICAgICAgd2Vi
a2l0X25ldHdvcmtfcHJveHlfc2V0dGluZ3NfZnJlZSh3ZWJraXRQcm94eVNldHRpbmdzKTsKICAg
ICB9CisjZW5kaWYKIAogICAgIGlmIChpZ25vcmVUTFNFcnJvcnMpCiAgICAgICAgIHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9zZXRfdGxzX2Vycm9yc19wb2xpY3kobWFuYWdlciwgV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0lHTk9SRSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>