<?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>205776</bug_id>
          
          <creation_ts>2020-01-05 08:48:29 -0800</creation_ts>
          <short_desc>Convert ASSERT_DISABLED to ASSERT_ENABLED, and fix some tests of NDEBUG that should actually test for ASSERT_ENABLED.</short_desc>
          <delta_ts>2020-01-06 14:25:41 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1602858</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 08:48:29 -0800</bug_when>
    <thetext>patch and details coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602880</commentid>
    <comment_count>1</comment_count>
      <attachid>386795</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 13:22:54 -0800</bug_when>
    <thetext>Created attachment 386795
proposed patch.

Let&apos;s test this on the EWS first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602881</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-05 13:23:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/58327452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602883</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-01-05 13:23:56 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602889</commentid>
    <comment_count>4</comment_count>
      <attachid>386798</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 13:42:34 -0800</bug_when>
    <thetext>Created attachment 386798
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602902</commentid>
    <comment_count>5</comment_count>
      <attachid>386798</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 16:12:33 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

Ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602911</commentid>
    <comment_count>6</comment_count>
      <attachid>386798</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-05 16:32:37 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +            1. Release build: ~40 minutes

can you state what the baseline is here (release without debug asserts)?

&gt; Source/JavaScriptCore/ChangeLog:31
&gt; +        This patch replaces ASSERT_DISABLED with ASSERT_ENABLED.

this patch becomes much easier to review if the renaming and introduction of JSC_ and WTF_ asserts are done on their own

&gt; Source/JavaScriptCore/ChangeLog:41
&gt; +            This change also does away with the need for the double negative
&gt; +            !ASSERT_DISABLED test that is commonly used all over the code, thereby
&gt; +            improving code readability.

I agree, this is nicer

&gt; Source/JavaScriptCore/ChangeLog:60
&gt; +            WebCore and higher level stacks aren&apos;t ready to run with debug ASSERTs on yet.

Why? Don&apos;t we run debug tests? Do tests fail if they get enabled?

&gt; Source/JavaScriptCore/ChangeLog:95
&gt; +            This also means that ASSERTs in WTF and JSC functions that are inlined into
&gt; +            WebCore (and above) will not be enabled.

this seems slightly weird given what you said about field layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602912</commentid>
    <comment_count>7</comment_count>
      <attachid>386798</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-05 16:38:14 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:95
&gt;&gt; +            WebCore (and above) will not be enabled.
&gt; 
&gt; this seems slightly weird given what you said about field layout.

What happens if
ASSERT_ENABLED == 0
JSC_ASSERT_ENABLED == 1

and I have an ASSERT() inside JSC code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602913</commentid>
    <comment_count>8</comment_count>
      <attachid>386798</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-05 16:40:47 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

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

Would it be easier to just have a build configuration of debug that compiles with -O2?

&gt; Source/JavaScriptCore/config.h:21
&gt; +#include &lt;wtf/Compiler.h&gt;

what&apos;s this used for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602914</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-05 16:46:56 -0800</bug_when>
    <thetext>I think a simpler patch would be:
1. Make a debug build that compiles with O2
2. any asserts that are hit while running tests should be changed to some lower form of assert and be given a FIXME

This seems like a lot of code just to tiptoe around things above JSC/WTF have asserts that fire. If those asserts fire, we should either remove them, add a FIXME, or degrade them into a form of assert that never runs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602915</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-05 16:50:23 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; I think a simpler patch would be:
&gt; 1. Make a debug build that compiles with O2
&gt; 2. any asserts that are hit while running tests should be changed to some
&gt; lower form of assert and be given a FIXME
&gt; 
&gt; This seems like a lot of code just to tiptoe around things above JSC/WTF
&gt; have asserts that fire. If those asserts fire, we should either remove them,
&gt; add a FIXME, or degrade them into a form of assert that never runs.

Also, since this is not going to be used to run layout tests, just JSC tests, I think we can put (2) on the back burner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602917</commentid>
    <comment_count>11</comment_count>
      <attachid>386798</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 17:07:02 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:60
&gt;&gt; +            WebCore and higher level stacks aren&apos;t ready to run with debug ASSERTs on yet.
&gt; 
&gt; Why? Don&apos;t we run debug tests? Do tests fail if they get enabled?

They did fail for me when I tried with this patch (forced ASSERT_ENABLED to true).  But maybe that&apos;s due to other uses of #ifndef NDEBUG that should have been #if ASSERT_ENABLED instead.  The number of failures (crashes) were huge, not just the few that we see on the Debug bots at build.webkit.org.

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:95
&gt;&gt;&gt; +            WebCore (and above) will not be enabled.
&gt;&gt; 
&gt;&gt; this seems slightly weird given what you said about field layout.
&gt; 
&gt; What happens if
&gt; ASSERT_ENABLED == 0
&gt; JSC_ASSERT_ENABLED == 1
&gt; 
&gt; and I have an ASSERT() inside JSC code?

The code needed to set up state for ASSERT() in JSC code is guarded by JSC_ASSERT_ENABLED.  Hence, they will execute even though the ASSERT is a no op in WebCore code.  In JSC code, the ASSERT will run and the state it depends on will be consistent.

&gt;&gt; Source/JavaScriptCore/config.h:21
&gt;&gt; +#include &lt;wtf/Compiler.h&gt;
&gt; 
&gt; what&apos;s this used for?

Compiler.h defines ASAN_ENABLED which we test below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602923</commentid>
    <comment_count>12</comment_count>
      <attachid>386798</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 18:06:51 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +            1. Release build: ~40 minutes
&gt; 
&gt; can you state what the baseline is here (release without debug asserts)?

The baseline Release build without debug ASSERTS takes about 25 minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602957</commentid>
    <comment_count>13</comment_count>
      <attachid>386798</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-05 23:52:30 -0800</bug_when>
    <thetext>Comment on attachment 386798
proposed patch.

Now that https://bugs.webkit.org/show_bug.cgi?id=205787 will take care of enabling Debug builds to run fast, we no longer need to try to finagle the code to enable debug ASSERTs in some components and not others.

I&apos;m going to redo this patch to only be a rename of ASSERT_DISABLED to ASSERT_ENABLED plus the fixes where tests of NDEBUG should actually be tests of ASSERT_ENABLED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1602965</commentid>
    <comment_count>14</comment_count>
      <attachid>386819</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-06 01:22:17 -0800</bug_when>
    <thetext>Created attachment 386819
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603225</commentid>
    <comment_count>15</comment_count>
      <attachid>386819</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-06 12:55:25 -0800</bug_when>
    <thetext>Comment on attachment 386819
proposed patch.

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

r=me

I suggest also:
1. Filing a bug to get rid of more &quot;ifndef NDEBUG&quot;
2. Get all layout tests to pass when enabling ASSERT_ENABLED on release builds (presumably [1] will help with this).
3. Send out a PSA to webkit-dev so folks stop using &quot;ifndef NDEBUG&quot; for most assertions. (Some still might make sense if they&apos;re super costly in terms of perf.)

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This patch did the following changes:

nit: probably should go in WTF/ChangeLog?

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +           as well.  Well do that in another patch.  For now, they are left as is to

&quot;Well&quot; =&gt; &quot;We&apos;ll&quot;

&gt; Source/WTF/wtf/OptionSet.h:82
&gt; +#ifndef NDEBUG

why isn&apos;t this ASSERT_ENABLED?

&gt; Source/WTF/wtf/Platform.h:1050
&gt; +   do debug assertion checks unconditionally (e.g.  treat a debug ASSERT

nit: &quot;  &quot; =&gt; &quot; &quot;

&gt; Source/WebCore/html/HTMLTableRowsCollection.cpp:49
&gt; +#else // not ASSERT_ENABLED

nit: why &quot;not&quot; in front? Do we do that in places?

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:654
&gt; +    // FIXME: This assertion code was never built, has bit rotted, and needs to be fixed before it can be enabled:
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=205706.
&gt; +#if ASSERT_ENABLED
&gt;      VisiblePosition visiblePosition = passedPosition;
&gt;      unsigned indexComputedByVisiblePosition = 0;
&gt;      if (visiblePosition.isNotNull())
&gt;          indexComputedByVisiblePosition = WebCore::indexForVisiblePosition(innerText, visiblePosition, false /* forSelectionPreservation */);
&gt;      ASSERT(index == indexComputedByVisiblePosition);

should we just delete it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603249</commentid>
    <comment_count>16</comment_count>
      <attachid>386819</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-06 13:51:28 -0800</bug_when>
    <thetext>Comment on attachment 386819
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        This patch did the following changes:
&gt; 
&gt; nit: probably should go in WTF/ChangeLog?

Makes sense for this updated patch.  I&apos;ll move it.

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +           as well.  Well do that in another patch.  For now, they are left as is to
&gt; 
&gt; &quot;Well&quot; =&gt; &quot;We&apos;ll&quot;

Fixed.

&gt;&gt; Source/WTF/wtf/OptionSet.h:82
&gt;&gt; +#ifndef NDEBUG
&gt; 
&gt; why isn&apos;t this ASSERT_ENABLED?

Because the build failure due to constexpr on release builds.  It has nothing to do with ASSERT_ENABLED.  I&apos;m choosing to forego the ASSERT here so that this function can continue to be a constexpr function (which it needs to be).  This is documented in the comment below.

&gt;&gt; Source/WTF/wtf/Platform.h:1050
&gt;&gt; +   do debug assertion checks unconditionally (e.g.  treat a debug ASSERT
&gt; 
&gt; nit: &quot;  &quot; =&gt; &quot; &quot;

Fixed.

&gt;&gt; Source/WebCore/html/HTMLTableRowsCollection.cpp:49
&gt;&gt; +#else // not ASSERT_ENABLED
&gt; 
&gt; nit: why &quot;not&quot; in front? Do we do that in places?

Just to say that the following block is for when ASSERT_ENABLED is false.

&gt;&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:654
&gt;&gt;      ASSERT(index == indexComputedByVisiblePosition);
&gt; 
&gt; should we just delete it?

Darin thinks there&apos;s value in keeping it.  See https://bugs.webkit.org/show_bug.cgi?id=205706#c2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603277</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-01-06 14:25:41 -0800</bug_when>
    <thetext>Landed in r254087: &lt;http://trac.webkit.org/r254087&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386795</attachid>
            <date>2020-01-05 13:22:54 -0800</date>
            <delta_ts>2020-01-05 13:42:34 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-205776.patch</filename>
            <type>text/plain</type>
            <size>383194</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTA1ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgcnVubmluZyBh
IHJlbGVhc2UgYnVpbGQgd2l0aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vSGFzaFNldC5jcHA6
CisgICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogU3Rp
dGNoTWFya2VyL3d0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVEYXRl
cyk6CisgICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKiBT
dGl0Y2hNYXJrZXIvd3RmL0hhc2hlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFk
ZENoYXJhY3RlcnMpOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvTmV2ZXJEZXN0cm95ZWQu
aDoKKyAgICAgICAgKFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOjpjb25zdHJ1Y3QpOgorICAgICAg
ICAqIFN0aXRjaE1hcmtlci93dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tC
b3VuZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93
dGYvVmFsdWVDaGVjay5oOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvVmVjdG9yLmg6Cisg
ICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgICog
U3RpdGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIFN0
aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmg6CisgICAgICAgICogU3RpdGNo
TWFya2VyL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oOgorICAgICAgICAoV1RGOjpoYXNQcmVmaXhX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKToKKyAgICAgICAgKiBTdGl0Y2hNYXJr
ZXIvd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvdGV4
dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1VuaXF1ZWRT
dHJpbmdJbXBsLmg6CisKIDIwMTktMTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBTdHlsZUJlbmNoIHN1YnRlc3QgZm9yIGR5bmFtaWMgbWVkaWEg
cXVlcnkgcGVyZm9ybWFuY2UKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L0hhc2hTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL0hhc2hTZXQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBBU1NFUlRfRElT
QUJMRUQgMQorI2RlZmluZSBBU1NFUlRfRU5BQkxFRCAwCiAKICNkZWZpbmUgRFVNUF9IQVNIVEFC
TEVfU1RBVFMgMAogI2RlZmluZSBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUgMApAQCAt
MTAzMyw3ICsxMDMzLDcgQEAgc3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJsaWMgR2VuZXJp
YwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4g
VmFsdWVUeXBlKiBsb29rdXAoY29uc3QgVCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBpbmxpbmVMb29rdXAoY29uc3Qg
VCYpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0
aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7IH0KQEAgLTEwODUsNyArMTA4NSw3IEBA
IHN0cnVjdCBDdXN0b21IYXNoVHJhaXRzIDogcHVibGljIEdlbmVyaWMKICAgICAgICAgaXRlcmF0
b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBpdGVyYXRv
cih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9
CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKFZhbHVl
VHlwZSogcG9zKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFi
bGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0aWMgdm9pZCBjaGVj
a1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgeyB9CkBAIC0xMTgyLDcgKzExODIsNyBAQCBz
dHJ1Y3QgQ3VzdG9tSGFzaFRyYWl0cyA6IHB1YmxpYyBHZW5lcmljCiAgICAgICAgIHJldHVybiBr
ZXk7CiAgICAgfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPgpAQCAtMTk1MSw3ICsxOTUxLDcgQEAgc3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJs
aWMgR2VuZXJpYwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBjb25zdApAQCAtMTk5Myw3ICsxOTkzLDcgQEAg
c3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJsaWMgR2VuZXJpYwogICAgICAgICBBU1NFUlQo
bV90YWJsZVNpemUgPT0gbV90YWJsZVNpemVNYXNrICsgMSk7CiAgICAgfQogCi0jZW5kaWYgLy8g
QVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMKIApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIv
d3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1h
cmtlci93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Mywz
OSArNjMsMzYgQEAgZXh0ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVCYXJyaWVyKHZvaWQpOwogI2Vu
ZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBBU1NFUlRfRU5BQkxFRAogI2lmZGVmIE5ERUJVRwotLyog
RGlzYWJsZSBBU1NFUlQqIG1hY3JvcyBpbiByZWxlYXNlIG1vZGUuICovCi0jZGVmaW5lIEFTU0VS
VElPTlNfRElTQUJMRURfREVGQVVMVCAxCisjZGVmaW5lIEFTU0VSVF9FTkFCTEVEIDAKICNlbHNl
Ci0jZGVmaW5lIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVCAwCisjZGVmaW5lIEFTU0VSVF9F
TkFCTEVEIDEKICNlbmRpZgotCi0jaWZuZGVmIEJBQ0tUUkFDRV9ESVNBQkxFRAotI2RlZmluZSBC
QUNLVFJBQ0VfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCiAjZW5kaWYKIAot
I2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKLSNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIEFTU0VSVElP
TlNfRElTQUJMRURfREVGQVVMVAorI2lmbmRlZiBCQUNLVFJBQ0VfRElTQUJMRUQKKyNkZWZpbmUg
QkFDS1RSQUNFX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNpZm5kZWYgQVNT
RVJUX01TR19ESVNBQkxFRAotI2RlZmluZSBBU1NFUlRfTVNHX0RJU0FCTEVEIEFTU0VSVElPTlNf
RElTQUJMRURfREVGQVVMVAorI2RlZmluZSBBU1NFUlRfTVNHX0RJU0FCTEVEICFBU1NFUlRfRU5B
QkxFRAogI2VuZGlmCiAKICNpZm5kZWYgQVNTRVJUX0FSR19ESVNBQkxFRAotI2RlZmluZSBBU1NF
UlRfQVJHX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBBU1NF
UlRfQVJHX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNpZm5kZWYgRkFUQUxf
RElTQUJMRUQKLSNkZWZpbmUgRkFUQUxfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZB
VUxUCisjZGVmaW5lIEZBVEFMX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNp
Zm5kZWYgRVJST1JfRElTQUJMRUQKLSNkZWZpbmUgRVJST1JfRElTQUJMRUQgQVNTRVJUSU9OU19E
SVNBQkxFRF9ERUZBVUxUCisjZGVmaW5lIEVSUk9SX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAog
I2VuZGlmCiAKICNpZm5kZWYgTE9HX0RJU0FCTEVECi0jZGVmaW5lIExPR19ESVNBQkxFRCBBU1NF
UlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgTE9HX0RJU0FCTEVEICFBU1NFUlRfRU5B
QkxFRAogI2VuZGlmCiAKICNpZm5kZWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTI2Nyw3ICsy
NjQsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTCiAjdW5kZWYg
QVNTRVJUCiAjZW5kaWYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxF
RAogCiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24pICgodm9pZCkwKQogI2RlZmluZSBBU1NFUlRf
QVQoYXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlvbikgKCh2b2lkKTApCkBAIC00NDYsNyAr
NDQzLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBUwogCiAvKiBS
RUxFQVNFX0FTU0VSVCAqLwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFC
TEVECiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCiAgICAgaWYgKFVO
TElLRUxZKCEoYXNzZXJ0aW9uKSkpIFwKICAgICAgICAgQ1JBU0goKTsgXApJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0RhdGVNYXRoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvRGF0ZU1hdGguY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvRGF0ZU1hdGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNyArNTUzLDcgQEAgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1
bGF0ZUxvY2FsVGltZU9mZnNldAogCiB2b2lkIGluaXRpYWxpemVEYXRlcygpCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc3RhdGljIGJvb2wgYWxyZWFk
eUluaXRpYWxpemVkOwogICAgIEFTU0VSVCghYWxyZWFkeUluaXRpYWxpemVkKTsKICAgICBhbHJl
YWR5SW5pdGlhbGl6ZWQgPSB0cnVlOwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJr
ZXIvd3RmL0hhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNo
TWFya2VyL3d0Zi9IYXNoVGFibGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTYs
NyArNDE2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5cGUqIGxvb2t1cChjb25zdCBUJik7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1
ZVR5cGUqIGlubGluZUxvb2t1cChjb25zdCBUJik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBj
b25zdDsKICNlbHNlCiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgp
IHsgfQpAQCAtNDY4LDcgKzQ2OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVyYXRv
ciBtYWtlS25vd25Hb29kSXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9y
KHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0K
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVU
eXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJs
ZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0
ZW5jeUV4Y2VwdFNpemUoKSBjb25zdDsKICNlbHNlCiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KQEAgLTU2OCw3ICs1NjgsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGtleTsKICAgICB9CiAKLSNpZiBBU1NFUlRfRElT
QUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CkBAIC0xMzM3LDcgKzEzMzcsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB2b2lkIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKQEAgLTEzNzksNyArMTM3OSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPT0gbV90YWJs
ZVNpemVNYXNrICsgMSk7CiAgICAgfQogCi0jZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVECisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKIApJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0hhc2hlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9IYXNoZXIuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0hhc2hlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
Q2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hhciBiKQogICAgIHsKICAgICAgICAgaWYgKG1faGFzUGVu
ZGluZ0NoYXJhY3RlcikgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CiAjZW5kaWYKICAg
ICAgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVy
LCBhKTsKICAgICAgICAgICAgIG1fcGVuZGluZ0NoYXJhY3RlciA9IGI7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFy
YWN0ZXIgPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvTmV2ZXJEZXN0cm95ZWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvTmV2ZXJEZXN0cm95ZWQuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL05ldmVy
RGVzdHJveWVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgQVNTRVJUKCFtX2lzQ29uc3RydWN0ZWQpOwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1faXNDb25zdHJ1Y3RlZCA9IHRydWU7
CiAjZW5kaWYKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0
IE1heWJlUmVsYXgoUHRyVHlwZSogcHRyKSB7IHB0ci0+cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50
KCk7IH0KICAgICB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgLy8gTGF6eU5ldmVyRGVzdHJveWVkIG9iamVjdHMgYXJlIGFsd2F5cyBzdGF0aWMsIHNv
IHRoaXMgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgdG8gZmFsc2UuCiAgICAgLy8gSXQgbXVzdCBu
b3QgYmUgaW5pdGlhbGl6ZWQgZHluYW1pY2FsbHk7IHRoYXQgd291bGQgbm90IGJlIHRocmVhZCBz
YWZlLgogICAgIGJvb2wgbV9pc0NvbnN0cnVjdGVkOwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9T
dGl0Y2hNYXJrZXIvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9TdGFja0JvdW5kcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICB2b2lkKiBjdXJyZW50UG9zaXRpb24gPSAmY3VycmVudFBvc2l0aW9u
OwogICAgICAgICBBU1NFUlQobV9vcmlnaW4gIT0gbV9ib3VuZCk7CiAgICAgICAgIEFTU0VSVChp
c0dyb3dpbmdEb3dud2FyZCgpCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93
dGYvVmFsdWVDaGVjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFy
a2VyL3d0Zi9WYWx1ZUNoZWNrLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvU3RpdGNoTWFya2VyL3d0Zi9WYWx1ZUNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2sgewogICAgIHN0
YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgVCYpIHsgfQogfTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IFZhbHVlQ2hlY2s8UCo+IHsKICAgICB0eXBlZGVmIFAqIFRyYWl0VHlwZTsKICAgICBzdGF0
aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFAqIHApCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OTQsNyArMTQ5NCw3IEBAIGlubGluZSBNYWxsb2NQdHI8VD4gVmVjdG9yPFQsIGlubGluZUNh
cGEKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CiBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpjaGVja0Nv
bnNpc3RlbmN5KCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQogICAgICAgICBWYWx1ZUNo
ZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5KGF0KGkpKTsKICNlbmRpZgpAQCAtMTUyMSw3ICsxNTIx
LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VCwgaQogICAgIHJldHVy
biAhKGEgPT0gYik7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1ZUNoZWNrPFZlY3RvcjxUPj4gewog
ICAgIHR5cGVkZWYgVmVjdG9yPFQ+IFRyYWl0VHlwZTsKICAgICBzdGF0aWMgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KGNvbnN0IFZlY3RvcjxUPiYgdikKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3Rp
dGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYv
dGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcgKzUzNiw3
IEBAIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmdJbXAKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
Ym9vbCBBdG9taWNTdHJpbmdJbXBsOjppc0luQXRvbWljU3RyaW5nVGFibGUoU3RyaW5nSW1wbCog
c3RyaW5nKQogewogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9t
aWNTdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvU3Rp
dGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJv
dmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBib29sIGlzSW5BdG9taWNTdHJpbmdUYWJsZShTdHJpbmdJbXBsKik7CiAjZW5kaWYK
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gbG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1w
bCYpOwogfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogLy8g
QXRvbWljU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NF
UlQKIC8vIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8v
IGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5o
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYv
dGV4dC9TdHJpbmdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjA1LDcgKzYwNSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHVuc2lnbmUKIAogdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nQ2xhc3M+IGJvb2wgaW5saW5lIGhhc1ByZWZpeFdpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywgY29uc3QgY2hhciogbG93
ZXJjYXNlTGV0dGVycywgdW5zaWduZWQgbGVuZ3RoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCgqbG93ZXJjYXNlTGV0dGVycyk7CiAgICAg
Zm9yIChjb25zdCBjaGFyKiBsZXR0ZXIgPSBsb3dlcmNhc2VMZXR0ZXJzOyAqbGV0dGVyOyArK2xl
dHRlcikKICAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlclVuY2hlY2tlZCgqbGV0dGVyKSA9PSAq
bGV0dGVyKTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93
dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
ODc4LDcgKzg3OCw3IEBAIHVzaW5nIFN0YXRpY1N0cmluZ0ltcGwgPSBTdHJpbmdJbXBsOjpTdGEK
IAogc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gc2l6ZW9mKFN0YXRpY1N0cmlu
Z0ltcGwpLCAiIik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
IC8vIFN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJU
CiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5CiAvLyBh
cyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9TeW1ib2xJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL3RleHQvU3ltYm9sSW1wbC5oCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9T
eW1ib2xJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBpbmxpbmUgUmVn
aXN0ZXJlZFN5bWJvbEltcGwqIFN5bWJvbEltcGw6CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJl
Z2lzdGVyZWRTeW1ib2xJbXBsKj4odGhpcyk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKIC8vIFN5bWJvbEltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJp
bmdJbXBsIHdpbGwgQVNTRVJUCiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVj
a0NvbnNpc3RlbmN5CiAvLyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2Mu
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9VbmlxdWVkU3Ry
aW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0
Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJvdGVjdGVkOgogICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKENyZWF0ZVN5bWJvbFRhZykgOiBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCkgeyB9CiB9Owog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAvLyBVbmlxdWVkU3Ry
aW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQKIC8vIGlu
IHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8vIGFzIHRoZXkg
YXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0OSBAQAorMjAyMC0wMS0wNSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHJ1bm5pbmcgYSByZWxlYXNl
IGJ1aWxkIHdpdGggZGVidWcgQVNTRVJUcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBjb3JlIGludGVudCBmb3IgdGhpcyBwYXRjaCBpcyB0byBl
bmFibGUgdXMgdG8gcnVuIHRlc3RzIHdpdGggZGVidWcgQVNTRVJUcworICAgICAgICBlbmFibGVk
IGJ1dCBzdGlsbCBoYXZlIHRoZSB0ZXN0cyBub3QgdGFrZSB0b28gbG9uZyB0byBydW4uCisKKyAg
ICAgICAgICAgIEhlcmUgYXJlIHRoZSB0aW1lcyBmb3IgcnVubmluZyBhbGwgSlNDIHN0cmVzcyB0
ZXN0cyBvbiB2YXJpb3VzIGJ1aWxkIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICB3aXRoIGRl
YnVnIEFTU0VSVHMgZW5hYmxlZDoKKworICAgICAgICAgICAgMS4gUmVsZWFzZSBidWlsZDogfjQw
IG1pbnV0ZXMKKyAgICAgICAgICAgIDIuIERlYnVnIGJ1aWxkICh3aXRoIG5vIHRpbWVvdXRzKTog
fjYgaG91cnMgKGZyb20gbXkgc2tldGNoeSBtZW1vcnkpCisgICAgICAgICAgICAzLiBBU0FOIFJl
bGVhc2UgYnVpbGQgKHdpdGggNjAgZmFpbHVyZXMsIDIxIG9mIHdoaWNoIGFyZSB0aW1lb3V0cyk6
IH41IGhvdXJzCisKKyAgICAgICAgICAgIFdlIGhhZCBjb25zaWRlcmVkIHVzaW5nIHRoZSBBU0FO
IFJlbGVhc2UgYnVpbGQgYXMgdGhlIHZlaGljbGUgZm9yIGFjaGlldmluZyB0aGUKKyAgICAgICAg
ICAgIGdvYWwgb2YgcnVubmluZyB3aXRoIGRlYnVnIEFTU0VSVHMgb24gYSAiZmFzdCIgdGVzdCBy
dW4uICBCYXNlZCBvbiB0aGlzIGRhdGEsCisgICAgICAgICAgICB0aGUgQVNBTiBSZWxlYXNlIGJ1
aWxkIGlzIGp1c3QgYXMgYmFkIGFzIHRoZSBEZWJ1ZyBidWlsZCAodGVzdCBydW4gdGltZXMgYXJl
IG9uCisgICAgICAgICAgICBzYW1lIG9yZGVyIG9mIG1hZ25pdHVkZSwgYW5kIHdheSB0b28gc2xv
dykuICBIZW5jZSwgdGhlIEFTQU4gUmVsZWFzZSBidWlsZCBpcworICAgICAgICAgICAgbm90IGEg
dmlhYmxlIHNvbHV0aW9uLgorCisgICAgICAgICAgICBVbHRpbWF0ZWx5LCB3ZSdsbCBuZWVkIHRv
IHNldCB1cCBhbm90aGVyIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlCisgICAgICAg
ICAgICBSZWxlYXNlIGJ1aWxkIGluIG9yZGVyIHRvIGFjaGlldmUgdGhlIGdvYWwuICBXZSdsbCBk
byB0aGF0IGluIGFub3RoZXIgcGF0Y2guCisgICAgICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc3OS4KKworICAgICAgICAgICAgRm9yIG5vdywg
d2UnbGwgZW5hYmxlIGRlYnVnIEFTU0VSVHMgb24gQVNBTiBSZWxlYXNlIGJ1aWxkcyBqdXN0IHRv
IGVuc3VyZSB0aGF0CisgICAgICAgICAgICB0aGUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgQVNTRVJU
cyBvbiByZWxlYXNlIGJ1aWxkcyBkb24ndCBiaXRyb3Qgb3ZlciB0aW1lLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVwbGFjZXMgQVNTRVJUX0RJU0FCTEVEIHdpdGggQVNTRVJUX0VOQUJMRUQuCisK
KyAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBhcyBhIGZvcmNpbmcgZnVuY3Rpb24gdG8gZW5zdXJl
IHRoYXQgYWxsIHRoZSByZWxldmFudCBzdXBwb3J0aW5nCisgICAgICAgICAgICBjb2RlIHRoYXQg
bmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgZGVidWcgYXNzZXJ0cyBoYXZlIGJlZW4gdmlzaXRlZCBp
biBhIGNvZGUKKyAgICAgICAgICAgIHJldmlldyBhbmQgdXBkYXRlZCBhcyBuZWVkZWQuICBTcGVj
aWZpY2FsbHksIGEgbG90IG9mIHRoaXMgc3VwcG9ydCBjb2RlIHdhcworICAgICAgICAgICAgcHJl
dmlvdXNseSBndWFyZGVkIHdpdGggIiNpZm5kZWYgTkRFQlVHIi4gIFRoZXkgYXJlIG5vdyBmaXhl
ZCB0byBiZSBndWFyZGVkCisgICAgICAgICAgICBieSAiI2lmIEFTU0VSVF9FTkFCTEVEIi4KKwor
ICAgICAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBkb2VzIGF3YXkgd2l0aCB0aGUgbmVlZCBmb3Ig
dGhlIGRvdWJsZSBuZWdhdGl2ZQorICAgICAgICAgICAgIUFTU0VSVF9ESVNBQkxFRCB0ZXN0IHRo
YXQgaXMgY29tbW9ubHkgdXNlZCBhbGwgb3ZlciB0aGUgY29kZSwgdGhlcmVieQorICAgICAgICAg
ICAgaW1wcm92aW5nIGNvZGUgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgICAgIEluIEFzc2VydGlv
bnMuaCwgdGhlcmUgaXMgYWxzbyBCQUNLVFJBQ0VfRElTQUJMRUQsIEFTU0VSVF9NU0dfRElTQUJM
RUQsCisgICAgICAgICAgICBBU1NFUlRfQVJHX0RJU0FCTEVELCBGQVRBTF9ESVNBQkxFRCwgRVJS
T1JfRElTQUJMRUQsIExPR19ESVNBQkxFRCwgYW5kCisgICAgICAgICAgICBSRUxFQVNFX0xPR19E
SVNBQkxFRC4gIFdlIHNob3VsZCByZXBsYWNlIHRob3NlIHdpdGggLi4uX0VOQUJMRUQgZXF1aXZh
bGVudHMKKyAgICAgICAgICAgIGFzIHdlbGwuICBXZWxsIGRvIHRoYXQgaW4gYW5vdGhlciBwYXRj
aC4gIEZvciBub3csIHRoZXkgYXJlIGxlZnQgYXMgaXMgdG8KKyAgICAgICAgICAgIG1pbmltaXpl
IHRoZSBzaXplIG9mIHRoaXMgcGF0Y2guCisgICAgICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4MC4KKworICAgICAgICBUaGlzIHBhdGNoIGFs
c28gaW50cm9kdWNlcyBKU0NfQVNTRVJUX0VOQUJMRUQgYW5kIFdURl9BU1NFUlRfRU5BQkxFRCBm
bGFncyB0byBiZQorICAgICAgICB1c2VkIGluIEpTQyBhbmQgV1RGIGNvZGUgcmVzcGVjdGl2ZWx5
IGluc3RlYWQgb2YgQVNTRVJUX0VOQUJMRUQuCisKKyAgICAgICAgVG8gZW5hYmxlIGRlYnVnIEFT
U0VSVHMgaW4gSlNDIGNvZGUgKGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMpLCBvdmVycmlkZQorICAg
ICAgICBKU0NfQVNTRVJUX0VOQUJMRUQgdG8gdHJ1ZS4KKworICAgICAgICBTaW1pbGFybHksIHRv
IGVuYWJsZSBkZWJ1ZyBBU1NFUlRzIGluIFdURiBjb2RlIChldmVuIGluIHJlbGVhc2UgYnVpbGRz
KSwgb3ZlcnJpZGUKKyAgICAgICAgV1RGX0FTU0VSVF9FTkFCTEVEIHRvIHRydWUuCisKKyAgICAg
ICAgICAgIFRoZSByZWFzb24gd2UgbmVlZCBXVEZfQVNTRVJUX0VOQUJMRUQgYW5kIEpTQ19BU1NF
UlRfRU5BQkxFRCBpcyBiZWNhdXNlCisgICAgICAgICAgICBXZWJDb3JlIGFuZCBoaWdoZXIgbGV2
ZWwgc3RhY2tzIGFyZW4ndCByZWFkeSB0byBydW4gd2l0aCBkZWJ1ZyBBU1NFUlRzIG9uIHlldC4K
KyAgICAgICAgICAgIFRoZXJlIG1heSBiZSB0b28gbWFueSBmYWxzZSBwb3NpdGl2ZSB0ZXN0IGZh
aWx1cmVzLiAgQXMgc3VjaCwgd2Ugb25seSB3YW50CisgICAgICAgICAgICB0byBlbmFibGUgZGVi
dWcgQVNTRVJUcyBvbiBKU0MgYW5kIGJlbG93LgorCisgICAgICAgICAgICBUbyBhY2hpZXZlIHRo
aXMsIHdlIG5lZWQgdG8gYmUgZW5zdXJlIHRoYXQgZm9yIFdURiBhbmQgSlNDIGNvZGU6CisKKyAg
ICAgICAgICAgIDEuIEFueSBmaWVsZHMgdGhhdCBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBp
biBmb3IgQVNTRVJUcyBpcyBhbHNvIGVuYWJsZWQKKyAgICAgICAgICAgICAgIGV2ZW4gaW4gYnVp
bGRzIG9mIFdlYkNvcmUgKGFuZCBhYm92ZSkgdGhvdWdoIHRoZSBBU1NFUlRzIGFyZSBub3QgZW5h
YmxlZC4KKworICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB3ZSBjYW4gZ2V0IGEgbWlzbWF0Y2gg
aW4gdGhlIGxheW91dCBvZiBKU0Mgc3RydWN0cy9jbGFzc2VzCisgICAgICAgICAgICAgICB0aGF0
IGFyZSBhbHNvIHVzZWQgaW4gV2ViQ29yZSAoYW5kIGFib3ZlKS4KKworICAgICAgICAgICAgMi4g
QW55IGNvZGUgdGhhdCBzZXRzIC8gbW9kaWZpZXMgdGhlIHN0YXRlIG9mIHRob3NlIGZpZWxkcyB0
aGF0IGFyZQorICAgICAgICAgICAgICAgY29uZGl0aW9uYWxseSBjb21waWxlZCBpbiBmb3IgQVNT
RVJUcyBpcyBhbHNvIGVuYWJsZWQgaW4gYnVpbGRzIG9mIFdlYkNvcmUKKyAgICAgICAgICAgICAg
IChhbmQgYWJvdmUpIHRob3VnaCB0aGUgQVNTRVJUcyBhcmUgbm90IGVuYWJsZWQuCisKKyAgICAg
ICAgICAgICAgIE90aGVyd2lzZSwgSlNDIGFuZCBXVEYgYXNzZXJ0IHN1cHBvcnQgY29kZSB0aGF0
IGFyZSBpbmxpbmVkIGludG8gV2ViQ29yZQorICAgICAgICAgICAgICAgKGFuZCBhYm92ZSkgbWF5
IG5vdCBnZXQgZXhlcmNpc2VkLCBhbmQgQVNTRVJUcyB3aWxsIGZhaWwuCisKKyAgICAgICAgICAg
IEd1YXJkaW5nIGFsbCBXVEYgYW5kIEpTQyBhc3NlcnQgc3BlY2lmaWMgZmllbGRzIGFuZCBzdXBw
b3J0IGNvZGUgd2l0aAorICAgICAgICAgICAgV1RGX0FTU0VSVF9FTkFCTEVEIGFuZCBKU0NfQVNT
RVJUX0VOQUJMRUQgcmVzcGVjdGl2ZWx5LCBlbnN1cmVzIHRoYXQKKyAgICAgICAgICAgIGNvbmRp
dGlvbnMgKDEpIGFuZCAoMikgYWJvdmUgY2FuIGJlIG1ldC4KKworICAgICAgICAgICAgTm90ZSB0
aGF0IHRoZSBBU1NFUlQgbWFjcm9zIGFyZSBzdGlsbCBndWFyZGVkIGJ5IEFTU0VSVF9FTkFCTEVE
IChhbmQgbm90CisgICAgICAgICAgICBXVEZfQVNTRVJUX0VOQUJMRUQgYW5kIEpTQ19BU1NFUlRf
RU5BQkxFRCkuICBUaGlzIG1lYW5zIHRoYXQgd2UgY2FuIHNldAorICAgICAgICAgICAgV1RGX0FT
U0VSVF9FTkFCTEVEIGFuZCBKU0NfQVNTRVJUX0VOQUJMRUQgdG8gdHJ1ZSB3aGlsZSBsZWF2aW5n
IEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICBvZmYsIHdoaWNoIGVmZmVjdGl2ZWx5IGJ1aWxk
cyBpbiBhbGwgdGhlIHN1cHBvcnQgZm9yIHJ1bm5pbmcgd2l0aCBkZWJ1ZworICAgICAgICAgICAg
QVNTRVJUcyBidXQgbm90IGFjdHVhbGx5IGRvaW5nIGFueSBvZiB0aGUgQVNTRVJUcy4KKworICAg
ICAgICBJbiBXVEYgYW5kIEpTQydzIGNvbmZpZy5oLCB3ZSBhbHNvIGFkZGVkIGNoZWNrcyBpZiBX
VEZfQVNTRVJUX0VOQUJMRUQgYW5kCisgICAgICAgIEpTQ19BU1NFUlRfRU5BQkxFRCBhcmUgdHJ1
ZS4gIElmIHNvLCB3ZSBvdmVycmlkZSBBU1NFUlRfRU5BQkxFRCB0byBiZSB0cnVlIHRoZXJlLgor
CisgICAgICAgICAgICBXaXRoIHRoaXMsIHRoZSBBU1NFUlRzIGFyZSBlbmFibGVkIGluIFdURiBh
bmQgSlNDIC5jcHAgZmlsZXMuCisKKyAgICAgICAgICAgIFRoaXMgYWxzbyBtZWFucyB0aGF0IEFT
U0VSVHMgaW4gV1RGIGFuZCBKU0MgZnVuY3Rpb25zIHRoYXQgYXJlIGlubGluZWQgaW50bworICAg
ICAgICAgICAgV2ViQ29yZSAoYW5kIGFib3ZlKSB3aWxsIG5vdCBiZSBlbmFibGVkLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZGlkIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICAxLiBD
aGFuZ2VkIGEgZmV3IEFTU0VSVHMgdG8gQVNTRVJUX1VOVVNFRHMuICBUaGlzIGlzIG5lZWRlZCBi
ZWNhdXNlIFdlYkNvcmUKKyAgICAgICAgICAgY29kZSBtYXkgbm93IGJ1aWxkIGluIEFTU0VSVCBz
dXBwb3J0IGNvZGUgdGhhdCBkZWZpbmUgdmFyaWFibGVzLCBidXQgbm93CisgICAgICAgICAgIGFj
dHVhbGx5IGJ1aWxkIGluIHRoZSBBU1NFUlQgdGhhdCB1c2UgdGhvc2UgdmFyaWFibGVzLgorCisg
ICAgICAgIDIuIEluIGNhc2VzIHdoZXJlIHRoZSBjaGFuZ2UgaXMgbWluaW1hbCwgd2UgbW92ZSBz
b21lIGNvZGUgYXJvdW5kIHNvIHRoYXQgd2UgY2FuCisgICAgICAgICAgIHRlc3QgZm9yICIjaWYg
QVNTRVJUX0VOQUJMRUQiIGluc3RlYWQgb2YgIiNpZiAhQVNTRVJUX0VOQUJMRUQiLgorCisKKyAg
ICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jOgorICAgICAgICAqIGFzc2VtYmxlci9BUk02NEFz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk02NEFzc2VtYmxlcjo6cmVwbGFjZVdpdGhMb2Fk
KToKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1
dGF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmg6CisgICAgICAg
IChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6TG9jYWxXcml0ZXI6OkxvY2FsV3JpdGVyKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6
OmNvcHlDb21wYWN0QW5kTGlua0NvZGUpOgorICAgICAgICAqIGFzc2VtYmxlci9Qcm9iZVN0YWNr
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvYmU6OlN0YWNrOjpTdGFjayk6CisgICAgICAgICogYXNz
ZW1ibGVyL1Byb2JlU3RhY2suaDoKKyAgICAgICAgKiBiMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNw
cDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAqIGIzL0IzTWVtb3J5
VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKToK
KyAgICAgICAgKiBiMy9CM09wY29kZS5jcHA6CisgICAgICAgICogYjMvQjNUeXBlLmg6CisgICAg
ICAgICogYjMvQjNUeXBlTWFwLmg6CisgICAgICAgICogYjMvQjNXaWR0aC5oOgorICAgICAgICAq
IGIzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcDoK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJl
cGFyZUZvckdlbmVyYXRpb24pOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpHZW5lcmF0ZUFuZEFs
bG9jYXRlUmVnaXN0ZXJzOjpnZW5lcmF0ZSk6CisgICAgICAgICogYjMvYWlyL0FpckFsbG9jYXRl
UmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaDoKKyAgICAgICAgKiBiMy9haXIvQWly
QWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwOgorICAgICAgICAqIGIzL2Fpci9B
aXJBcmcuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAgKiBiMy9haXIv
QWlyQ29kZS5oOgorICAgICAgICAqIGIzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6OmVtaXRTaHVmZmxlKToKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZUV4ZWN1dGFibGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAg
ICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuaDoKKyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFu
dC5jcHA6CisgICAgICAgIChKU0M6OnZhcmlhbnRMaXN0V2l0aFZhcmlhbnQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZW5zdXJl
Q2F0Y2hMaXZlbmVzc0lzQ29tcHV0ZWRGb3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2tIYXNoLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrSGFzaDo6ZHVt
cCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9SZWdpc3RlcklELmg6
CisgICAgICAgIChKU0M6OlJlZ2lzdGVySUQ6OlJlZ2lzdGVySUQpOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlcklEOjpzZXRJbmRleCk6CisgICAgICAgICogY29uZmlnLmg6CisgICAgICAgICogZGVi
dWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtw
b2ludCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJFdmFsRW5hYmxlci5oOgorICAgICAg
ICAoSlNDOjpEZWJ1Z2dlckV2YWxFbmFibGVyOjpEZWJ1Z2dlckV2YWxFbmFibGVyKToKKyAgICAg
ICAgKEpTQzo6RGVidWdnZXJFdmFsRW5hYmxlcjo6fkRlYnVnZ2VyRXZhbEVuYWJsZXIpOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpvYnNlcnZlVHJh
bnNpdGlvbnMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFs
dWU6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNp
c3RlbmN5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjphc3NlcnRJ
c1JlZ2lzdGVyZWQgY29uc3QpOgorICAgICAgICAqIGRmZy9ERkdBcml0aE1vZGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpkb2VzT3ZlcmZsb3cpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6
OmRpZExpbmspOgorICAgICAgICAqIGRmZy9ERkdDRkFQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAgICogZGZnL0RGR0NvbW1v
bi5oOgorICAgICAgICAoSlNDOjpERkc6OnZhbGlkYXRpb25FbmFibGVkKToKKyAgICAgICAgKiBk
ZmcvREZHQ29tbW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9uRGF0YTo6Zmlu
YWxpemVDYXRjaEVudHJ5cG9pbnRzKToKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZFdhdGNocG9p
bnRzLmg6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRWRnZS5oOgorICAgICAgICAoSlNDOjpERkc6OkVk
Z2U6Om1ha2VXb3JkKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29kZTo6ZmluYWxpemVPU1JFbnRyeXBv
aW50cyk6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNTQUNvbnZlcnNpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHU2NvcmVC
b2FyZC5oOgorICAgICAgICAoSlNDOjpERkc6OlNjb3JlQm9hcmQ6OmFzc2VydENsZWFyKToKKyAg
ICAgICAgKiBkZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpT
bG93UGF0aEdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJy
ZW50QmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QmluYXJ5
U3dpdGNoU3RyaW5nUmVjdXJzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRBbGxvY2F0ZUJ1dHRlcmZseSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUNlbGwpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCBj
b25zdCk6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZTo6cnVuKToKKyAgICAg
ICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNhbGxQcmVmbGlnaHQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjYWxsQ2hlY2spOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
OjpjcmFzaCk6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorICAgICAgICAqIGhlYXAv
QmxvY2tEaXJlY3RvcnkuY3BwOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YXNzZXJ0
Tm9VbnN3ZXB0KToKKyAgICAgICAgKiBoZWFwL0dDU2VnbWVudGVkQXJyYXkuaDoKKyAgICAgICAg
KEpTQzo6R0NBcnJheVNlZ21lbnQ6OkdDQXJyYXlTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0dD
U2VnbWVudGVkQXJyYXlJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXk8
VD46OmNsZWFyKToKKyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6ZXhwYW5kKToK
KyAgICAgICAgKEpTQzo6R0NTZWdtZW50ZWRBcnJheTxUPjo6dmFsaWRhdGVQcmV2aW91cyk6Cisg
ICAgICAgICogaGVhcC9IYW5kbGVTZXQuY3BwOgorICAgICAgICAqIGhlYXAvSGFuZGxlU2V0Lmg6
CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxs
b2NhdGlvbkxpbWl0cyk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9N
YXJrZWRCbG9jay5jcHA6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAo
SlNDOjpNYXJrZWRCbG9jazo6YXNzZXJ0VmFsaWRDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmFzc2VydE1hcmtzTm90U3RhbGUpOgorICAgICAgICAqIGhlYXAvTWFya2Vk
U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6YXNzZXJ0Tm9VbnN3ZXB0KToKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0
aW9uLmNwcDoKKyAgICAgICAgKiBoZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmg6CisgICAgICAgIChK
U0M6OlByZWNpc2VBbGxvY2F0aW9uOjphc3NlcnRWYWxpZENlbGwgY29uc3QpOgorICAgICAgICAq
IGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6U2xvdFZp
c2l0b3IpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlh
cnkpOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oOgorICAgICAgICAoSW5zcGVjdG9yOjpQcm90b2NvbDo6
QmluZGluZ1RyYWl0czxKU09OOjpBcnJheU9mPFQ+Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5
cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQ3BwUHJvdG9jb2xUeXBl
c0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX29iamVjdF9k
ZWNsYXJhdGlvbik6CisgICAgICAgIChDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IpOgorICAgICAgICAoQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9y
Ll9nZW5lcmF0ZV9hc3NlcnRpb25fZm9yX2VudW0pOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaDoKKyAgICAg
ICAgKEpTQzo6SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXI6OkpJVE9wZXJhdGlv
blByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpJbnRlcnByZXRlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0U3RvcmVTdHJ1
Y3R1cmVXaXRoVHlwZUluZm8pOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpwcmVwYXJlQ2FsbE9wZXJhdGlvbik6CisgICAg
ICAgICogaml0L0JpbmFyeVN3aXRjaC5jcHA6CisgICAgICAgIChKU0M6OkJpbmFyeVN3aXRjaDo6
QmluYXJ5U3dpdGNoKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQXJncyk6CisgICAgICAgICogaml0L0NhbGxGcmFt
ZVNodWZmbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREZWx0
YUNoZWNrKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmFzc2VydFN0YWNrUG9p
bnRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNs
b3dfb3BfbG9vcF9oaW50KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjplbWl0UG9pbnRlclZhbGlkYXRpb24pOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNz
ZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6CisgICAg
ICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKyAgICAg
ICAgKEpTQzo6aXNTYWZlQnVpbHRpbklkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxU
Pjo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgICogcnVudGltZS9BcmdMaXN0Lmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyOjpzZXROZWVkc092ZXJmbG93Q2hlY2sp
OgorICAgICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6Y2xlYXJOZWVkc092ZXJmbG93
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVyZmx5Lmg6CisgICAgICAgIChKU0M6OkNv
bnRpZ3VvdXNEYXRhOjpDb250aWd1b3VzRGF0YSk6CisgICAgICAgIChKU0M6OkNvbnRpZ3VvdXNE
YXRhOjpEYXRhOjpEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAg
ICAgIChKU0M6Okhhc2hNYXBJbXBsOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SGFzaE1hcEltcGw6OmFzc2VydEJ1ZmZlcklzRW1wdHkgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6Om1ldGhvZFRh
YmxlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjphc3NlcnRU
eXBlSW5mb0ZsYWdJbnZhcmlhbnRzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpK
U0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJv
cGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0Ojphc3NlcnRWYXJpYWJsZUlz
SW5UaGlzT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleCk6CisgICAgICAg
ICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25z
Lmg6CisgICAgICAgIChKU0M6OnNjcmliYmxlRnJlZUNlbGxzKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpjb21wdXRlQ2FuVXNlSklUKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
IChKU0M6OlZNOjpjYW5Vc2VKSVQpOgorICAgICAgICAqIHJ1bnRpbWUvVmFyT2Zmc2V0Lmg6Cisg
ICAgICAgIChKU0M6OlZhck9mZnNldDo6Y2hlY2tTYW5pdHkgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvV2Vha01hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw6OmNoZWNrQ29u
c2lzdGVuY3kgY29uc3QpOgorICAgICAgICAoSlNDOjpXZWFrTWFwSW1wbDo6YXNzZXJ0QnVmZmVy
SXNFbXB0eSBjb25zdCk6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6dmFsaWRhdGVJbnN0KToKKyAgICAg
ICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cGFy
c2VBbmRDb21waWxlKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5oOgorICAg
ICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjo6dmFsaWRhdGlvbkZhaWwgY29uc3QpOgor
ICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TExJbnRHZW5lcmF0b3I6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAqIHdhc20vV2Fz
bVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpQbGFuOjp0cnlSZW1vdmVDb250ZXh0QW5k
Q2FuY2VsSWZMYXN0KToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmg6CisgICAg
ICAgICogd2FzbS9XYXNtU2VjdGlvbnMuaDoKKyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmVJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6Oldhc206OlNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQp
OgorICAgICAgICAqIHdhc20vV2FzbVdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
V29ya2xpc3Q6OmVucXVldWUpOgorICAgICAgICAqIHdhc20vanMvSlNUb1dhc20uY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAqIHdhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVu
Y3Rpb246OnByZXZpb3VzSW5zdGFuY2VPZmZzZXQgY29uc3QpOgorCiAyMDIwLTAxLTA1ICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBKYXZhU2NyaXB0
OiBJbnZhbGlkIGRhdGUgcGFyc2UgZm9yIElTTyA4NjAxIHN0cmluZ3Mgd2hlbiBubyB0aW1lem9u
ZSBnaXZlbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw5ICsx
NiwyNSBAQAogICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCiAgKi8KIAorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorCisj
aWYgQVNBTl9FTkFCTEVECisjaWZuZGVmIEpTQ19BU1NFUlRfRU5BQkxFRAorI2RlZmluZSBKU0Nf
QVNTRVJUX0VOQUJMRUQgMQorI2VuZGlmCisjZW5kaWYKKworLy8gVGhlIGJ1aWxkIGNvbmZpZyBt
YXkgb3ZlcnJpZGUgSlNDX0FTU0VSVF9FTkFCTEVEIHRvIGVuYWJsZSB0ZXN0aW5nIHdpdGgKKy8v
IGRlYnVnIEFTU0VSVHMgZm9yIFdURiBjb2RlIG9uIHJlbGVhc2UgYnVpbGRzIHdpdGhvdXQgbmVj
ZXNzYXJpbHkgZW5hYmxpbmcKKy8vIGRlYnVnIEFTU0VSVHMgZm9yIGFsbCBjbGllbnRzIG9mIEpT
Qy4KKyNpZiBkZWZpbmVkKEpTQ19BU1NFUlRfRU5BQkxFRCkgJiYgSlNDX0FTU0VSVF9FTkFCTEVE
CisjaWZuZGVmIEFTU0VSVF9FTkFCTEVECisjZGVmaW5lIEFTU0VSVF9FTkFCTEVEIDEKKyNlbmRp
ZgorI2VuZGlmCisKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0gg
JiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgi
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkuYwkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jZGVmaW5lIEFTU0VSVF9ESVNBQkxFRCAwCisjZGVmaW5lIEpTQ19BU1NFUlRfRU5B
QkxFRCAxCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBVU0UoQ0YpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTTY0QXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MTgsNyArMjYxOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50KSk7CiAgICAg
ICAgICAgICBjYWNoZUZsdXNoKHdoZXJlLCBzaXplb2YoaW50KSk7CiAgICAgICAgIH0KLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgTWVtT3BTaXplIHNpemU7CiAgICAgICAgICAgICBib29sIFY7CkBAIC0yNjMy
LDcgKzI2MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQob3BjID09IE1lbU9wX0xP
QUQpOwogICAgICAgICAgICAgQVNTRVJUKCEoaW1tMTIgJiB+MHgxZmYpKTsKICAgICAgICAgfQot
I2VuZGlmCisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgfQogCiAgICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24odm9pZCogd2hlcmUpCkBAIC0yNjUz
LDcgKzI2NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJl
LCAmaW5zbiwgc2l6ZW9mKGludCkpOwogICAgICAgICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6
ZW9mKGludCkpOwogICAgICAgICB9Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NF
UlRfRU5BQkxFRAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIERhdGFzaXplIHNmOwogICAg
ICAgICAgICAgQWRkT3Agb3A7CkBAIC0yNjY5LDcgKzI2NjksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBBU1NFUlQoIXNoaWZ0KTsKICAgICAgICAgICAgIEFTU0VSVCghKGltbTEyICYgfjB4ZmY4
KSk7CiAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hQb2ludGVyKHZvaWQqIHdoZXJlLCB2b2lkKiB2
YWx1ZVB0cikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVy
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
c3NlbWJsZXJCdWZmZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGJ1ZmZlci5lbnN1cmVT
cGFjZShyZXF1aXJlZFNwYWNlKTsKICAgICAgICAgICAgICAgICBtX3N0b3JhZ2VCdWZmZXIgPSBi
dWZmZXIubV9zdG9yYWdlLmJ1ZmZlcigpOwogICAgICAgICAgICAgICAgIG1faW5kZXggPSBidWZm
ZXIubV9pbmRleDsKLSNpZiAhZGVmaW5lZChOREVCVUcpCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVE
CiAgICAgICAgICAgICAgICAgbV9pbml0aWFsSW5kZXggPSBtX2luZGV4OwogICAgICAgICAgICAg
ICAgIG1fcmVxdWlyZWRTcGFjZSA9IHJlcXVpcmVkU3BhY2U7CiAjZW5kaWYKQEAgLTI3Niw3ICsy
NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFzc2VtYmxlckJ1ZmZlciYgbV9i
dWZmZXI7CiAgICAgICAgICAgICBjaGFyKiBtX3N0b3JhZ2VCdWZmZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCBtX2luZGV4OwotI2lmICFkZWZpbmVkKE5ERUJVRykKKyNpZiBKU0NfQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgICAgIHVuc2lnbmVkIG1faW5pdGlhbEluZGV4OwogICAgICAgICAgICAg
dW5zaWduZWQgbV9yZXF1aXJlZFNwYWNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5k
TGlua0NvZGUoCiAgICAgICAgICAgICBqdW1wc1RvTGlua1tpXS5zZXRGcm9tKHdyaXRlUHRyKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkKICAgICAgICAgICAgICAgICBBU1NFUlQo
IU1hY3JvQXNzZW1ibGVyOjpjYW5Db21wYWN0KGp1bXBzVG9MaW5rW2ldLnR5cGUoKSkpOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVT
dGFjay5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvUHJvYmVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBT
dGFjazo6U3RhY2soU3RhY2smJiBvdGhlcikKICAgICAsIG1fcGFnZXMoV1RGTW92ZShvdGhlci5t
X3BhZ2VzKSkKIHsKICAgICBtX3NhdmVkU3RhY2tQb2ludGVyID0gb3RoZXIubV9zYXZlZFN0YWNr
UG9pbnRlcjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAg
ICAgb3RoZXIubV9pc1ZhbGlkID0gZmFsc2U7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1dyaXRlc1RvRmx1
c2goKTsKICAgICB2b2lkIGZsdXNoV3JpdGVzKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV9pc1Zh
bGlkOyB9CiAjZW5kaWYKIApAQCAtMjExLDcgKzIxMSw3IEBAIHByaXZhdGU6CiAgICAgU3RhY2tC
b3VuZHMgbV9zdGFja0JvdW5kczsKICAgICBIYXNoTWFwPHZvaWQqLCBzdGQ6OnVuaXF1ZV9wdHI8
UGFnZT4+IG1fcGFnZXM7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENv
bnN0YW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgVmVjdG9yPE92ZXJyaWRlPiYgZm9yVmFsdWUgPQogICAgICAgICAgICAgICAgIG92
ZXJyaWRlcy5hZGQodmFsdWUsIFZlY3RvcjxPdmVycmlkZT4oKSkuaXRlcmF0b3ItPnZhbHVlOwog
Ci0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgaWYgKEpT
Q19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgT3ZlcnJpZGUm
IG90aGVyT3ZlcnJpZGUgOiBmb3JWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChvdGhlck92ZXJyaWRlLCBvdGhlck92ZXJyaWRlLmJsb2NrICE9IG92ZXJyaWRlLmJsb2Nr
KTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNMb3dlclRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9JbmRleFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCi0jaWYgQVNT
RVJUX0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBF
X1dBUk5JTkdTX0JFR0lOCiAjZW5kaWYKIApAQCAtMzY4OCw3ICszNjg4LDcgQEAgdm9pZCBsb3dl
clRvQWlyKFByb2NlZHVyZSYgcHJvY2VkdXJlKQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9S
RVRVUk5fVFlQRV9XQVJOSU5HU19FTkQKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgx
LDcgKzgxLDcgQEAgTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlOjpNZQogICAg
ICwgbV9yYW5nZShyYW5nZSkKICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQogewotICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewog
ICAgICAgICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBMb2FkOgogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMDYsNyArMTA2LDcgQEAgTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlKE1lbW9yeVZhbHVlOjpNZQogTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKE1lbW9yeVZhbHVl
OjpNZW1vcnlWYWx1ZUxvYWRJbXBsaWVkLCBLaW5kIGtpbmQsIE9yaWdpbiBvcmlnaW4sIFZhbHVl
KiBwb2ludGVyLCBNZW1vcnlWYWx1ZTo6T2Zmc2V0VHlwZSBvZmZzZXQsIEhlYXBSYW5nZSByYW5n
ZSwgSGVhcFJhbmdlIGZlbmNlUmFuZ2UpCiAgICAgOiBNZW1vcnlWYWx1ZShraW5kLCBJbnQzMiwg
b3JpZ2luLCBwb2ludGVyLCBvZmZzZXQsIHJhbmdlLCBmZW5jZVJhbmdlKQogewotICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAg
ICBzd2l0Y2ggKGtpbmQub3Bjb2RlKCkpIHsKICAgICAgICAgY2FzZSBMb2FkOFo6CiAgICAgICAg
IGNhc2UgTG9hZDhTOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQK
IElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTM3NSw3ICsz
NzUsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3BjCiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5B
QkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgIkIzQ29tbW9uLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0j
aWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVS
Tl9UWVBFX1dBUk5JTkdTX0JFR0lOCiAjZW5kaWYKIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6QjMKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVf
UkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVHlwZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGVNYXAuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVHlwZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLSNpZiBBU1NF
UlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVf
V0FSTklOR1NfQkVHSU4KICNlbmRpZgogCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlND
X0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXaWR0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQjNCYW5rLmgiCiAjaW5jbHVkZSAiQjNUeXBlLmgiCiAK
LSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVU
VVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRpZgogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMwogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9S
RV9SRVRVUk5fVFlQRV9XQVJOSU5HU19FTkQKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNB
bmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw3ICsyODYs
NyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhCiAgICAgICAgIGRh
dGEuc3BpbGxTbG90ID0gbV9jb2RlLmFkZFN0YWNrU2xvdCg4LCBTdGFja1Nsb3RLaW5kOjpTcGls
bCk7CiAgICAgICAgIGRhdGEucmVnID0gUmVnKCk7CiAgICAgICAgIG1fbWFwW3RtcF0gPSBkYXRh
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
bV9hbGxUbXBzW3RtcC5iYW5rKCldLmFwcGVuZCh0bXApOwogI2VuZGlmCiAgICAgfTsKQEAgLTMy
NCw3ICszMjQsNyBAQCB2b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBhCiAg
ICAgbG93ZXJTdGFja0FyZ3MobV9jb2RlKTsKIAogICAgIC8vIFZlcmlmeSBub25lIG9mIHRoZXNl
IHBhc3NlcyBhZGQgYW55IHRtcHMuCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NF
UlRfRU5BQkxFRAogICAgIGZvckVhY2hCYW5rKFsmXSAoQmFuayBiYW5rKSB7CiAgICAgICAgIEFT
U0VSVChtX2FsbFRtcHNbYmFua10uc2l6ZSgpIC0gbV9yZWdpc3RlcnNbYmFua10uc2l6ZSgpID09
IG1fY29kZS5udW1UbXBzKGJhbmspKTsKICAgICB9KTsKQEAgLTQxNyw3ICs0MTcsNyBAQCB2b2lk
IEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyCiAgICAgICAgIH0KIAogICAgICAg
ICBmb3JFYWNoQmFuayhbJl0gKEJhbmsgYmFuaykgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGV2ZXJ5dGhp
bmcgaXMgc3BpbGxlZCBhdCBibG9jayBib3VuZGFyaWVzLiBXZSBkbyB0aGlzIGFmdGVyIHdlIHBy
b2Nlc3MgZWFjaCBibG9jawogICAgICAgICAgICAgLy8gc28gd2UgZG9uJ3QgaGF2ZSB0byB3YWxr
IGFsbCBUbXBzLCBzaW5jZSAjVG1wcyA+PiAjQXZhaWxhYmxlIHJlZ3MuIEluc3RlYWQsIHdlIHdh
bGsgdGhlIHJlZ2lzdGVyIGZpbGUgYXQKICAgICAgICAgICAgIC8vIGVhY2ggYmxvY2sgYm91bmRh
cnkgYW5kIGNsZWFyIGVudHJpZXMgaW4gdGhpcyBtYXAuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRl
UmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNr
QW5kR2VuZXJhdGVDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0
ZToKIAogICAgIFRtcE1hcDxUbXBEYXRhPiBtX21hcDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBWZWN0b3I8VG1wPiBtX2FsbFRtcHNbbnVtQmFu
a3NdOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxs
b2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3Jpbmcu
Y3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDcgKzE2Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaGFzQmVlblNpbXBsaWZpZWQo
SW5kZXhUeXBlIHRtcEluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgaWYgKCEh
bV9jb2FsZXNjZWRUbXBzW3RtcEluZGV4XSkKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0QWxp
YXModG1wSW5kZXgpICE9IHRtcEluZGV4KTsKICAgICAgICAgfQpAQCAtNjQ4LDcgKzY0OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gYWRkZWQgdG8gdGhlIHNlbGVjdCBzdGFjaywgaXQncyBub3Qg
b24gZWl0aGVyIGxpc3QsIGJ1dCBvbmx5IG9uIHRoZSBzZWxlY3Qgc3RhY2suCiAgICAgICAgIC8v
IE9uY2Ugb24gdGhlIHNlbGVjdCBzdGFjaywgbG9naWNhbGx5LCBpdCdzIG5vIGxvbmdlciBpbiB0
aGUgaW50ZXJmZXJlbmNlIGdyYXBoLgogICAgICAgICBhdXRvIGFzc2VydEludmFyaWFudHMgPSBb
Jl0gKCkgewotICAgICAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgICAgIGlm
ICghSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGlmICghc2hvdWxkVmFsaWRhdGVJUkF0RWFjaFBoYXNlKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNjg5LDcgKzY4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSB3aGlsZSAoY2hhbmdlZCk7CiAKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
KyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgQVNTRVJUKCFt
X3NpbXBsaWZ5V29ya2xpc3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVChtX3NwaWxsV29y
a2xpc3QuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIEluZGV4VHlwZSBmaXJzdE5vblJlZ0luZGV4
ID0gbV9sYXN0UHJlY29sb3JlZFJlZ2lzdGVySW5kZXggKyAxOwpAQCAtNzI3LDcgKzcyNyw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgICAgIC8vIE5vIGNvYWxlc2Npbmcgd2lsbCByZW1vdmUgdGhl
IGludGVyZmVyZW5jZS4KICAgICAgICAgICAgIG1vdmVJbmRleCA9IFVJTlRfTUFYOwogCi0gICAg
ICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgaWYgKEpTQ19BU1NF
UlRfRU5BQkxFRCkgewogICAgICAgICAgICAgICAgIGlmIChpc1ByZWNvbG9yZWQodikpCiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChpc1ByZWNvbG9yZWQodSkpOwogICAgICAgICAgICAgfQpA
QCAtOTEwLDcgKzkxMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIGlmICh0cmFjZURlYnVn
KQogICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiTW92aW5nIHRtcCAiLCB0bXBJbmRleCwgIiBm
cm9tIHNwaWxsIGxpc3QgdG8gc2ltcGxpZnkgbGlzdCBiZWNhdXNlIGl0J3MgZGVncmVlIGlzIG5v
dyBsZXNzIHRoYW4gayIpOwogCi0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKKyAg
ICAgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgICAgICAgICAgQVNTRVJU
KG1fdW5zcGlsbGFibGVUbXBzLmNvbnRhaW5zKHRtcEluZGV4KSB8fCBtX3NwaWxsV29ya2xpc3Qu
Y29udGFpbnModG1wSW5kZXgpKTsKICAgICAgICAgICAgIG1fc3BpbGxXb3JrbGlzdC5xdWlja0Ns
ZWFyKHRtcEluZGV4KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
cmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBcmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiRlBS
SW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lm
ICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgog
I2VuZGlmCiAKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgQXJnCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0jaWYgQVNTRVJUX0RJU0FCTEVE
CisjaWYgIUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VO
RAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkIzV2lkdGguaCIKICNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0Nf
QVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgogI2VuZGlm
CiAKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlND
OjpCMzo6QWkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNp
ZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAj
ZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewogCiBjbGFzcyBQcm9jZWR1cmU7CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlND
X0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRp
ZgogCkBAIC0zOTIsNyArMzkyLDcgQEAgcHJpdmF0ZToKIAogfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5BQkxF
RAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5LDEzICsxMzksMTMgQEAgVmVjdG9yPEluc3Q+IGVt
aXRTaHVmZmxlKAogICAgICAgICB9KTsKICAgICAKICAgICAvLyBGaXJzdCB2YWxpZGF0ZSB0aGF0
IHRoaXMgaXMgdGhlIGtpbmQgb2Ygc2h1ZmZsZSB0aGF0IHdlIGtub3cgaG93IHRvIGRlYWwgd2l0
aC4KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgZm9y
IChjb25zdCBTaHVmZmxlUGFpciYgcGFpciA6IHBhaXJzKSB7CiAgICAgICAgIEFTU0VSVChwYWly
LnNyYygpLmlzQmFuayhiYW5rKSk7CiAgICAgICAgIEFTU0VSVChwYWlyLmRzdCgpLmlzQmFuayhi
YW5rKSk7CiAgICAgICAgIEFTU0VSVChwYWlyLmRzdCgpLmlzVG1wKCkgfHwgcGFpci5kc3QoKS5p
c01lbW9yeSgpKTsKICAgICB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8v
IEpTQ19BU1NFUlRfRU5BQkxFRAogCiAgICAgLy8gVGhlcmUgYXJlIHR3byBwb3NzaWJsZSBraW5k
cyBvZiBvcGVyYXRpb25zIHRoYXQgd2Ugd2lsbCBkbzoKICAgICAvLwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdQogICAgIG1ldGFkYXRhLm92ZXJy
aWRlTmFtZShuYW1lKTsKICAgICBtZXRhZGF0YS5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKIAotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEIHx8IE9wdGlvbnM6OnZh
bGlkYXRlQnl0ZWNvZGUoKSkgeworICAgIGlmIChVTkxJS0VMWShKU0NfQVNTRVJUX0VOQUJMRUQg
fHwgT3B0aW9uczo6dmFsaWRhdGVCeXRlY29kZSgpKSkgewogICAgICAgICBKU1RleHRQb3NpdGlv
biBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lRnJvbVBhcnNlcjsKICAgICAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7CiAgICAgICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBpc0J1
aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBUeXBlZEFycmF5VHlwZSBBY2Nlc3NDYXNlOjp0
b1R5cGVkQXJyYXlUCiAgICAgfQogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19B
U1NFUlRfRU5BQkxFRAogdm9pZCBBY2Nlc3NDYXNlOjpjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghKHJlcXVpcmVzSW50
MzJQcm9wZXJ0eUNoZWNrKCkgJiYgcmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkpKTsKQEAg
LTE5OTMsNyArMTk5Myw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1
Y3QKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVxdWlyZXNJZGVudGlmaWVyTmFtZU1hdGNoKCkp
OwogICAgIH0KIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QWNjZXNzQ2FzZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5LDcgQEAg
cHVibGljOgogICAgIEJveDxJZGVudGlmaWVyPiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyOyB9CiAKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJlU3R1YkluZm8mKTsK
ICNlbHNlCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koU3RydWN0dXJl
U3R1YkluZm8mKSB7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
VmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxWYXJpYW50LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzEx
NSw3IEBAIENhbGxWYXJpYW50TGlzdCB2YXJpYW50TGlzdFdpdGhWYXJpYW50KGMKICAgICBpZiAo
ISF2YXJpYW50VG9BZGQpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFyaWFudFRvQWRkKTsKICAg
ICAKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlmIChKU0NfQVNTRVJUX0VOQUJM
RUQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsr
aSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gaSArIDE7IGogPCByZXN1bHQuc2l6
ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldICE9IHJlc3VsdFtqXSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4Myw3ICsxNzgzLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbQogICAgIE9wQ2F0Y2ggb3AgPSBpbnN0cnVjdGlv
bi0+YXM8T3BDYXRjaD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IG9wLm1ldGFkYXRhKHRoaXMp
OwogICAgIGlmICghIW1ldGFkYXRhLm1fYnVmZmVyKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CiAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgYXV0byogcmFy
ZURhdGEgPSBtX3JhcmVEYXRhLmdldCgpOwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChmb3VuZCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCwxMCArNTgsMTAgQEAgdm9pZCBDb2RlQmxvY2tIYXNoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdQogewogICAgIHN0ZDo6YXJyYXk8Y2hhciwgNz4gYnVmZmVyID0gaW50ZWdl
clRvU2l4Q2hhcmFjdGVySGFzaFN0cmluZyhtX2hhc2gpOwogICAgIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBDb2RlQmxvY2tIYXNoIHJlY29tcHV0
ZShidWZmZXIuZGF0YSgpKTsKICAgICBBU1NFUlQocmVjb21wdXRlID09ICp0aGlzKTsKLSNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAgICAg
CiAgICAgb3V0LnByaW50KGJ1ZmZlci5kYXRhKCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBTdHJ1Y3R1
cmVTdHViSW5mbzo6c2V0Q2FjaGVUeXBlKENhYwogICAgIG1fY2FjaGVUeXBlID0gbmV3Q2FjaGVU
eXBlOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAog
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6Y2hlY2tDb25zaXN0ZW5jeSgpCiB7CiAgICAgaWYgKHRo
aXNWYWx1ZUlzSW5UaGlzR1BSKCkpIHsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFN0cnVjdHVy
ZVN0dWJJbmZvOjpjaGVja0NvbnNpc3RlbmN5CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhhc0Nv
bnN0YW50SWRlbnRpZmllcik7CiAgICAgfQogfQotI2VuZGlmCisjZW5kaWYgLy8gSlNDX0FTU0VS
VF9FTkFCTEVECiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHRoaXNWYWx1ZUlzSW5UaGlzR1BSKCkgY29uc3QgeyByZXR1cm4gYWNjZXNzVHlwZSA9PSBB
Y2Nlc3NUeXBlOjpHZXRCeUlkV2l0aFRoaXM7IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKICNlbHNl
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSB7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQxLDggKzk0MSw4IEBAIFJl
Z2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKIAogUmVnaXN0ZXJJRCogRnVu
Y3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG1faWRlbnQgPT0g
Z2VuZXJhdG9yLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXNzZXJ0UHJpdmF0
ZU5hbWUoKSkpIHsKLSAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICBpZiAoIUpTQ19B
U1NFUlRfRU5BQkxFRCkgeworICAgICAgICBpZiAoVU5MSUtFTFkobV9pZGVudCA9PSBnZW5lcmF0
b3Iudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hc3NlcnRQcml2YXRlTmFtZSgp
KSkKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVySUQuaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQoKQogICAgICAgICAgICAgOiBtX3JlZkNvdW50KDApCiAgICAgICAgICAgICAs
IG1faXNUZW1wb3JhcnkoZmFsc2UpCi0jaWZuZGVmIE5ERUJVRworI2lmIEpTQ19BU1NFUlRfRU5B
QkxFRAogICAgICAgICAgICAgLCBtX2RpZFNldEluZGV4KGZhbHNlKQogI2VuZGlmCiAgICAgICAg
IHsKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVm
Q291bnQoMCkKICAgICAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVy
KQogICAgICAgICAgICAgLCBtX2lzVGVtcG9yYXJ5KGZhbHNlKQotI2lmbmRlZiBOREVCVUcKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICwgbV9kaWRTZXRJbmRleCh0cnVlKQog
I2VuZGlmCiAgICAgICAgIHsKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICA6IG1fcmVmQ291bnQoMCkKICAgICAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIo
VmlydHVhbFJlZ2lzdGVyKGluZGV4KSkKICAgICAgICAgICAgICwgbV9pc1RlbXBvcmFyeShmYWxz
ZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAs
IG1fZGlkU2V0SW5kZXgodHJ1ZSkKICNlbmRpZgogICAgICAgICB7CkBAIC03MSw3ICs3MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgc2V0SW5kZXgoVmlydHVhbFJlZ2lzdGVy
IGluZGV4KQogICAgICAgICB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEpTQ19BU1NFUlRfRU5BQkxF
RAogICAgICAgICAgICAgbV9kaWRTZXRJbmRleCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAg
IG1fdmlydHVhbFJlZ2lzdGVyID0gaW5kZXg7CkBAIC0xMjAsNyArMTIwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGludCBtX3JlZkNvdW50OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
bV92aXJ0dWFsUmVnaXN0ZXI7CiAgICAgICAgIGJvb2wgbV9pc1RlbXBvcmFyeTsKLSNpZm5kZWYg
TkRFQlVHCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIGJvb2wgbV9kaWRTZXRJbmRl
eDsKICNlbmRpZgogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwxNCArNDUxLDE0
IEBAIHZvaWQgRGVidWdnZXI6OnJlbW92ZUJyZWFrcG9pbnQoQnJlYWtwb2kKICAgICB0b2dnbGVC
cmVha3BvaW50KCpicmVha3BvaW50LCBCcmVha3BvaW50RGlzYWJsZWQpOwogCiAgICAgQnJlYWtw
b2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpicmVha3NJdC0+dmFsdWU7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsK
ICAgICBmb3IgKEJyZWFrcG9pbnQqIGN1cnJlbnQgPSBicmVha3BvaW50cy5oZWFkKCk7IGN1cnJl
bnQgJiYgIWZvdW5kOyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7CiAgICAgICAgIGlmIChj
dXJyZW50LT5pZCA9PSBicmVha3BvaW50LT5pZCkKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
ICAgICB9CiAgICAgQVNTRVJUKGZvdW5kKTsKLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRf
RU5BQkxFRAogCiAgICAgbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQucmVtb3ZlKGlkSXQpOwog
ICAgIGJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckV2YWxFbmFibGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyRXZhbEVuYWJsZXIuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyRXZh
bEVuYWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAg
ICBEZWJ1Z2dlckV2YWxFbmFibGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1vZGUg
bW9kZSA9IE1vZGU6OkV2YWxPbkN1cnJlbnRDYWxsRnJhbWUpCiAgICAgICAgIDogbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgLCBtX21vZGUobW9kZSkKICNlbmRpZgogICAgICAgICAKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ldmFsV2FzRGlzYWJsZWQgPSAhZ2xv
YmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpOwogICAgICAgICAgICAgaWYgKG1fZXZhbFdhc0Rpc2Fi
bGVkKQogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0RXZhbEVuYWJsZWQodHJ1ZSwg
Z2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSk7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgaWYgKG1fbW9kZSA9
PSBNb2RlOjpFdmFsT25HbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50cnkpCiAgICAgICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50cnkoZ2xvYmFsT2Jq
ZWN0KTsKICNlbmRpZgpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3Q7CiAgICAgICAgICAgICBp
ZiAobV9ldmFsV2FzRGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRF
dmFsRW5hYmxlZChmYWxzZSwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2Uo
KSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBNb2RlOjpFdmFsT25HbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50
cnkpCiAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRHbG9iYWxPYmplY3RBdERlYnVn
Z2VyRW50cnkobnVsbHB0cik7CiAjZW5kaWYKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBKU0dsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAgICAgYm9vbCBtX2V2
YWxXYXNEaXNhYmxlZCB7IGZhbHNlIH07Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19B
U1NFUlRfRU5BQkxFRAogICAgIERlYnVnZ2VyRXZhbEVuYWJsZXI6Ok1vZGUgbV9tb2RlOwogI2Vu
ZGlmCiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Mzc4LDcgKzQzNzgsNyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgQWJzdHJhY3RWYWx1ZTo6VHJhbnNpdGlvbnNPYnNlcnZl
ciB0cmFuc2l0aW9uc09ic2VydmVyKHZlY3Rvcik7CiAgICAgZm9yQWxsVmFsdWVzKGNsb2JiZXJM
aW1pdCwgdHJhbnNpdGlvbnNPYnNlcnZlcik7CiAgICAgCi0gICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gY2xhaW0gdG8gYmUgaW4gYSBjbG9iYmVyZWQgc3RhdGUgYmVjYXVzZSBub25lIG9m
IHRoZSBUcmFuc2l0aW9uOjpwcmV2aW91cyBzdHJ1Y3R1cmVzIGFyZSB3YXRjaGFibGUuCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHZlY3Rvci5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBB
U1NFUlQoIXZlY3RvcltpXS5wcmV2aW91cy0+ZGZnU2hvdWxkV2F0Y2goKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw3ICs0NDEsNyBAQCBGaWx0cmF0aW9uUmVzdWx0IEFi
c3RyYWN0VmFsdWU6Om5vcm1hbGl6CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKIHZvaWQgQWJzdHJhY3RWYWx1ZTo6
Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CiB7CiAgICAgaWYgKCEobV90eXBlICYgU3BlY0NlbGwp
KSB7CkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjphc3NlcnRJc1JlZ2lz
dGVyZWQoRwogewogICAgIG1fc3RydWN0dXJlLmFzc2VydElzUmVnaXN0ZXJlZChncmFwaCk7CiB9
Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxF
RAogCiBSZXN1bHRUeXBlIEFic3RyYWN0VmFsdWU6OnJlc3VsdFR5cGUoKSBjb25zdAogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDcgQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgICAgICBpZiAob3RoZXIuaXNDbGVhcigpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFC
TEVECiAgICAgICAgIEFic3RyYWN0VmFsdWUgb2xkTWUgPSAqdGhpczsKICNlbmRpZgogICAgICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwpAQCAtNDMxLDEyICs0MzEsMTIgQEAgc3RydWN0IEFic3Ry
YWN0VmFsdWUgewogICAgICAgICAgICAgfHwgIWFycmF5TW9kZXNBcmVDbGVhck9yVG9wKG1fYXJy
YXlNb2Rlcyk7CiAgICAgfQogICAgIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeSgpIGNvbnN0IHsgfQotICAgIHZvaWQgYXNzZXJ0SXNSZWdpc3RlcmVkKEdy
YXBoJikgY29uc3QgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0OwogICAgIHZvaWQgYXNz
ZXJ0SXNSZWdpc3RlcmVkKEdyYXBoJikgY29uc3Q7CisjZWxzZQorICAgIHZvaWQgY2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0IHsgfQorICAgIHZvaWQgYXNzZXJ0SXNSZWdpc3RlcmVkKEdyYXBoJikg
Y29uc3QgeyB9CiAjZW5kaWYKIAogICAgIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTW9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIGlubGluZSBib29sIGRvZXNPdmVyZmxvdyhBcml0
aDo6TW9kZSBtb2QKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEFyaXRoOjpOb3RTZXQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lm
ICFKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBj
YXNlIEFyaXRoOjpVbmNoZWNrZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcg
QEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jayhCeXRlY29kZUluZGV4IGJ5dAogICAgICwgaW50ZXJz
ZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKHRydWUpCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKICAg
ICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBK
U0NfQVNTRVJUX0VOQUJMRUQKICAgICAsIGlzTGlua2VkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBp
c1JlYWNoYWJsZShmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHN0cnVj
dCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAKICAgICB2b2lkIGRpZExp
bmsoKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVE
CiAgICAgICAgIGlzTGlua2VkID0gdHJ1ZTsKICNlbmRpZgogICAgIH0KQEAgLTE5Nyw3ICsxOTcs
NyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgYm9vbCBp
c09TUlRhcmdldDsKICAgICBib29sIGlzQ2F0Y2hFbnRyeXBvaW50OwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5k
aWYKICAgICBib29sIGlzUmVhY2hhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgICAgIGlm
IChKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICAgICAmJiBtX3N0YXRlLmRpZENsb2Ji
ZXJPckZvbGRlZCgpICE9IHdyaXRlc092ZXJsYXAobV9ncmFwaCwgbm9kZSwgSlNDZWxsX3N0cnVj
dHVyZUlEKSkKICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbm9kZSwgdG9DU3Ry
aW5nKCJBSS1jbG9iYmVyaXplIGRpc2FncmVlbWVudDsgQUkgc2F5cyAiLCBtX3N0YXRlLmNsb2Ji
ZXJTdGF0ZSgpLCAiIHdoaWxlIGNsb2JiZXJpemUgc2F5cyAiLCB3cml0ZVNldChtX2dyYXBoLCBu
b2RlKSkuZGF0YSgpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIGlubGluZSBib29s
IHNob3VsZER1bXBHcmFwaEF0RWFjaFBoYXNlKEMKIAogaW5saW5lIGJvb2wgdmFsaWRhdGlvbkVu
YWJsZWQoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQK
ICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIE9wdGlvbnM6OnZhbGlkYXRlR3Jh
cGgoKSB8fCBPcHRpb25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgQ29tbW9uRGF0YTo6ZmluYWxpemVDYXRj
aEVudHJ5cG9pbnQKICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50cy5iZWdpbigpLCBjYXRj
aEVudHJ5cG9pbnRzLmVuZCgpLAogICAgICAgICBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0
YSYgYSwgY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYikgeyByZXR1cm4gYS5ieXRlY29kZUlu
ZGV4IDwgYi5ieXRlY29kZUluZGV4OyB9KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBK
U0NfQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICsgMSA8IGNhdGNo
RW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIEFTU0VSVChjYXRjaEVudHJ5cG9pbnRz
W2ldLmJ5dGVjb2RlSW5kZXggPD0gY2F0Y2hFbnRyeXBvaW50c1tpICsgMV0uYnl0ZWNvZGVJbmRl
eCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdh
dGNocG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
ZXNpcmVkV2F0Y2hwb2ludHMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDcgKzExMyw3IEBAIHN0cnVjdCBBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRBZGFwdG8KIAog
dGVtcGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludFNldFR5cGUsIHR5cGVuYW1lIEFkYXB0b3IgPSBT
ZXRQb2ludGVyQWRhcHRvcjxXYXRjaHBvaW50U2V0VHlwZT4+CiBjbGFzcyBHZW5lcmljRGVzaXJl
ZFdhdGNocG9pbnRzIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFC
TEVECiAgICAgdHlwZWRlZiBIYXNoTWFwPFdhdGNocG9pbnRTZXRUeXBlLCBib29sPiBTdGF0ZU1h
cDsKICNlbmRpZgogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRGF0YVZpZXdTZXQ6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICBjYXNlIEFycmF5UHVzaDoKICAgICBjYXNlIEFycmF5UG9wOgogICAgIGNh
c2UgUHVzaFdpdGhTY29wZToKQEAgLTM5OSwxMSArMzk5LDExIEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFZhbHVlUG93OgogICAgIGNhc2UgVmFsdWVC
aXROb3Q6CiAgICAgY2FzZSBWYWx1ZU5lZ2F0ZToKLSNlbHNlCi0gICAgLy8gU2VlIGNvbW1lbnQg
YXQgdGhlIHRvcCBmb3Igd2h5IGJlIGRlZmF1bHQgZm9yIGFsbCBub2RlcyBzaG91bGQgYmUgdG8K
KyNlbHNlIC8vIG5vdCBKU0NfQVNTRVJUX0VOQUJMRUQKKyAgICAvLyBTZWUgY29tbWVudCBhdCB0
aGUgdG9wIGZvciB3aHkgdGhlIGRlZmF1bHQgZm9yIGFsbCBub2RlcyBzaG91bGQgYmUgdG8KICAg
ICAvLyByZXR1cm4gdHJ1ZS4KICAgICBkZWZhdWx0OgotI2VuZGlmCisjZW5kaWYgLy8gbm90IEpT
Q19BU1NFUlRfRU5BQkxFRAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgQ2FsbFN0
cmluZ0NvbnN0cnVjdG9yOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
KHVzZUtpbmQgPj0gMCAmJiB1c2VLaW5kIDwgTGFzdFVzZUtpbmQpOwogICAgICAgICBzdGF0aWNf
YXNzZXJ0KChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KExhc3RVc2VLaW5kKSA8PCAyKSA8IChzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IHNoaWZ0KCkpLCAiV2UgcmVseSBvbiB0aGlzIGJlaW5n
IHRydWUgdG8gbm90IGNsb2JiZXIgdGhlIG5vZGUgcG9pbnRlci4iKTsKICAgICAgICAgdWludHB0
cl90IHJlc3VsdCA9IHNoaWZ0ZWRWYWx1ZSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHVzZUtp
bmQpIDw8IDIpIHwgKERGRzo6ZG9lc0tpbGwoa2lsbFN0YXR1cykgPDwgMSkgfCBzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KERGRzo6aXNQcm92ZWQocHJvb2ZTdGF0dXMpKTsKLSAgICAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAg
ICAgICAgICAgdW5pb24gVSB7CiAgICAgICAgICAgICAgICAgVSgpIHsgd29yZCA9IDA7IH0KICAg
ICAgICAgICAgICAgICB1aW50cHRyX3Qgd29yZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQz
OCw5ICsyNDM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
LQotCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAg
ICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZv
cmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRB
cmd1bWVudERlZmluaXRlbHk6CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnRNYXliZToKQEAgLTI1
MzAsMTAgKzI1MjgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2lu
dDoKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAgICBi
cmVhazsKLSNlbHNlCisjZWxzZSAvLyBub3QgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKLSNlbmRpZgorI2VuZGlmIC8vIG5vdCBKU0NfQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUz
LDcgQEAgdm9pZCBKSVRDb2RlOjpmaW5hbGl6ZU9TUkVudHJ5cG9pbnRzKCkKICAgICB9OwogICAg
IHN0ZDo6c29ydChvc3JFbnRyeS5iZWdpbigpLCBvc3JFbnRyeS5lbmQoKSwgY29tcGFyYXRvcik7
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgYXV0
byB2ZXJpZnlJc1NvcnRlZCA9IFsmXSAoYXV0byYgb3NyVmVjdG9yKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgKyAxIDwgb3NyVmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICAg
ICAgQVNTRVJUKG9zclZlY3RvcltpXS5tX2J5dGVjb2RlSW5kZXggPD0gb3NyVmVjdG9yW2kgKyAx
XS5tX2J5dGVjb2RlSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNyArNDk0LDcgQEAg
cHVibGljOgogICAgICAgICBmb3IgKE5vZGUqIGlkZW50aWZpZXIgOiB0b0VzY2FwZSkKICAgICAg
ICAgICAgIGVzY2FwZUFsbG9jYXRpb24oaWRlbnRpZmllcik7CiAKLSAgICAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fYWxsb2NhdGlvbnMpCiAgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChlbnRyeSwgZW50cnkudmFsdWUuaXNFc2NhcGVkQWxsb2NhdGlv
bigpIHx8IG90aGVyLm1fYWxsb2NhdGlvbnMuY29udGFpbnMoZW50cnkua2V5KSk7CiAgICAgICAg
IH0KQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFzc2VydElzVmFsaWQo
KSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgaWYg
KCFKU0NfQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8g
UG9pbnRlcnMgc2hvdWxkIHBvaW50IHRvIGFuIGFjdHVhbCBhbGxvY2F0aW9uCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNv
bnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBHZXRTdGFj
aywgbm9kZS0+b3JpZ2luLAogICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgu
bV9zdGFja0FjY2Vzc0RhdGEuYWRkKHZhcmlhYmxlLT5vcGVyYW5kKCksIHZhcmlhYmxlLT5mbHVz
aEZvcm1hdCgpKSkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkK
KyAgICAgICAgICAgICAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fYXJndW1lbnRHZXR0ZXJzLmFkZChjaGlsZE5vZGUpOwogICAgICAgICAg
ICAgICAgICAgICBtX2FyZ3VtZW50TWFwcGluZy5hZGQobm9kZSwgY2hpbGROb2RlKTsKICAgICAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9h
cmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9h
cmQuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
Y29yZUJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgYXNzZXJ0Q2xlYXIoKQogICAgIHsKLSAgICAgICAgaWYgKEFTU0VSVF9ESVNB
QkxFRCkKKyAgICAgICAgaWYgKCFKU0NfQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIAogICAgICAgICAvLyBGb3IgZXZlcnkgZW50cnkgaW4gdGhlIHVzZWQgbGlz
dCB0aGUgdXNlIGNvdW50IG9mIHRoZSB2aXJ0dWFsIHJlZ2lzdGVyIHNob3VsZCBiZSB6ZXJvLCBv
ciBtYXgsIGR1ZSB0byBpdCBiZWluZyBhIHByZXNlcnZlZCBsb2NhbC4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGpp
dC0+bV9vcmlnaW4gPSBtX29yaWdpbjsKICAgICAgICAgZ2VuZXJhdGVJbnRlcm5hbChqaXQpOwog
ICAgICAgICBqaXQtPm1fb3V0T2ZMaW5lU3RyZWFtSW5kZXggPSBXVEY6Om51bGxvcHQ7Ci0gICAg
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVE
KQogICAgICAgICAgICAgaml0LT5tX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHU2xvd1BhdGhHZW5l
cmF0b3JGZWxsVGhyb3VnaCk7CiAgICAgfQogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsYWJl
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWw7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQ2VsbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDogewogICAgICAgICBH
UFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxF
RCkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2tDZWxsID0gbV9qaXQu
YnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzKGdwcikpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR0lzTm90Q2VsbCk7CiAgICAgICAgICAgICBjaGVja0NlbGwubGluaygmbV9q
aXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODg4LDcgKzE4ODgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgfQogICAgIAog
ICAgIC8vIFBlcmZvcm0gdGhlIG1vc3QgYmFzaWMgdmVyaWZpY2F0aW9uIHRoYXQgY2hpbGRyZW4g
aGF2ZSBiZWVuIHVzZWQgY29ycmVjdGx5LgotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBt
X2dlbmVyYXRpb25JbmZvKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWluZm8uYWxpdmUo
KSk7CiAgICAgfQpAQCAtMTA5NTgsNyArMTA5NTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0QmluYXJ5U3dpdGNoU3RyCiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGF0
IHRoZSBpbnB1dCBzdHJpbmcgaXMgYSBwcmVmaXggb2YgYWxsIG9mIHRoZSBjYXNlcywKICAgICAg
ICAgLy8gc28gd2UganVzdCBjaGVjayBsZW5ndGggdG8ganVtcCB0byB0aGF0IGNhc2UuCiAgICAg
ICAgIAotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoSlNDX0FT
U0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBBU1NFUlQoY2FzZXNbYmVnaW5dLnN0cmluZy0+
bGVuZ3RoKCkgPT0gY29tbW9uQ2hhcnMpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmVnaW4gKyAxOyBpIDwgZW5kOyArK2kpCiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhc2VzW2ld
LnN0cmluZy0+bGVuZ3RoKCkgPiBjb21tb25DaGFycyk7CkBAIC0xMTk3NSw3ICsxMTk3NSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUJ1dHRlcmYKICAgICBtX2ppdC56ZXJv
RXh0ZW5kMzJUb1B0cihzaXplR1BSLCBzY3JhdGNoMSk7CiAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1
c3RlZEltbTMyKDMpLCBzY3JhdGNoMSk7CiAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKHNp
emVvZihJbmRleGluZ0hlYWRlcikpLCBzY3JhdGNoMSwgc2NyYXRjaDIpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBkaWROb3RPdmVyZmxvdyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHNjcmF0Y2gyLCBzaXplR1BSKTsKICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oVW5j
aGVja2VkT3ZlcmZsb3cpOwogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1faml0KTsKQEAgLTEz
NDgyLDE0ICsxMzQ4MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVO
ZXdBCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBpZiAoc2hv
dWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlKQogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNpemVHUFIs
IFRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSkpOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBlbHNlIHsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbGVuZ3RoSXNXaXRoaW5MaW1pdHM7CiAgICAg
ICAgIGxlbmd0aElzV2l0aGluTGltaXRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93LCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNU
SU9OX0xFTkdUSCkpOwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oVW5jaGVja2VkT3Zl
cmZsb3cpOwogICAgICAgICBsZW5ndGhJc1dpdGhpbkxpbWl0cy5saW5rKCZtX2ppdCk7CiAgICAg
fQotI2VuZGlmCisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAKICAgICAvLyBXZSBjYW4g
dXNlIHJlc3VsdEdQUiBhcyBhIHNjcmF0Y2ggcmlnaHQgbm93LgogICAgIGVtaXRBbGxvY2F0ZUJ1
dHRlcmZseShzdG9yYWdlR1BSLCBzaXplR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgcmVz
dWx0R1BSLCBzbG93Q2FzZXMpOwpAQCAtMTQwMTAsNyArMTQwMTAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoSlNDX0FTU0VSVF9F
TkFCTEVEKSB7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBtX2ppdC5icmFu
Y2gzMigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwg
YWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR05lZ2F0aXZlU3RyaW5nTGVuZ3RoKTsKQEAgLTE0MDU0LDcgKzE0MDU0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9F
TkFCTEVEKSB7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBvayA9IG1faml0LmJyYW5jaDMy
KAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGFsbG9jYXRv
ckdQUiwgVHJ1c3RlZEltbTMyKDApKTsKICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERG
R05lZ2F0aXZlU3RyaW5nTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VS
VF9FTkFCTEVECiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJl
ZChHcmFwaCYgZ3JhcGgpIGNvbnN0CiB7CiAgICAgaWYgKGlzVG9wKCkpCkBAIC00MSw3ICs0MSw3
IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWcKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBzaXplKCk7IGktLTspCiAgICAgICAgIGdyYXBoLmFzc2VydElzUmVnaXN0ZXJl
ZChhdChpKS5nZXQoKSk7CiB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8v
IEpTQ19BU1NFUlRfRU5BQkxFRAogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNsb2Ji
ZXIoKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MCwxMCArOTAsMTAgQEAgcHVibGljOgogICAgICAgICBtX3NldC5tX3BvaW50ZXIgPSB0
b3BWYWx1ZTsKICAgICB9CiAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3Nl
cnRJc1JlZ2lzdGVyZWQoR3JhcGgmKSBjb25zdCB7IH0KLSNlbHNlCisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgdm9pZCBhc3NlcnRJc1JlZ2lzdGVyZWQoR3JhcGgmKSBjb25zdDsKKyNlbHNl
CisgICAgdm9pZCBhc3NlcnRJc1JlZ2lzdGVyZWQoR3JhcGgmKSBjb25zdCB7IH0KICNlbmRpZgog
ICAgIAogICAgIHZvaWQgY2xvYmJlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjEsNyArNDIxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICAgICAgICAgIGlmICghSlNDX0FTU0VS
VF9FTkFCTEVEKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBt
X2dyYXBoLmRvVG9DaGlsZHJlbigKICAgICAgICAgICAgICAgICAgICAgbm9kZSwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxS
ZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICBpZiAoIWJsb2NrLT5pc1JlYWNoYWJsZSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgLy8g
Rm9yY2UgdXNhZ2Ugb2YgaGlnaGVzdC1udW1iZXJlZCB2aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAg
ICAgICAgICAgICBzY29yZUJvYXJkLnNvcnRGcmVlKCk7CiAgICAgICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MSw3ICsxNTEsNyBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0Lmp1
bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0pOwogICAgICAgICAgICAgbm9FeGNlcHRpb24ubGluaygm
aml0KTsKIAotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAg
IGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KHZt
LmFkZHJlc3NPZkV4Y2VwdGlvbigpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAg
aml0LmppdEFzc2VydElzTnVsbChHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgewogCiBz
dGQ6OmF0b21pYzxpbnQ+IGNvbXBpbGVDb3VudGVyOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9p
ZCBmdGxVbnJlYWNoYWJsZSgKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQmxvY2tJbmRleCBi
bG9ja0luZGV4LCB1bnNpZ25lZCBub2RlSW5kZXgpCiB7CkBAIC0xMzEsNyArMTMxLDcgQEAgTk9f
UkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbgogICAgIGRhdGFMb2coIi5cbiIp
OwogICAgIENSQVNIKCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQK
IAogLy8gVXNpbmcgdGhpcyBpbnN0ZWFkIG9mIHR5cGVDaGVjaygpIGhlbHBzIHRvIHJlZHVjZSB0
aGUgbG9hZCBvbiBCMywgYnkgY3JlYXRpbmcKIC8vIHNpZ25pZmljYW50bHkgbGVzcyBkZWFkIGNv
ZGUuCkBAIC0xNzU2Niw3ICsxNzU2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LnN0b3Jl
MzIoCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwK
ICAgICAgICAgICAgIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7Ci0jaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1Mp
IHx8ICFBU1NFUlRfRElTQUJMRUQKKyNpZiAhVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykgfHwg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBt
X291dC5hYnNvbHV0ZSgmdm0oKS50b3BDYWxsRnJhbWUpKTsKICNlbmRpZgogICAgIH0KQEAgLTE3
NTk4LDcgKzE3NTk4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VFeGNlcHRpb25GdXp6KCkpIHsKLSNp
ZiAhVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmICFV
U0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSB8fCBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBtX291dC5hYnNvbHV0ZSgmdm0oKS50b3BD
YWxsRnJhbWUpKTsKICNlbmRpZgogICAgICAgICAgICAgbV9vdXQuY2FsbChWb2lkLCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uRXhjZXB0aW9uRnV6eiksIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCkpOwpAQCAtMTgxNzAsNyArMTgxNzAsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgQmxv
Y2tJbmRleCBibG9ja0luZGV4ID0gYmxvY2stPmluZGV4OwogICAgICAgICB1bnNpZ25lZCBub2Rl
SW5kZXggPSBub2RlID8gbm9kZS0+aW5kZXgoKSA6IFVJTlRfTUFYOwotI2lmIEFTU0VSVF9ESVNB
QkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9vdXQucGF0Y2hwb2ludChW
b2lkKS0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAgICAgIEFsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAgLTE4MTgxLDcg
KzE4MTgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+b3AoKSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAg
ICAgICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKEZUTENyYXNoKTsKICAgICAgICAgICAgIH0p
OwotI2Vsc2UKKyNlbHNlIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICBtX291dC5jYWxs
KAogICAgICAgICAgICAgVm9pZCwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGZ0bFVu
cmVhY2hhYmxlKSwKQEAgLTE4MTg5LDcgKzE4MTg5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCiAgICAgICAg
ICAgICBtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygp
KSksIG1fb3V0LmNvbnN0SW50MzIoYmxvY2tJbmRleCksCiAgICAgICAgICAgICBtX291dC5jb25z
dEludDMyKG5vZGVJbmRleCkpOwotI2VuZGlmCisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVE
CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxMSw3ICs0MTEsNyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBv
cGVyYXRpCiAgICAgICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dCwgYXJyYXlJbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlc1tpXSkpOwogICAgICAgICAgICAg
fQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAg
ICAgICAgLy8gV2UgYXZvaWQgdGhpcyBPKG5eMikgbG9vcCB3aGVuIGFzc2VydHMgYXJlIGRpc2Fi
bGVkLCBidXQgdGhlIGNvbmRpdGlvbiBjaGVja2VkIGhlcmUKICAgICAgICAgICAgIC8vIG11c3Qg
aG9sZCB0byBlbnN1cmUgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ug
b2YgaG93IHdlIGFsbG9jYXRlIHRoZSBhcnJheS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
dGFyZ2V0SW5kZXggPSAwOyB0YXJnZXRJbmRleCA8IGFycmF5U2l6ZTsgKyt0YXJnZXRJbmRleCkg
ewpAQCAtNDM0LDcgKzQzNCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZvdW5kKTsK
ICAgICAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogICAg
ICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCBl
eHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIEpTQXJyYXkq
IHJlc3VsdCA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgc3RydWN0dXJlLCBhcnJheVNpemUpOwog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICAvLyBFbnN1cmUgd2Ugc2VlIGluZGljZXMg
Zm9yIGV2ZXJ5dGhpbmcgaW4gdGhlIHJhbmdlOiBbMCwgbnVtUHJvcGVydGllcykKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewogICAgICAgICAg
ICAgYm9vbCBmb3VuZCA9IGZhbHNlOwpAQCAtNTUzLDcgKzU1Myw3IEBAIGV4dGVybiAiQyIgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFT
U0VSVChmb3VuZCk7CiAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5B
QkxFRAogCiAgICAgICAgIFZlY3RvcjxKU1ZhbHVlLCA4PiBhcmd1bWVudHM7CiAgICAgICAgIGFy
Z3VtZW50cy5ncm93KG51bVByb3BlcnRpZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTYsNyArMjk2LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKCkKIAogdm9pZCBC
bG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0KCkKIHsKLSAgICBpZiAoQVNTRVJUX0RJU0FC
TEVEKQorICAgIGlmICghSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgaWYgKG1fYml0cy51bnN3ZXB0KCkuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEdDQXJyYXlTZWdtZW50IDogcHVibGljIERv
dWJseUxpbmsKIHB1YmxpYzoKICAgICBHQ0FycmF5U2VnbWVudCgpCiAgICAgICAgIDogRG91Ymx5
TGlua2VkTGlzdE5vZGU8R0NBcnJheVNlZ21lbnQ8VD4+KCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICwgbV90b3AoMCkKICNlbmRpZgogICAg
IHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgR0NBcnJheVNlZ21lbnQqIG1fcHJl
djsKICAgICBHQ0FycmF5U2VnbWVudCogbV9uZXh0OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBzaXplX3QgbV90b3A7CiAjZW5kaWYKIH07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXlJ
bmxpbmVzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgdm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpjbGVhcigpCiAgICAgfQogICAgIG1fdG9wID0g
MDsKICAgICBtX251bWJlck9mU2VnbWVudHMgPSAxOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBtX3NlZ21lbnRzLmhlYWQoKS0+bV90b3AgPSAwOwog
I2VuZGlmCiB9CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6ZXhw
YW5kKCkKICAgICBHQ0FycmF5U2VnbWVudDxUPiogbmV4dFNlZ21lbnQgPSBHQ0FycmF5U2VnbWVu
dDxUPjo6Y3JlYXRlKCk7CiAgICAgbV9udW1iZXJPZlNlZ21lbnRzKys7CiAgICAgCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIG5leHRTZWdtZW50LT5t
X3RvcCA9IDA7CiAjZW5kaWYKIApAQCAtMTc0LDkgKzE3NCw3IEBAIGlubGluZSBzaXplX3QgR0NT
ZWdtZW50ZWRBcnJheTxUPjo6dG9wKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0jaWYg
QVNTRVJUX0RJU0FCTEVECi1pbmxpbmUgdm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp2YWxpZGF0
ZVByZXZpb3VzKCkgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogaW5saW5lIHZv
aWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6dmFsaWRhdGVQcmV2aW91cygpCiB7CiAgICAgdW5zaWdu
ZWQgY291bnQgPSAwOwpAQCAtMTg0LDcgKzE4Miw5IEBAIGlubGluZSB2b2lkIEdDU2VnbWVudGVk
QXJyYXk8VD46OnZhbGlkYXQKICAgICAgICAgY291bnQrKzsKICAgICBBU1NFUlQobV9zZWdtZW50
cy5zaXplKCkgPT0gbV9udW1iZXJPZlNlZ21lbnRzKTsKIH0KLSNlbmRpZgorI2Vsc2UKK2lubGlu
ZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJldmlvdXMoKSB7IH0KKyNlbmRp
ZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUg
dm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjphcHBlbmQoVCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDcgKzEwMiw3IEBAIHVuc2lnbmVkIEhhbmRsZVNldDo6cHJvdGVjdGVkR2xvYmFsT2JqZWMK
ICAgICByZXR1cm4gY291bnQ7CiB9CiAKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikgfHwgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKSB8fCBKU0NfQVNTRVJUX0VO
QUJMRUQKIGJvb2wgSGFuZGxlU2V0Ojppc0xpdmVOb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYg
KG5vZGUtPnByZXYoKS0+bmV4dCgpICE9IG5vZGUpCkBAIC0xMTIsNiArMTEyLDYgQEAgYm9vbCBI
YW5kbGVTZXQ6OmlzTGl2ZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoR0NfVkFMSURBVElPTikgfHwgSlNDX0FT
U0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGFuZGxlU2V0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBA
IHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdyb3coKTsKICAgICAKLSNp
ZiBFTkFCTEUoR0NfVkFMSURBVElPTikgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEVOQUJMRShH
Q19WQUxJREFUSU9OKSB8fCBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzTGl2ZU5vZGUo
Tm9kZSopOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjI4OSw3ICsyMjg5LDcgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxv
Y2F0aW9uTGltaXRzKCkKICAgICAvLyBJdCdzIHVwIHRvIHRoZSB1c2VyIHRvIGVuc3VyZSB0aGF0
IGV4dHJhTWVtb3J5U2l6ZSgpIGVuZHMgdXAgY29ycmVzcG9uZGluZyB0byBhbGxvY2F0aW9uLXRp
bWUKICAgICAvLyBleHRyYSBtZW1vcnkgcmVwb3J0aW5nLgogICAgIGN1cnJlbnRIZWFwU2l6ZSAr
PSBleHRyYU1lbW9yeVNpemUoKTsKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlm
IChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgQ2hlY2tlZDxzaXplX3QsIFJlY29yZE92
ZXJmbG93PiBjaGVja2VkQ3VycmVudEhlYXBTaXplID0gbV90b3RhbEJ5dGVzVmlzaXRlZDsKICAg
ICAgICAgY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZSArPSBleHRyYU1lbW9yeVNpemUoKTsKICAgICAg
ICAgQVNTRVJUKCFjaGVja2VkQ3VycmVudEhlYXBTaXplLmhhc092ZXJmbG93ZWQoKSAmJiBjaGVj
a2VkQ3VycmVudEhlYXBTaXplLnVuc2FmZUdldCgpID09IGN1cnJlbnRIZWFwU2l6ZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDExICs5Niw3
IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogY2xhc3MgV29ya2xpc3Q7CiB9CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0jZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9OIDEKLSNl
bHNlCi0jZGVmaW5lIEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFUSU9OIDAKLSNlbmRpZgorI2Rl
ZmluZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiBKU0NfQVNTRVJUX0VOQUJMRUQKIGNv
bnN0ZXhwciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElE
QVRJT047CiAKIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsMTIgKzI2NSwxMiBAQCB2b2lkIE1hcmtlZEJsb2Nr
OjpyZXNldE1hcmtzKCkKICAgICBmb290ZXIoKS5tX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3Bh
Y2U6Om51bGxWZXJzaW9uOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NF
UlRfRU5BQkxFRAogdm9pZCBNYXJrZWRCbG9jazo6YXNzZXJ0TWFya3NOb3RTdGFsZSgpCiB7CiAg
ICAgQVNTRVJUKGZvb3RlcigpLm1fbWFya2luZ1ZlcnNpb24gPT0gdm0oKS5oZWFwLm9iamVjdFNw
YWNlKCkubWFya2luZ1ZlcnNpb24oKSk7CiB9Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAor
I2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogCiBib29sIE1hcmtlZEJsb2NrOjphcmVNYXJr
c1N0YWxlKCkKIHsKQEAgLTM2MSwxMyArMzYxLDEzIEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6ZGlkUmVtb3ZlRnJvbUQKICAgICBibG9ja0Zvb3RlcigpLm1fc3Vic3BhY2UgPSBudWxscHRy
OwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogdm9p
ZCBNYXJrZWRCbG9jazo6YXNzZXJ0VmFsaWRDZWxsKFZNJiB2bSwgSGVhcENlbGwqIGNlbGwpIGNv
bnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoJnZtID09ICZ0aGlzLT52bSgpKTsKICAgICBSRUxF
QVNFX0FTU0VSVChjb25zdF9jYXN0PE1hcmtlZEJsb2NrKj4odGhpcyktPmhhbmRsZSgpLmNlbGxB
bGlnbihjZWxsKSA9PSBjZWxsKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5B
QkxFRAogCiB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmR1bXBTdGF0ZShQcmludFN0cmVhbSYg
b3V0KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsMTAgKzM1MiwxMCBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgYm9vbCBoYXNBbnlNYXJrZWQoKSBjb25zdDsKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKLSNp
ZiBBU1NFUlRfRElTQUJMRUQKLSAgICB2b2lkIGFzc2VydFZhbGlkQ2VsbChWTSYsIEhlYXBDZWxs
KikgY29uc3QgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgYXNz
ZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENlbGwqKSBjb25zdDsKKyNlbHNlCisgICAgdm9pZCBhc3Nl
cnRWYWxpZENlbGwoVk0mLCBIZWFwQ2VsbCopIGNvbnN0IHsgfQogI2VuZGlmCiAgICAgICAgIAog
ICAgIFdlYWtTZXQmIHdlYWtTZXQoKTsKQEAgLTM2NSwxMCArMzY1LDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICBEZXBlbmRlbmN5IGFib3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9u
KTsKICAgICAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3NlcnRNYXJrc05v
dFN0YWxlKCkgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYXNzZXJ0TWFya3NOb3RTdGFsZSgpOworI2Vsc2UKKyAgICB2b2lkIGFz
c2VydE1hcmtzTm90U3RhbGUoKSB7IH0KICNlbmRpZgogICAgICAgICAKICAgICB2b2lkIHJlc2V0
TWFya3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgTWFya2Vk
U3BhY2U6OmJlZ2luTWFya2luZygpCiAgICAgICAgICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAg
ICAgfQogCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9F
TkFCTEVEKSB7CiAgICAgICAgIGZvckVhY2hCbG9jaygKICAgICAgICAgICAgIFsmXSAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spIHsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmFyZU1h
cmtzU3RhbGUoKSkKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjplbmRNYXJr
aW5nKCkKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByZWNpc2VBbGxvY2F0aW9uc09mZnNldEZv
clRoaXNDb2xsZWN0aW9uOyBpIDwgbV9wcmVjaXNlQWxsb2NhdGlvbnMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zW2ldLT5jbGVhck5ld2x5QWxsb2NhdGVkKCk7CiAK
LSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQp
IHsKICAgICAgICAgZm9yIChQcmVjaXNlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA6IG1fcHJlY2lz
ZUFsbG9jYXRpb25zKQogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhbGxvY2F0aW9uLCAhYWxs
b2NhdGlvbi0+aXNOZXdseUFsbG9jYXRlZCgpKTsKICAgICB9CkBAIC01NjksNyArNTY5LDcgQEAg
dm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6
YXNzZXJ0Tm9VbnN3ZXB0KCkKIHsKLSAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgIGlmICgh
SlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAgICAgZm9yRWFjaERpcmVjdG9y
eSgKICAgICAgICAgWyZdIChCbG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25T
dGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VB
bGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUw
LDcgQEAgdm9pZCBQcmVjaXNlQWxsb2NhdGlvbjo6ZHVtcChQcmludFN0cmVhbQogICAgIG91dC5w
cmludChSYXdQb2ludGVyKHRoaXMpLCAiOihjZWxsIGF0ICIsIFJhd1BvaW50ZXIoY2VsbCgpKSwg
IiB3aXRoIHNpemUgIiwgbV9jZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRlcyAiLCBtX2F0dHJpYnV0
ZXMsICIpIik7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFC
TEVECiB2b2lkIFByZWNpc2VBbGxvY2F0aW9uOjphc3NlcnRWYWxpZENlbGwoVk0mIHZtLCBIZWFw
Q2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBBU1NFUlQoJnZtID09ICZ0aGlzLT52bSgpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFs
bG9jYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEwICsxNDIsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgbm90ZU1hcmtlZCgpIHsgfQogICAgIAotI2lmIEFTU0VSVF9ESVNBQkxF
RAotICAgIHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENlbGwqKSBjb25zdCB7IH0KLSNl
bHNlCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBhc3NlcnRWYWxpZENlbGwoVk0m
LCBIZWFwQ2VsbCopIGNvbnN0OworI2Vsc2UKKyAgICB2b2lkIGFzc2VydFZhbGlkQ2VsbChWTSYs
IEhlYXBDZWxsKikgY29uc3QgeyB9CiAjZW5kaWYKICAgICAKICAgICB2b2lkIHN3ZWVwKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgU2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9y
KEhlYXAmIGhlYXAsIENTdAogICAgICwgbV9tYXJraW5nVmVyc2lvbihNYXJrZWRTcGFjZTo6aW5p
dGlhbFZlcnNpb24pCiAgICAgLCBtX2hlYXAoaGVhcCkKICAgICAsIG1fY29kZU5hbWUoY29kZU5h
bWUpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICwg
bV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24oZmFsc2UpCiAgICAgLCBtX2lzRHJh
aW5pbmcoZmFsc2UpCiAjZW5kaWYKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFNsb3RWaXNpdG9y
OjphcHBlbmRKU0NlbGxPckF1eGlsaWFyCiAgICAgCiAgICAgLy8gSW4gZGVidWcgbW9kZSwgd2Ug
dmFsaWRhdGUgYmVmb3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoYXQg
dGhlIHByb2JsZW0KICAgICAvLyB3YXMuIEl0J3MgYWxzbyBzbG93ZXIsIHNvIHdlIGRvbid0IGRv
IGl0IG5vcm1hbGx5LgotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEICYmIGlzSlNDZWxsS2luZCho
ZWFwQ2VsbC0+Y2VsbEtpbmQoKSkpCisgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCAmJiBpc0pT
Q2VsbEtpbmQoaGVhcENlbGwtPmNlbGxLaW5kKCkpKQogICAgICAgICB2YWxpZGF0ZUNlbGwoc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oaGVhcENlbGwpKTsKICAgICAKICAgICBpZiAoSGVhcDo6dGVzdEFu
ZFNldE1hcmtlZChtX21hcmtpbmdWZXJzaW9uLCBoZWFwQ2VsbCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
Niw3ICsyNjYsNyBAQCBwcml2YXRlOgogICAgIC8vIFB1dCBwYWRkaW5nIGhlcmUgdG8gbWl0aWdh
dGUgZmFsc2Ugc2hhcmluZyBiZXR3ZWVuIG11bHRpcGxlIFNsb3RWaXNpdG9ycy4KICAgICBjaGFy
IHBhZGRpbmdbNjRdOwogcHVibGljOgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNT
RVJUX0VOQUJMRUQKICAgICBib29sIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9u
OwogICAgIGJvb2wgbV9pc0RyYWluaW5nOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE2ICs1NywxNiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQmluZGluZ1RyYWl0CiAKICAgICBzdGF0aWMgdm9p
ZCBhc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiAgICAgewot
I2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotI2Vsc2UK
KyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUp
OwogICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFycmF5OwogICAgICAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSB2YWx1ZS0+YXNBcnJheShhcnJheSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
Y2FzdFN1Y2NlZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7IGkrKykKICAgICAgICAgICAgIEJpbmRpbmdUcmFpdHM8
VD46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFycmF5LT5nZXQoaSkuZ2V0KCkpOwotI2Vu
ZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7CisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgfQogfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3By
b3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsOSAr
MjEzLDcgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZQogCiAgICAg
ICAgIGxpbmVzLmFwcGVuZCgndm9pZCBCaW5kaW5nVHJhaXRzPCVzPjo6YXNzZXJ0VmFsdWVIYXNF
eHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKScgJSAoQ3BwR2VuZXJhdG9yLmNwcF9wcm90
b2NvbF90eXBlX2Zvcl90eXBlKG9iamVjdF9kZWNsYXJhdGlvbi50eXBlKSkpCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgiIiJ7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKLSNlbHNlCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUX0FSRyh2YWx1
ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNh
c3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTI1NSw3ICsyNTMsOSBA
QCBjbGFzcyBDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgIGlmIHNo
b3VsZF9jb3VudF9wcm9wZXJ0aWVzOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYg
KGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKScpCiAgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVydGllcyBpbiBvYmpl
Y3Q6ICVzXFxuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7JykKLSAg
ICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnI2Vsc2UgLy8gSlNDX0FTU0VSVF9FTkFCTEVEJykKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsnKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQnKQogICAgICAgICBsaW5lcy5hcHBlbmQo
J30nKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCkBAIC0yNjMsOSArMjYzLDcg
QEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICBsaW5l
cyA9IFtdCiAgICAgICAgIGxpbmVzLmFwcGVuZCgndm9pZCAlcyhKU09OOjpWYWx1ZSogdmFsdWUp
JyAlIENwcEdlbmVyYXRvci5jcHBfYXNzZXJ0aW9uX21ldGhvZF9mb3JfdHlwZV9tZW1iZXIoZW51
bV9tZW1iZXIsIG9iamVjdF9kZWNsYXJhdGlvbikpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycp
Ci0gICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmIEFTU0VSVF9ESVNBQkxFRCcpCi0gICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7JykKLSAgICAgICAgbGluZXMuYXBw
ZW5kKCcjZWxzZScpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnI2lmIEpTQ19BU1NFUlRfRU5BQkxF
RCcpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsn
KQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBTdHJpbmcgcmVzdWx0OycpCiAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc1N0cmluZyhyZXN1
bHQpOycpCkBAIC0yNzMsNyArMjcxLDkgQEAgY2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVu
dGF0aW9uR2VuZQogCiAgICAgICAgIGFzc2VydF9jb25kaXRpb24gPSAnIHx8ICcuam9pbihbJ3Jl
c3VsdCA9PSAiJXMiJyAlIGVudW1fdmFsdWUgZm9yIGVudW1fdmFsdWUgaW4gZW51bV9tZW1iZXIu
dHlwZS5lbnVtX3ZhbHVlcygpXSkKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgQVNTRVJUKCVz
KTsnICUgYXNzZXJ0X2NvbmRpdGlvbikKLSAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8g
IUFTU0VSVF9ESVNBQkxFRCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnI2Vsc2UgLy8gSlNDX0FT
U0VSVF9FTkFCTEVEJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJM
RUQnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQogCiAgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24t
cmVzdWx0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMu
anNvbi1yZXN1bHQJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1
bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQJKHdvcmtpbmcgY29weSkKQEAgLTcwOSw3ICs3MDksNyBA
QCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0CiAKIHZvaWQgQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogewotI2lmIEFTU0VSVF9E
SVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBVTlVTRURfUEFSQU0odmFsdWUp
OwogI2Vsc2UKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CkBAIC03MTcsMTIgKzcxNywx
MiBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6CiAgICAgYm9vbCBj
YXN0U3VjY2VlZGVkID0gdmFsdWUtPmFzU3RyaW5nKHJlc3VsdCk7CiAgICAgQVNTRVJUKGNhc3RT
dWNjZWVkZWQpOwogICAgIEFTU0VSVChyZXN1bHQgPT0gIkR1Y2tzIiB8fCByZXN1bHQgPT0gIkhl
bnMiIHx8IHJlc3VsdCA9PSAiQ3Jvd3MiIHx8IHJlc3VsdCA9PSAiRmxhbWluZ29zIik7Ci0jZW5k
aWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogfQog
CiB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRp
bmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQog
ewotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBVTlVT
RURfUEFSQU0odmFsdWUpOwogI2Vsc2UKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CkBA
IC03NTgsNyArNzU4LDcgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OgogICAgIGludCBmb3VuZFByb3BlcnRpZXNDb3VudCA9IDU7CiAgICAgaWYgKGZvdW5kUHJvcGVy
dGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKQogICAgICAgICBGQVRBTCgiVW5leHBlY3RlZCBw
cm9wZXJ0aWVzIGluIG9iamVjdDogJXNcbiIsIG9iamVjdC0+dG9KU09OU3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBKU0NfQVNT
RVJUX0VOQUJMRUQKIH0KIAogUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVO
ZWVkaW5nQ2FzdD4gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBl
TmVlZGluZ0Nhc3Q+OjpydW50aW1lQ2FzdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCkBA
IC03NzQsNyArNzc0LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVO
ZQogCiB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJz
aXZlT2JqZWN0MT46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1
ZSkKIHsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiAgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKICNlbHNlCiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUp
OwpAQCAtNzkyLDEyICs3OTIsMTIgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OgogICAgIH0KICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2JqZWN0LT5z
aXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAl
c1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0jZW5kaWYgLy8g
IUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogfQogCiB2b2lk
IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0
Mj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1ZSkKIHsKLSNp
ZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgVU5VU0VEX1BB
UkFNKHZhbHVlKTsKICNlbHNlCiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwpAQCAtODE1
LDcgKzgxNSw3IEBAIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjoKICAg
ICB9CiAgICAgaWYgKGZvdW5kUHJvcGVydGllc0NvdW50ICE9IG9iamVjdC0+c2l6ZSgpKQogICAg
ICAgICBGQVRBTCgiVW5leHBlY3RlZCBwcm9wZXJ0aWVzIGluIG9iamVjdDogJXNcbiIsIG9iamVj
dC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotI2VuZGlmIC8vICFBU1NFUlRfRElT
QUJMRUQKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
UHJvdG9jb2wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFtZVRy
YWNlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
RnJhbWVUcmFjZXJzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw3IEBAIHB1YmxpYzoKIGNsYXNzIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2Vy
IHsKIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZy
YW1lVHJhY2VyKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICA6IG1fdm0odm0pCiAjZW5kaWYK
ICAgICB7CkBAIC0xMTYsNyArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oY2FsbEZyYW1lKSA8IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHZt
LnRvcEVudHJ5RnJhbWUpKTsKICAgICAgICAgYXNzZXJ0U3RhY2tQb2ludGVySXNBbGlnbmVkKCk7
CiAjaWYgVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUykKLSAgICAgICAgLy8gSWYgIUFTU0VSVF9E
SVNBQkxFRCBhbmQgVVNFKEJVSUxUSU5fRlJBTUVfQUREUkVTUyksIHByZXBhcmVDYWxsT3BlcmF0
aW9uKCkgd2lsbCBwdXQgdGhlIGZyYW1lIHBvaW50ZXIgaW50byB2bS50b3BDYWxsRnJhbWUuCisg
ICAgICAgIC8vIElmIEpTQ19BU1NFUlRfRU5BQkxFRCBhbmQgVVNFKEJVSUxUSU5fRlJBTUVfQURE
UkVTUyksIHByZXBhcmVDYWxsT3BlcmF0aW9uKCkgd2lsbCBwdXQgdGhlIGZyYW1lIHBvaW50ZXIg
aW50byB2bS50b3BDYWxsRnJhbWUuCiAgICAgICAgIC8vIFdlIGNhbiBlbnN1cmUgaGVyZSB0aGF0
IGEgY2FsbCB0byBwcmVwYXJlQ2FsbE9wZXJhdGlvbigpIChvciBpdHMgZXF1aXZhbGVudCkgaXMg
bm90IG1pc3NpbmcgYnkgY29tcGFyaW5nIHZtLnRvcENhbGxGcmFtZSB0bwogICAgICAgICAvLyB0
aGUgcmVzdWx0IG9mIF9fYnVpbHRpbl9mcmFtZV9hZGRyZXNzIHdoaWNoIGlzIHBhc3NlZCBpbiBh
cyBjYWxsRnJhbWUuCiAgICAgICAgIEFTU0VSVCh2bS50b3BDYWxsRnJhbWUgPT0gY2FsbEZyYW1l
KTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgfkpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyKCkKICAgICB7CiAgICAgICAgIC8vIEZpbGwgdm0udG9wQ2Fs
bEZyYW1lIHdpdGggaW52YWxpZCB2YWx1ZSB3aGVuIGxlYXZpbmcgZnJvbSBKSVQgb3BlcmF0aW9u
IGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1
LDcgKzMzNSw3IEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcihWTSYgdm0pCiAgICAgLCBtX2Ns
b29wU3RhY2sodm0pCiAjZW5kaWYKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FT
U0VSVF9FTkFCTEVECiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGFzc2VydE9uY2VLZXk7CiAg
ICAgc3RkOjpjYWxsX29uY2UoYXNzZXJ0T25jZUtleSwgW10gewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgTlVNQkVSX09GX0JZVEVDT0RFX0lEUzsgKytpKSB7CkBAIC0zNDMsNyAr
MzQzLDcgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKFZNJiB2bSkKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGdldE9wY29kZUlEKGdldE9wY29kZShvcGNvZGVJRCkpID09IG9wY29kZUlE
KTsKICAgICAgICAgfQogICAgIH0pOwotI2VuZGlmIC8vIFVTRShMTElOVF9FTUJFRERFRF9PUENP
REVfSUQpCisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiB9CiAKIEludGVycHJldGVyOjp+
SW50ZXJwcmV0ZXIoKQpAQCAtMzUxLDcgKzM1MSw3IEBAIEludGVycHJldGVyOjp+SW50ZXJwcmV0
ZXIoKQogfQogCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSNpZiAhVVNFKExM
SU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmICFVU0UoTExJ
TlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCBKU0NfQVNTRVJUX0VOQUJMRUQKIEhhc2hNYXA8T3Bj
b2RlLCBPcGNvZGVJRD4mIEludGVycHJldGVyOjpvcGNvZGVJRFRhYmxlKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPj4gb3Bjb2RlSURUYWJs
ZTsKQEAgLTM2NSwxMCArMzY1LDEwIEBAIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIEludGVy
cHJldGVyOjoKIAogICAgIHJldHVybiBvcGNvZGVJRFRhYmxlOwogfQotI2VuZGlmIC8vICFVU0Uo
TExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8g
IVVTRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEpTQ19BU1NFUlRfRU5BQkxFRAogI2Vu
ZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiBib29sIEludGVycHJldGVyOjppc09wY29kZShP
cGNvZGUgb3Bjb2RlKQogewogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCkBAIC0z
NzksNyArMzc5LDcgQEAgYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZQog
ICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBvcGNvZGUgPD0gb3BfZW5kOwogI2VuZGlmCiB9Ci0j
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAog
CiBjbGFzcyBHZXRTdGFja1RyYWNlRnVuY3RvciB7CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSk7CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIHN0YXRpYyBi
b29sIGlzT3Bjb2RlKE9wY29kZSk7CiAjZW5kaWYKIApAQCAtMTQ0LDkgKzE0NCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX09Q
Q09ERVMpCi0jaWYgIVVTRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8ICFBU1NFUlRfRElT
QUJMRUQKKyNpZiAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgICAgIHN0YXRpYyBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+JiBvcGNvZGVJ
RFRhYmxlKCk7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlELgotI2VuZGlmIC8vICFVU0UoTExJ
TlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gIVVT
RShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEpTQ19BU1NFUlRfRU5BQkxFRAogI2VuZGlm
IC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAgICAgfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmNs
ZWFyU2FtcGxpbmdGbGFnKAogfQogI2VuZGlmCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAjaWYgVVNFKEpTVkFMVUU2NCkKIHZvaWQgQXNzZW1ibHlIZWxw
ZXJzOjpqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyBncHIpCiB7CkBAIC0yMTYsNyArMjE2LDcgQEAg
dm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydEFyZ3VtZW50QwogICAgIG9rLmxpbmsodGhp
cyk7CiB9CiAKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gSlNDX0FTU0VS
VF9FTkFCTEVECiAKIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRSZWxlYXNlQXNzZXJ0Tm9FeGNl
cHRpb24oVk0mIHZtKQogewpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjplbWl0U3RvcmVTdHJ1Y3R1cmUKICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KHN0cnVjdHVy
ZVB0ci0+aWRCbG9iKCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlm
IChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0g
aml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSk7
CiAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oQUhTdHJ1Y3R1cmVJRElzVmFsaWQpOwogICAg
ICAgICBjb3JyZWN0U3RydWN0dXJlLmxpbmsoJmppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZUNhbGxPcGVyYXRpb24oVk0m
IHZtKQogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKHZtKTsKLSNpZiAhVVNFKEJVSUxUSU5f
RlJBTUVfQUREUkVTUykgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmICFVU0UoQlVJTFRJTl9GUkFN
RV9BRERSRVNTKSB8fCBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgc3RvcmVQdHIoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bS50b3BDYWxsRnJhbWUpOwogI2VuZGlmCiAgICAgfQpA
QCAtMTI3Nyw3ICsxMjc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWdDYWxsKFZNJiwgVl9E
ZWJ1Z09wZXJhdGlvbl9FUFAgZnVuY3Rpb24sIHZvaWQqIGFyZ3VtZW50KTsKIAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9ubHkgY2hlY2tzIC0gYWtp
biB0byBBU1NFUlRzLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJM
RUQKICAgICB2b2lkIGppdEFzc2VydElzSW50MzIoR1BSUmVnKTsKICAgICB2b2lkIGppdEFzc2Vy
dElzSlNJbnQzMihHUFJSZWcpOwogICAgIHZvaWQgaml0QXNzZXJ0SXNKU051bWJlcihHUFJSZWcp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9CaW5hcnlTd2l0Y2gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIEJpbmFyeVN3aXRjaDo6QmluYXJ5
U3dpdGNoKEdQUlJlZyB2YWx1ZSwKICAgICBpZiAoQmluYXJ5U3dpdGNoSW50ZXJuYWw6OnZlcmJv
c2UpCiAgICAgICAgIGRhdGFMb2coIlNvcnRlZCBjYXNlczogIiwgbGlzdER1bXAobV9jYXNlcyks
ICJcbiIpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAog
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBtX2Nhc2VzLnNpemUoKTsgKytpKQogICAgICAg
ICBBU1NFUlQobV9jYXNlc1tpIC0gMV0gPCBtX2Nhc2VzW2ldLCBpLCBtX2Nhc2VzLnNpemUoKSwg
bV9jYXNlc1tpXS52YWx1ZSwgbV9jYXNlc1tpXS5pbmRleCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtODksNyArODksNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIE51bWJlck9m
UmVnaXN0ZXJzLCB0eXBlbmFtZSBSZWdUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cFN0dWJBcmdzKHN0ZDo6YXJyYXk8UmVnVHlwZSwgTnVtYmVyT2ZSZWdpc3RlcnM+IGRlc3RpbmF0
aW9ucywgc3RkOjphcnJheTxSZWdUeXBlLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKICAg
ICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNT
RVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKICAgICAgICAgICAg
IGZvciAoUmVnVHlwZSBkZXN0IDogZGVzdGluYXRpb25zKQogICAgICAgICAgICAgICAgIHNldC5z
ZXQoZGVzdCk7CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBw
YWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc291cmNlc1tpXSwgZGVzdGluYXRpb25zW2ldKSk7
CiAgICAgICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgYXV0byBudW1VbmlxdWVTb3VyY2VzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsK
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKICAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IHBhaXJzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNo
dWZmbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxG
cmFtZVNodWZmbGVyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsy
OTIsNyBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpzcGlsbChDYWNoZWRSZWNvCiAKIHZvaWQg
Q2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREZWx0YUNoZWNrKCkKIHsKLSAgICBpZiAoQVNTRVJUX0RJ
U0FCTEVEKQorICAgIGlmICghSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAK
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiB7IGdldEZyZWVHUFIoKSB9OwpAQCAtNzI1LDcgKzcyNSw3
IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OnByZXBhcmVBbnkoKQogICAgIC8vIHN0YWNrLCBh
bmQgd3JpdHRlbiBldmVyeXRoaW5nIHdlIGhhZCB0byB0byB0aGUgc3RhY2suCiAgICAgaWYgKHZl
cmJvc2UpCiAgICAgICAgIGRhdGFMb2coIiAgQ2FsbGVlIGZyYW1lIGlzIGZ1bGx5IHNldCB1cFxu
Iik7Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFC
TEVEKSB7CiAgICAgICAgIGZvciAoVmlydHVhbFJlZ2lzdGVyIHJlZyA9IGZpcnN0TmV3KCk7IHJl
ZyA8PSBsYXN0TmV3KCk7IHJlZyArPSAxKQogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZWcs
ICFnZXROZXcocmVnKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgSklUOjplbWl0Tm90aWZ5V3JpdGUoR1BS
UmVnIHBvaW50ZXIKIAogdm9pZCBKSVQ6OmFzc2VydFN0YWNrUG9pbnRlck9mZnNldCgpCiB7Ci0g
ICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICBpZiAoIUpTQ19BU1NFUlRfRU5BQkxFRCkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc3RhY2tQb2ludGVy
T2Zmc2V0Rm9yKG1fY29kZUJsb2NrKSAqIHNpemVvZihSZWdpc3RlcikpLCBjYWxsRnJhbWVSZWdp
c3RlciwgcmVnVDApOwpAQCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgSklUOjpjb21waWxlV2l0aG91
dExpbmtpbmcoSklUQ29tcGkKICAgICAgICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICAgICAgZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKGFy
aXR5Rml4dXBHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fYnl0ZWNvZGVJ
bmRleCA9IEJ5dGVjb2RlSW5kZXgoKTsgLy8gUmVzZXQgdGhpcywgaW4gb3JkZXIgdG8gZ3VhcmQg
aXRzIHVzZSB3aXRoIEFTU0VSVHMuCiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU5LDcgKzEw
NTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9oaW50KGNvbnN0IEluCiAKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PcHRpbWl6ZSwgJnZtKCksIG1fYnl0ZWNvZGVJbmRl
eC5hc0JpdHMoKSk7CiAgICAgICAgIEp1bXAgbm9PcHRpbWl6ZWRFbnRyeSA9IGJyYW5jaFRlc3RQ
dHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkg
eworICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBKdW1wIG9r
ID0gYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgcmV0dXJuVmFsdWVHUFIsIFRydXN0
ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMTAwMCkp
KSk7CiAgICAgICAgICAgICBhYm9ydFdpdGhSZWFzb24oSklUVW5yZWFzb25hYmxlTG9vcEhpbnRK
dW1wVGFyZ2V0KTsKICAgICAgICAgICAgIG9rLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1vdmUocmVnVDAsIGJhc2UpOwogICAgICAgICAgICAgbG9hZDMyKG9wZXJhbmRTbG90LCBv
ZmZzZXQpOwotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAg
IGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBKdW1wIGlzT3V0T2ZM
aW5lID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihm
aXJzdE91dE9mTGluZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihK
SVRPZmZzZXRJc05vdE91dE9mTGluZSk7CiAgICAgICAgICAgICAgICAgaXNPdXRPZkxpbmUubGlu
ayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIxLDcgKzgyMSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEkKICAgICAgICAgICAg
IH0pKTsKIAogICAgICAgICAgICAgbG9hZDMyKG9wZXJhbmRTbG90LCBvZmZzZXQpOwotICAgICAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIGlmIChKU0NfQVNTRVJU
X0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0gYnJhbmNoMzIo
R3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJzdE91dE9mTGluZU9m
ZnNldCkpOwogICAgICAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRPZmZzZXRJc05vdE91
dE9mTGluZSk7CiAgICAgICAgICAgICAgICAgaXNPdXRPZkxpbmUubGluayh0aGlzKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTE0NSw3ICsxMTQ1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0
KgogICAgICAgICAgICAgICAgIG5ld0Nhc2VWYWx1ZSA9IGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4o
dmFyaWFudC5pbnRlcm5hbEZ1bmN0aW9uKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFB
U1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAg
ICAgICAgICAgaWYgKGNhc2VWYWx1ZXMuY29udGFpbnMobmV3Q2FzZVZhbHVlKSkgewogICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkVSUk9SOiBBdHRlbXB0IHRvIGFkZCBkdXBsaWNhdGUgY2FzZSB2
YWx1ZS5cbiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2coIkV4aXN0aW5nIGNhc2UgdmFsdWVz
OiAiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFRhZ1R5cGU+CiBpbmxpbmUgdm9pZCBlbWl0UG9p
bnRlclZhbGlkYXRpb24oQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwb2ludGVyR1BSLCBUYWdU
eXBlIHRhZykKIHsKLSAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgIGlmICghSlNDX0FTU0VS
VF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGlzTm9u
WmVybyA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6Tm9uWmVybywgcG9pbnRlckdQ
Uik7CiAgICAgaml0LmFib3J0V2l0aFJlYXNvbihUR0ludmFsaWRQb2ludGVyKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0m
IHZtKQogICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PigocmVpbnRlcnBy
ZXRfY2FzdDxXcml0ZUJhcnJpZXI8SlNDZWxsPio+KDB4NDAwMCktPnNsb3QoKSkpIC0gMHg0MDAw
KSk7CiAKICAgICAvLyBGSVhNRTogbWFrZSB0aGVzZSBhc3NlcnRpb25zIGxlc3MgaG9ycmlibGUu
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIFZlY3Rv
cjxpbnQ+IHRlc3RWZWN0b3I7CiAgICAgdGVzdFZlY3Rvci5yZXNpemUoNDIpOwogICAgIEFTU0VS
VChiaXR3aXNlX2Nhc3Q8dWludDMyX3QqPigmdGVzdFZlY3Rvcilbc2l6ZW9mKHZvaWQqKS9zaXpl
b2YodWludDMyX3QpICsgMV0gPT0gNDIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQURE
UkVTUzY0IDAKICNlbmRpZgogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRf
RU5BQkxFRAogI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCiAjZWxzZQogI2Rl
ZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNSw3ICs5MDUsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgCiAgICAgfQogfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogYm9vbCBpc1NhZmVC
dWlsdGluSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQogewogICAg
IGlmICghaWRlbnQpCkBAIC05MjQsNyArOTI0LDcgQEAgYm9vbCBpc1NhZmVCdWlsdGluSWRlbnRp
ZmllcihWTSYgdm0sIGNvbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAKIHRlbXBsYXRl
IDw+CiB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0
b2tlbkRhdGEsIE9wdGlvblNldDxMZXhlckZsYWdzPiBsZXhlckZsYWdzLCBib29sIHN0cmljdE1v
ZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzMywxMSArMzMzLDExIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciog
TGV4ZXI8VD4KICAgICByZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNo
YXIobV92bSwgY2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAot
QUxXQVlTX0lOTElORSBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiwgY29uc3QgSWRl
bnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KLSNlbHNlCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVE
CiBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopOwot
I2VuZGlmCisjZWxzZQorQUxXQVlTX0lOTElORSBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVy
KFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIHRydWU7IH0KKyNlbmRpZiAvLyBKU0Nf
QVNTRVJUX0VOQUJMRUQKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVj
b3JkLCBPcHRpb25TZXQ8TGV4ZXJGbGFncz4gbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQpA
QCAtMzc1LDcgKzM3NSw3IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46Omxl
eEUKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAgICBpZiAobGV4
ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpEb250QnVpbGRLZXl3b3JkcykKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICYmICFtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24KICNlbmRpZgogICAgICAgICApCkBAIC0zOTAsNyArMzkwLDcgQEAg
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RQogICAgIEFTU0VSVCh0b2tl
bkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQp
OwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAg
IHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9uID0gY3VycmVudFBvc2l0aW9uKCk7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGlmIChtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaWYgKCFpc1NhZmVCdWlsdGluSWRlbnRpZmllciht
X3ZtLCB0b2tlbkRhdGEtPmlkZW50KSkKICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY1LDE1ICsxNjUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuICZzbG90
Rm9yKDApOwogICAgIH0KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgc2V0TmVlZHNP
dmVyZmxvd0NoZWNrKCkgeyB9Ci0gICAgdm9pZCBjbGVhck5lZWRzT3ZlcmZsb3dDaGVjaygpIHsg
fQotI2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIHNldE5lZWRzT3ZlcmZs
b3dDaGVjaygpIHsgbV9uZWVkc092ZXJmbG93Q2hlY2sgPSB0cnVlOyB9CiAgICAgdm9pZCBjbGVh
ck5lZWRzT3ZlcmZsb3dDaGVjaygpIHsgbV9uZWVkc092ZXJmbG93Q2hlY2sgPSBmYWxzZTsgfQog
CiAgICAgYm9vbCBtX25lZWRzT3ZlcmZsb3dDaGVjayB7IGZhbHNlIH07Ci0jZW5kaWYKKyNlbHNl
CisgICAgdm9pZCBzZXROZWVkc092ZXJmbG93Q2hlY2soKSB7IH0KKyAgICB2b2lkIGNsZWFyTmVl
ZHNPdmVyZmxvd0NoZWNrKCkgeyB9CisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAgICAg
aW50IG1fc2l6ZTsKICAgICBpbnQgbV9jYXBhY2l0eTsKICAgICBFbmNvZGVkSlNWYWx1ZSBtX2lu
bGluZUJ1ZmZlcltpbmxpbmVDYXBhY2l0eV07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CdXR0ZXJmbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CdXR0ZXJmbHkuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcg
QEAgc3RydWN0IENvbnRpZ3VvdXNEYXRhIHsKICAgICBDb250aWd1b3VzRGF0YSgpID0gZGVmYXVs
dDsKICAgICBDb250aWd1b3VzRGF0YShUKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICA6
IG1fZGF0YShkYXRhKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAjZW5kaWYKICAgICB7CkBAIC01Myw3ICs1
Myw3IEBAIHN0cnVjdCBDb250aWd1b3VzRGF0YSB7CiAgICAgc3RydWN0IERhdGEgewogICAgICAg
ICBEYXRhKFQmIGxvY2F0aW9uLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdNb2RlKQogICAgICAgICAg
ICAgOiBtX2RhdGEobG9jYXRpb24pCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NF
UlRfRU5BQkxFRAogICAgICAgICAgICAgLCBtX2lzV3JpdGFibGUoIWlzQ29weU9uV3JpdGUoaW5k
ZXhpbmdNb2RlKSkKICNlbmRpZgogICAgICAgICB7CkBAIC0xMDMsNyArMTAzLDcgQEAgc3RydWN0
IENvbnRpZ3VvdXNEYXRhIHsKIAogCiAgICAgICAgIFQmIG1fZGF0YTsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIGJvb2wgbV9pc1dyaXRhYmxl
OwogI2VuZGlmCiAgICAgfTsKQEAgLTExNCwxMyArMTE0LDEzIEBAIHN0cnVjdCBDb250aWd1b3Vz
RGF0YSB7CiAgICAgVCYgYXRVbnNhZmUoc2l6ZV90IGluZGV4KSB7IEFTU0VSVChpbmRleCA8IG1f
bGVuZ3RoKTsgcmV0dXJuIG1fZGF0YVtpbmRleF07IH0KIAogICAgIFQqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAj
ZW5kaWYKIAogcHJpdmF0ZToKICAgICBUKiBtX2RhdGEgeyBudWxscHRyIH07Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHNpemVfdCBtX2xlbmd0aCB7
IDAgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzAzLDcgKzcwMyw3IEBA
IHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNv
bnN0CiAgICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAo
SlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogaXRl
ciA9IG1faGVhZC0+bmV4dCgpOwogICAgICAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGVuZCA9
IG1fdGFpbC5nZXQoKTsKICAgICAgICAgICAgIHVpbnQzMl90IHNpemUgPSAwOwpAQCAtNzI5LDcg
KzcyOSw3IEBAIHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0QnVmZmVy
SXNFbXB0eSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewor
ICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9jYXBhY2l0eTsgaSsrKQogICAgICAgICAgICAgICAgIEFTU0VSVChp
c0VtcHR5KGJ1ZmZlcigpW2ldKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjkyLDcgKzI5Miw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0NlbGw6OnNldFN0cnVj
dHVyZSgKIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYg
dm0pIGNvbnN0CiB7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBp
ZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gc3RydWN0dXJlLT5zdHJ1Y3R1cmUodm0pKQog
ICAgICAgICBBU1NFUlQocm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUo
dm0pKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDksNyArOTA5LDcgQEAg
SlNGdW5jdGlvbjo6UHJvcGVydHlTdGF0dXMgSlNGdW5jdGlvbjo6cgogICAgIHJldHVybiBQcm9w
ZXJ0eVN0YXR1czo6UmVpZmllZDsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0Nf
QVNTRVJUX0VOQUJMRUQKIHZvaWQgSlNGdW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJp
YW50cygpCiB7CiAgICAgLy8gSWYgeW91IGNoYW5nZSB0aGlzLCB5b3UnbGwgbmVlZCB0byB1cGRh
dGUgc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvLgpAQCAtOTE5LDYgKzkxOSw2IEBAIHZvaWQgSlNG
dW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXIKICAgICBlbHNlCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZm8gIT0gSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpOwogfQotI2VuZGlmCisj
ZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTAsMTAgKzIxMCwxMCBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5U3Rh
dHVzIHJlaWZ5TGF6eU5hbWVJZk5lZWRlZChWTSYsIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlO
YW1lKTsKICAgICBQcm9wZXJ0eVN0YXR1cyByZWlmeUxhenlCb3VuZE5hbWVJZk5lZWRlZChWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lKTsKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAot
ICAgIHZvaWQgYXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpIHsgfQotI2Vsc2UKKyNpZiBK
U0NfQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGFzc2VydFR5cGVJbmZvRmxhZ0ludmFyaWFudHMo
KTsKKyNlbHNlCisgICAgdm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCkgeyB9CiAj
ZW5kaWYKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCkpKTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0Nf
QVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2Vy
dENhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc0Jvb2xlYW4o
KSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXNzZQogICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxzZSwgIkpTIGFzc2Vy
dGlvbiBmYWlsZWQgYXQgbGluZSAldSBpbjpcbiVzXG4iLCBsaW5lLCBjb2RlQmxvY2stPnNvdXJj
ZUNvZGVGb3JUb29scygpLmRhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApAQCAtMTE2OCw3ICsxMTY4LDcgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIwogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+TmFOLCBqc05hTigpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5JbmZp
bml0eSwganNOdW1iZXIoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8odm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCwganNVbmRlZmluZWQoKSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzc2VydFByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMSwgU3RyaW5nKCksIGFzc2VydENhbGwpLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAjZW5kaWYKICAgICB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MTEsNyArNTExLDcgQEAgcHVibGljOgogICAgIENvbnNvbGVDbGll
bnQqIG1fY29uc29sZUNsaWVudCB7IG51bGxwdHIgfTsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4g
bV9zdGFja1RyYWNlTGltaXQ7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VS
VF9FTkFCTEVECiAgICAgY29uc3QgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0QXREZWJ1
Z2dlckVudHJ5IHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKQEAgLTk2Myw3ICs5NjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZSA9IGVycm9yTWVz
c2FnZTsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFC
TEVECiAgICAgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEF0RGVidWdnZXJFbnRy
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5OyB9CiAgICAg
dm9pZCBzZXRHbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50cnkoY29uc3QgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkgeyBtX2dsb2JhbE9iamVjdEF0RGVidWdnZXJFbnRyeSA9IGdsb2JhbE9i
amVjdDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lk
IEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiB7CiAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgd2FzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zp
b2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb247CiAg
ICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IGZhbHNlOwog
I2VuZGlmCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbAogICAgIAogICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0b3Ip
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAg
ICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRpZgogfQpAQCAtNDkyLDcgKzQ5Miw3IEBA
IHZvaWQgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwKIHsKICAgICBKU0ZpbmFs
T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgd2FzQ2hlY2tpbmdG
b3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1h
cmtWaW9sYXRpb247CiAgICAgdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xh
dGlvbiA9IGZhbHNlOwogI2VuZGlmCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBKU0ZpbmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbAogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1
ZXNIaWRkZW4odGhpc09iamVjdC0+aW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7CiAgICAg
fQogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAg
ICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRpZgogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NzcsOCArNDc3LDggQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNl
dEluZGV4UXVpY2tseUZvcgogICAgIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnZhbGlkYXRlUHV0
T3duRGF0YVByb3BlcnR5KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgQVNTRVJUKHZhbHVlKTsKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKKyAgICBBU1NFUlRfVU5VU0VEKHZhbHVlLCB2YWx1ZSk7CiAg
ICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFw
OjpoZWFwKHRoaXMpKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZSh2bSktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzKTsKQEAgLTQ4OCwxMSArNDg4LDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0
ZVB1dE93bkRhdGEKICAgICAgICAgaWYgKGF1dG8gZW50cnkgPSBmaW5kUHJvcGVydHlIYXNoRW50
cnkodm0sIHByb3BlcnR5TmFtZSkpCiAgICAgICAgICAgICBBU1NFUlQoIShlbnRyeS0+dmFsdWUt
PmF0dHJpYnV0ZXMoKSAmIChQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpKSk7
CiAgICAgfQotI2Vsc2UKKyNlbHNlIC8vIG5vdCBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBVTlVT
RURfUEFSQU0odm0pOwogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwogICAgIFVOVVNF
RF9QQVJBTSh2YWx1ZSk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBub3QgSlNDX0FTU0VSVF9FTkFCTEVE
CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIAogICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogYXNzZXJ0VmFyaWFibGVJc0luVGhpc09iamVjdChXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHZhcmlhYmxlUG9pbnRlcikKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJ
U0FCTEVEKQorICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICAgICAgZmlu
ZFZhcmlhYmxlSW5kZXgodmFyaWFibGVQb2ludGVyKTsKICAgICAgICAgcmV0dXJuIHZhcmlhYmxl
UG9pbnRlcjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw3
ICs0MzgsNyBAQCBzdGF0aWMgY29uc3RleHByIGNvbnN0IFRva2VuVHlwZSBUb2tlblR5CiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CiBBTFdBWVNfSU5MSU5FIFRva2VuVHlwZSBMaXRlcmFs
UGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleChMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+
JiB0b2tlbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVE
CiAgICAgbV9jdXJyZW50VG9rZW5JRCsrOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBUb2tl
blR5cGUgbmV4dCgpOwogICAgICAgICAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FT
U0VSVF9FTkFCTEVECiAgICAgICAgIHR5cGVkZWYgY29uc3QgTGl0ZXJhbFBhcnNlclRva2VuPENo
YXJUeXBlPiogTGl0ZXJhbFBhcnNlclRva2VuUHRyOwogCiAgICAgICAgIExpdGVyYWxQYXJzZXJU
b2tlblB0ciBjdXJyZW50VG9rZW4oKQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBMaXRlcmFsUGFyc2VyVG9rZW5QdHIoKnRoaXMpOwog
ICAgICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
CiAgICAgICAgIFN0cmluZyBnZXRFcnJvck1lc3NhZ2UoKSB7IHJldHVybiBtX2xleEVycm9yTWVz
c2FnZTsgfQogICAgICAgICAKQEAgLTE4Myw3ICsxODMsNyBAQCBwcml2YXRlOgogICAgICAgICBj
b25zdCBDaGFyVHlwZSogbV9wdHI7CiAgICAgICAgIGNvbnN0IENoYXJUeXBlKiBtX2VuZDsKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBtX2J1aWxkZXI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICB1bnNpZ25lZCBtX2N1cnJlbnRUb2tlbklEIHsg
MCB9OwogI2VuZGlmCiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw3IEBA
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2JhbE9iamUKIAogaW5saW5lIGJvb2wg
c2NyaWJibGVGcmVlQ2VsbHMoKQogewotICAgIHJldHVybiAhQVNTRVJUX0RJU0FCTEVEIHx8IE9w
dGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7CisgICAgcmV0dXJuIEpTQ19BU1NFUlRfRU5BQkxF
RCB8fCBPcHRpb25zOjpzY3JpYmJsZUZyZWVDZWxscygpOwogfQogCiAjZGVmaW5lIFNDUklCQkxF
X1dPUkQgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDB4YmFkYmVlZjApCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMSw4ICsyMjEsOCBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0
cmVhbWluCiAgICAgdihCb29sLCBiM0Fsd2F5c0ZhaWxzQmVmb3JlQ29tcGlsZSwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgYjNBbHdheXNGYWlsc0JlZm9yZUxpbmssIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIGZ0bENyYXNoZXMsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIC8qIGZvb2wtcHJvb2Ygd2F5IG9mIGNoZWNraW5nIHRoYXQgeW91IGVu
ZGVkIHVwIGluIHRoZSBGVEwuIDstKSAqL1wKLSAgICB2KEJvb2wsIGNsb2JiZXJBbGxSZWdzSW5G
VExJQ1Nsb3dQYXRoLCAhQVNTRVJUX0RJU0FCTEVELCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2
KEJvb2wsIGVuYWJsZUpJVERlYnVnQXNzZXJ0aW9ucywgIUFTU0VSVF9ESVNBQkxFRCwgTm9ybWFs
LCBudWxscHRyKSBcCisgICAgdihCb29sLCBjbG9iYmVyQWxsUmVnc0luRlRMSUNTbG93UGF0aCwg
SlNDX0FTU0VSVF9FTkFCTEVELCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIGVuYWJs
ZUpJVERlYnVnQXNzZXJ0aW9ucywgSlNDX0FTU0VSVF9FTkFCTEVELCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KEJvb2wsIHVzZUFjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KFVuc2lnbmVkLCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUsIDgsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0
cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogI2lmIEVOQUJMRShKSVQpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NF
UlRfRU5BQkxFRAogYm9vbCBWTTo6c19jYW5Vc2VKSVRJc1NldCA9IGZhbHNlOwogI2VuZGlmCiBi
b29sIFZNOjpzX2NhblVzZUpJVCA9IGZhbHNlOwpAQCAtMjcxLDcgKzI3MSw3IEBAIGJvb2wgVk06
OmNhblVzZUFzc2VtYmxlcigpCiB2b2lkIFZNOjpjb21wdXRlQ2FuVXNlSklUKCkKIHsKICNpZiBF
TkFCTEUoSklUKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQK
ICAgICBSRUxFQVNFX0FTU0VSVCghc19jYW5Vc2VKSVRJc1NldCk7CiAgICAgc19jYW5Vc2VKSVRJ
c1NldCA9IHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtODA4LDkgKzgwOCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGNhblVzZUpJVCgpCiAgICAgewogI2lmIEVOQUJMRShKSVQpCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAotICAgICAgICBSRUxFQVNFX0FTU0VSVChzX2NhblVzZUpJVElzU2V0
KTsKLSNlbmRpZgorICAgICAgICBBU1NFUlQoc19jYW5Vc2VKSVRJc1NldCk7CiAgICAgICAgIHJl
dHVybiBzX2NhblVzZUpJVDsKICNlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMzks
NyArMTIzNyw3IEBAIHByaXZhdGU6CiAgICAgdWludHB0cl90IG1fY3VycmVudFdlYWtSZWZWZXJz
aW9uIHsgMCB9OwogCiAjaWYgRU5BQkxFKEpJVCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc19j
YW5Vc2VKSVRJc1NldDsKICNlbmRpZgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29s
IHNfY2FuVXNlSklUOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zm
c2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zm
c2V0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Zhck9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY2hlY2tTYW5pdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKEFT
U0VSVF9ESVNBQkxFRCkKKyAgICAgICAgaWYgKCFKU0NfQVNTRVJUX0VOQUJMRUQpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fa2luZCkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgICAgIHVpbnQzMl90IHNpemUgPSAwOwogICAgICAgICAgICAgYXV0byogYnVmZmVyID0g
dGhpcy0+YnVmZmVyKCk7CiAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGluZGV4ID0gMDsgaW5k
ZXggPCBtX2NhcGFjaXR5OyArK2luZGV4KSB7CkBAIC00NjksNyArNDY5LDcgQEAgcHJpdmF0ZToK
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnRCdWZmZXJJc0VtcHR5KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNT
RVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Nh
cGFjaXR5OyBpKyspCiAgICAgICAgICAgICAgICAgQVNTRVJUKChidWZmZXIoKSArIGkpLT5pc0Vt
cHR5KCkpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzMSw3ICszMzEsNyBAQCBwcml2YXRlOgogICAgIEIzOjpUeXBlIHRvQjNSZXN1bHRUeXBl
KEJsb2NrU2lnbmF0dXJlIHJldHVyblR5cGUpOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2YWxp
ZGF0ZUluc3QoSW5zdCYgaW5zdCkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIGlmICgh
aW5zdC5pc1ZhbGlkRm9ybSgpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJJbnN0IHZh
bGlkYXRpb24gZmFpbGVkOiIpOwogICAgICAgICAgICAgICAgIGRhdGFMb2dMbihpbnN0LCAiXG4i
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5Myw3ICsxOTkzLDcg
QEAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3RpbwogICAgIGlyR2VuZXJh
dG9yLmluc2VydENvbnN0YW50cygpOwogCiAgICAgcHJvY2VkdXJlLnJlc2V0UmVhY2hhYmlsaXR5
KCk7Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxF
RCkKICAgICAgICAgdmFsaWRhdGUocHJvY2VkdXJlLCAiQWZ0ZXIgcGFyc2luZzpcbiIpOwogCiAg
ICAgZGF0YUxvZ0lmKFdhc21CM0lSR2VuZXJhdG9ySW50ZXJuYWw6OnZlcmJvc2UsICJQcmUgU1NB
OiAiLCBwcm9jZWR1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
NyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBORVZFUl9JTkxJTkUgVW5leHBlY3RlZFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gdmFsaWRhdGlvbkZhaWwoY29uc3QgQXJncyYuLi4gYXJncykgY29u
c3QKICAgICB7CiAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBGYWlsdXJlSGVscGVyOyAvLyBTZWUg
QURMIGNvbW1lbnQgaW4gV2FzbVBhcnNlci5oLgotICAgICAgICBpZiAoVU5MSUtFTFkoIUFTU0VS
VF9ESVNBQkxFRCAmJiBPcHRpb25zOjpjcmFzaE9uRmFpbGVkV2ViQXNzZW1ibHlWYWxpZGF0ZSgp
KSkKKyAgICAgICAgaWYgKFVOTElLRUxZKEpTQ19BU1NFUlRfRU5BQkxFRCAmJiBPcHRpb25zOjpj
cmFzaE9uRmFpbGVkV2ViQXNzZW1ibHlWYWxpZGF0ZSgpKSkKICAgICAgICAgICAgIFdURkJyZWFr
cG9pbnRUcmFwKCk7CiAKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsNyArMzQxLDcgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLy8gVGhlIHJ1bGVzIGZvciBsb2Nh
bHMgYW5kIGNvbnN0YW50cyBpbiB0aGUgc3RhY2sgYXJlOgogICAgICAgICAvLyAxKSBMb2NhbHMg
aGF2ZSB0byBiZSBtYXRlcmlhbGl6ZWQgd2hlbmV2ZXIgYSBjb250cm9sIGVudHJ5IGlzIHB1c2hl
ZCB0byB0aGUgY29udHJvbCBzdGFjayAoaS5lLiBldmVyeSB0aW1lIHdlIHNwbGl0U3RhY2spCiAg
ICAgICAgIC8vICAgIE5PVEU6IFRoaXMgaXMgYSB0cmFkZS1vZmYgc28gdGhhdCBzZXRfbG9jYWwg
ZG9lcyBub3QgaGF2ZSB0byB3YWxrIHVwIHRoZSBjb250cm9sIHN0YWNrIGxvb2tpbmcgZm9yIGRl
bGF5ZWQgZ2V0X2xvY2FscwpAQCAtMzU3LDcgKzM1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdh
bGtFeHByZXNzaW9uU3RhY2sobV9wYXJzZXItPmV4cHJlc3Npb25TdGFjaygpLCBbJl0oVmlydHVh
bFJlZ2lzdGVyIGV4cHJlc3Npb24sIFZpcnR1YWxSZWdpc3RlciBzbG90KSB7CiAgICAgICAgICAg
ICBBU1NFUlQoZXhwcmVzc2lvbiA9PSBzbG90IHx8IGV4cHJlc3Npb24uaXNDb25zdGFudCgpIHx8
IGV4cHJlc3Npb24uaXNBcmd1bWVudCgpIHx8IGV4cHJlc3Npb24udG9Mb2NhbCgpIDwgbV9jb2Rl
QmxvY2stPm1fbnVtVmFycyk7CiAgICAgICAgIH0pOwotI2VuZGlmCisjZW5kaWYgLy8gSlNDX0FT
U0VSVF9FTkFCTEVECiAgICAgfQogCiAgICAgdm9pZCBtYXRlcmlhbGl6ZUNvbnN0YW50c0FuZExv
Y2FscyhTdGFjayYgZXhwcmVzc2lvblN0YWNrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVBsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21QbGFuLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIGJv
b2wgUGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENhbmNlbElmTGEKIHsKICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOwogCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAo
SlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIC8vIFdlIGFsbG93IHRoZSBmaXJzdCBjb21w
bGV0aW9uIHRhc2sgdG8gbm90IGhhdmUgYSBDb250ZXh0LgogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgbV9jb21wbGV0aW9uVGFza3Muc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBB
U1NFUlQobV9jb21wbGV0aW9uVGFza3NbaV0uZmlyc3QpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgTkVWRVJfSU5MSU5FIFVuZXhw
ZWN0ZWRSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGZhaWwoQXJncy4uLiBhcmdzKSBjb25zdAog
ICAgIHsKICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEZhaWx1cmVIZWxwZXI7IC8vIFNlZSBBREwg
Y29tbWVudCBpbiBuYW1lc3BhY2UgYWJvdmUuCi0gICAgICAgIGlmIChVTkxJS0VMWSghQVNTRVJU
X0RJU0FCTEVEICYmIE9wdGlvbnM6OmNyYXNoT25GYWlsZWRXZWJBc3NlbWJseVZhbGlkYXRlKCkp
KQorICAgICAgICBpZiAoVU5MSUtFTFkoSlNDX0FTU0VSVF9FTkFCTEVEICYmIE9wdGlvbnM6OmNy
YXNoT25GYWlsZWRXZWJBc3NlbWJseVZhbGlkYXRlKCkpKQogICAgICAgICAgICAgQ1JBU0goKTsK
IAogICAgICAgICByZXR1cm4gVW5leHBlY3RlZFJlc3VsdChtYWtlU3RyaW5nKCJXZWJBc3NlbWJs
eS5Nb2R1bGUgZG9lc24ndCBwYXJzZSBhdCBieXRlICJfcywgU3RyaW5nOjpudW1iZXIobV9vZmZz
ZXQgKyBtX29mZnNldEluU291cmNlKSwgIjogIl9zLCBtYWtlU3RyaW5nKGFyZ3MpLi4uKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvbnMuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
IAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9S
RVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBp
bmxpbmUgY29uc3QgY2hhciogbWFrZVN0cmluZyhTZWN0aW9uIHNlCiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFC
TEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGlubGluZSBjb25z
dCBTaWduYXR1cmUmIFNpZ25hdHVyZUluZm9ybWEKIAogaW5saW5lIFNpZ25hdHVyZUluZGV4IFNp
Z25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpCiB7Ci0g
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7
CiAgICAgICAgIFNpZ25hdHVyZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7CiAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soaW5mby5tX2xvY2spOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKGluZm8sIGluZm8ubV9zaWduYXR1cmVTZXQuY29udGFpbnMoU2lnbmF0dXJlSGFzaCB7
IG1ha2VSZWYoY29uc3RfY2FzdDxTaWduYXR1cmUmPihzaWduYXR1cmUpKSB9KSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFdvcmtsaXN0OjplbnF1ZXVlKFJl
ZjxQbGFuPiBwbGFuKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogCi0gICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IG1fcXVldWUpCiAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKGVsZW1lbnQsIGVsZW1lbnQucGxhbi5nZXQoKSAhPSAmcGxhbi5nZXQoKSk7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNU
b1dhc20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0ZQogICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5m
byYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CiAgICAgUmVnaXN0ZXJT
ZXQgdG9TYXZlID0gcGlubmVkUmVncy50b1NhdmUobW9kZSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgdG9TYXZlU2l6ZSA9IHRv
U2F2ZS5udW1iZXJPZlNldEdQUnMoKTsKICAgICAvLyBUaGV5IHNob3VsZCBhbGwgYmUgY2FsbGVl
IHNhdmVzLgogICAgIHRvU2F2ZS5maWx0ZXIoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwdHJkaWZmX3QgV2ViQXNzZW1ibHlGdW5jdGlvbjo6cHJldmlv
dXNJCiB7CiAgICAgcHRyZGlmZl90IHJlc3VsdCA9IGNhbGxlZVNhdmVzKCkubnVtYmVyT2ZTZXRS
ZWdpc3RlcnMoKSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CiAgICAgcmVzdWx0ID0gLXJlc3VsdCAt
IHNpemVvZihDUFVSZWdpc3Rlcik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NF
UlRfRU5BQkxFRAogICAgIHB0cmRpZmZfdCBtaW5PZmZzZXQgPSAxOwogICAgIGZvciAoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldCYgcmVnQXRPZmZzZXQgOiB1c2VkQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KSB7CiAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSByZWdBdE9mZnNldC5vZmZzZXQoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDIwLTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFbmFibGUgcnVubmluZyBhIHJlbGVhc2UgYnVpbGQgd2l0aCBk
ZWJ1ZyBBU1NFUlRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVG8gZW5hYmxlIGRlYnVnIEFTU0VSVHMgaW4gV1RGIGNvZGUgKGV2ZW4gaW4gcmVsZWFz
ZSBidWlsZHMpLCBvdmVycmlkZQorICAgICAgICBXVEZfQVNTRVJUX0VOQUJMRUQgdG8gdHJ1ZS4K
KworICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisgICAg
ICAgICogd3RmL0F1dG9tYXRpY1RocmVhZC5jcHA6CisgICAgICAgIChXVEY6OkF1dG9tYXRpY1Ro
cmVhZDo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuaDoKKyAgICAgICAgKiB3dGYv
QmxvY2tPYmpDRXhjZXB0aW9ucy5tbToKKyAgICAgICAgKFJlcG9ydEJsb2NrZWRPYmpDRXhjZXB0
aW9uKToKKyAgICAgICAgKiB3dGYvQmxvb21GaWx0ZXIuaDoKKyAgICAgICAgKiB3dGYvQ2FsbGJh
Y2tBZ2dyZWdhdG9yLmg6CisgICAgICAgIChXVEY6OkNhbGxiYWNrQWdncmVnYXRvcjo6Q2FsbGJh
Y2tBZ2dyZWdhdG9yKToKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaDoKKyAgICAg
ICAgKFdURjo6b2JzZXJ2ZXNPdmVyZmxvdzxBc3NlcnROb092ZXJmbG93Pik6CisgICAgICAgICog
d3RmL0NoZWNrZWRCb29sZWFuLmg6CisgICAgICAgIChDaGVja2VkQm9vbGVhbjo6Q2hlY2tlZEJv
b2xlYW4pOgorICAgICAgICAoQ2hlY2tlZEJvb2xlYW46Om9wZXJhdG9yIGJvb2wpOgorICAgICAg
ICAqIHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oOgorICAgICAgICAoV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjxPdXQpOgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6Omlu
aXRpYWxpemVEYXRlcyk6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmNwcDoKKyAgICAgICAgKEdp
Z2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyk6CisgICAgICAgICogd3RmL0hh
c2hUYWJsZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpjaGVja0tleSk6CisgICAgICAg
IChXVEY6OktleVRyYWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUgY29uc3Qp
OgorICAgICAgICAqIHd0Zi9Mb2dnZXJIZWxwZXIuaDoKKyAgICAgICAgKiB3dGYvTmF0dXJhbExv
b3BzLmg6CisgICAgICAgIChXVEY6Ok5hdHVyYWxMb29wczo6aGVhZGVyT2YgY29uc3QpOgorICAg
ICAgICAqIHd0Zi9OZXZlckRlc3Ryb3llZC5oOgorICAgICAgICAoV1RGOjpMYXp5TmV2ZXJEZXN0
cm95ZWQ6OmNvbnN0cnVjdCk6CisgICAgICAgICogd3RmL09wdGlvblNldC5oOgorICAgICAgICAo
V1RGOjpPcHRpb25TZXQ6Ok9wdGlvblNldCk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6Cisg
ICAgICAgICogd3RmL1B0clRhZy5oOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkLmg6CisgICAg
ICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpkaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKToKKyAgICAg
ICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OmVuYWJsZVRocmVhZGluZ0NoZWNrc0dsb2JhbGx5KToK
KyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OlJlZkNvdW50ZWRCYXNlKToKKyAgICAgICAg
KFdURjo6UmVmQ291bnRlZEJhc2U6OmFwcGx5UmVmRGVyZWZUaHJlYWRpbmdDaGVjayBjb25zdCk6
CisgICAgICAgICogd3RmL1NpbmdsZVJvb3RHcmFwaC5oOgorICAgICAgICAoV1RGOjpTaW5nbGVS
b290R3JhcGg6OmFzc2VydElzQ29uc2lzdGVudCBjb25zdCk6CisgICAgICAgICogd3RmL1NpemVM
aW1pdHMuY3BwOgorICAgICAgICAqIHd0Zi9TdGFja0JvdW5kcy5oOgorICAgICAgICAoV1RGOjpT
dGFja0JvdW5kczo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgICogd3RmL1VSTFBh
cnNlci5jcHA6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6VVJMUGFyc2VyKToKKyAgICAgICAg
KFdURjo6VVJMUGFyc2VyOjpkb21haW5Ub0FTQ0lJKToKKyAgICAgICAgKiB3dGYvVmFsdWVDaGVj
ay5oOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6bWluQ2FwYWNpdHk+
OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiB3dGYvV2Vha0hhc2hTZXQuaDoKKyAgICAg
ICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RGOjpXZWFrUHRySW1wbDo6V2Vha1B0cklt
cGwpOgorICAgICAgICAoV1RGOjpXZWFrUHRyRmFjdG9yeTo6V2Vha1B0ckZhY3RvcnkpOgorICAg
ICAgICAqIHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9tU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpyZWlmeVN0cmluZyBjb25zdCk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0Nv
bW1vbi5oOgorICAgICAgICAoV1RGOjpoYXNQcmVmaXhXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlQ29tbW9uKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdIYXNoZXIuaDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAq
IHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg6CisKIDIwMjAtMDEtMDUgIFJvc3MgS2lyc2xp
bmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEphdmFTY3JpcHQ6IEludmFs
aWQgZGF0ZSBwYXJzZSBmb3IgSVNPIDg2MDEgc3RyaW5ncyB3aGVuIG5vIHRpbWV6b25lIGdpdmVu
CkluZGV4OiBTb3VyY2UvV1RGL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvY29u
ZmlnLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvY29uZmlnLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBA
IC0xNiw5ICsxNiwyNSBAQAogICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCiAgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCiAgKi8KIAorI2luY2x1ZGUgPHd0Zi9Db21waWxl
ci5oPgorCisjaWYgQVNBTl9FTkFCTEVECisjaWZuZGVmIFdURl9BU1NFUlRfRU5BQkxFRAorI2Rl
ZmluZSBXVEZfQVNTRVJUX0VOQUJMRUQgMQorI2VuZGlmCisjZW5kaWYKKworLy8gVGhlIGJ1aWxk
IGNvbmZpZyBtYXkgb3ZlcnJpZGUgV1RGX0FTU0VSVF9FTkFCTEVEIHRvIGVuYWJsZSB0ZXN0aW5n
IHdpdGgKKy8vIGRlYnVnIEFTU0VSVHMgZm9yIFdURiBjb2RlIG9uIHJlbGVhc2UgYnVpbGRzIHdp
dGhvdXQgbmVjZXNzYXJpbHkgZW5hYmxpbmcKKy8vIGRlYnVnIEFTU0VSVHMgZm9yIGFsbCBjbGll
bnRzIG9mIFdURi4KKyNpZiBkZWZpbmVkKFdURl9BU1NFUlRfRU5BQkxFRCkgJiYgV1RGX0FTU0VS
VF9FTkFCTEVECisjaWZuZGVmIEFTU0VSVF9FTkFCTEVECisjZGVmaW5lIEFTU0VSVF9FTkFCTEVE
IDEKKyNlbmRpZgorI2VuZGlmCisKICNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVf
Q09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQogI2luY2x1ZGUgImNtYWtl
Y29uZmlnLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsMzkg
KzY0LDMwIEBAIGV4dGVybiAiQyIgdm9pZCBfUmVhZFdyaXRlQmFycmllcih2b2lkKTsKICNlbmRp
ZgogI2VuZGlmCiAKLSNpZmRlZiBOREVCVUcKLS8qIERpc2FibGUgQVNTRVJUKiBtYWNyb3MgaW4g
cmVsZWFzZSBtb2RlLiAqLwotI2RlZmluZSBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQgMQot
I2Vsc2UKLSNkZWZpbmUgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUIDAKLSNlbmRpZgorLyog
QVNTRVJUX0VOQUJMRUQgaXMgZGVmaW5lZCBpbiBQbGF0Zm9ybS5oIG9yIGNvbmZpZy5oIGZpbGVz
LiAqLwogCiAjaWZuZGVmIEJBQ0tUUkFDRV9ESVNBQkxFRAotI2RlZmluZSBCQUNLVFJBQ0VfRElT
QUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCi0jZW5kaWYKLQotI2lmbmRlZiBBU1NF
UlRfRElTQUJMRUQKLSNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURf
REVGQVVMVAorI2RlZmluZSBCQUNLVFJBQ0VfRElTQUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5k
aWYKIAogI2lmbmRlZiBBU1NFUlRfTVNHX0RJU0FCTEVECi0jZGVmaW5lIEFTU0VSVF9NU0dfRElT
QUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCisjZGVmaW5lIEFTU0VSVF9NU0dfRElT
QUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRlZiBBU1NFUlRfQVJHX0RJU0FC
TEVECi0jZGVmaW5lIEFTU0VSVF9BUkdfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZB
VUxUCisjZGVmaW5lIEFTU0VSVF9BUkdfRElTQUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYK
IAogI2lmbmRlZiBGQVRBTF9ESVNBQkxFRAotI2RlZmluZSBGQVRBTF9ESVNBQkxFRCBBU1NFUlRJ
T05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgRkFUQUxfRElTQUJMRUQgIUFTU0VSVF9FTkFC
TEVECiAjZW5kaWYKIAogI2lmbmRlZiBFUlJPUl9ESVNBQkxFRAotI2RlZmluZSBFUlJPUl9ESVNB
QkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgRVJST1JfRElTQUJMRUQg
IUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRlZiBMT0dfRElTQUJMRUQKLSNkZWZpbmUg
TE9HX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBMT0dfRElT
QUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRlZiBSRUxFQVNFX0xPR19ESVNB
QkxFRApAQCAtMzAyLDcgKzI5Myw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5fRFVF
X1RPX0NSQVMKICN1bmRlZiBBU1NFUlQKICNlbmRpZgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisj
aWYgIUFTU0VSVF9FTkFCTEVECiAKICNkZWZpbmUgQVNTRVJUKGFzc2VydGlvbiwgLi4uKSAoKHZv
aWQpMCkKICNkZWZpbmUgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGFzc2VydGlvbikg
KCh2b2lkKTApCkBAIC0zMjIsMTIgKzMxMywxMiBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVU
VVJOX0RVRV9UT19DUkFTCiAgICAgICAgICh2b2lkKTApCiAKICNkZWZpbmUgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQgMAotI2Vsc2UKKyNlbHNlIC8qIG5vdCBFTkFC
TEUoU0VDVVJJVFlfQVNTRVJUSU9OUykgKi8KICNkZWZpbmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oYXNzZXJ0aW9uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQgMQotI2VuZGlmCisjZW5kaWYgLyogRU5BQkxFKFNF
Q1VSSVRZX0FTU0VSVElPTlMpICovCiAKLSNlbHNlCisjZWxzZSAvKiBBU1NFUlRfRU5BQkxFRCAq
LwogCiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24sIC4uLikgZG8geyBcCiAgICAgaWYgKCEoYXNz
ZXJ0aW9uKSkgeyBcCkBAIC0zODUsNyArMzc2LDggQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBUwogICAgICAgICAgQ1JBU0hfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TigpKSA6IFwKICAgICAgICAgKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT05fRElTQUJMRUQgMAotI2VuZGlmCisKKyNlbmRpZiAvKiBBU1NFUlRfRU5BQkxF
RCAqLwogCiAvKiBBU1NFUlRfV0lUSF9NRVNTQUdFICovCiAKQEAgLTUzMSw3ICs1MjMsOCBAQCBj
b25zdGV4cHIgYm9vbCBhc3NlcnRpb25GYWlsdXJlRHVlVG9VbnJlCiAKIC8qIFJFTEVBU0VfQVNT
RVJUICovCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKKwogI2Rl
ZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24sIC4uLikgZG8geyBcCiAgICAgaWYgKFVOTElL
RUxZKCEoYXNzZXJ0aW9uKSkpIFwKICAgICAgICAgQ1JBU0hfV0lUSF9JTkZPKF9fVkFfQVJHU19f
KTsgXApAQCAtNTQ0LDEzICs1MzcsMTYgQEAgY29uc3RleHByIGJvb2wgYXNzZXJ0aW9uRmFpbHVy
ZUR1ZVRvVW5yZQogICAgICAgICBDUkFTSF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVCgpOyBcCiAg
ICAgfSBcCiB9IHdoaWxlICgwKQotI2Vsc2UKKworI2Vsc2UgLyogQVNTRVJUX0VOQUJMRUQgKi8K
KwogI2RlZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24sIC4uLikgQVNTRVJUKGFzc2VydGlv
biwgX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShhc3Nl
cnRpb24sIC4uLikgQVNTRVJUX1dJVEhfTUVTU0FHRShhc3NlcnRpb24sIF9fVkFfQVJHU19fKQog
I2RlZmluZSBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGFzc2VydGlv
bikgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNzZXJ0aW9uKQogI2RlZmluZSBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpCiAjZGVmaW5l
IFJFTEVBU0VfQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGFzc2VydGlvbikgQVNTRVJU
X1VOREVSX0NPTlNURVhQUl9DT05URVhUKGFzc2VydGlvbikKLSNlbmRpZgorCisjZW5kaWYgLyog
QVNTRVJUX0VOQUJMRUQgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSguLi4pIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRShhc3NlcnRpb25GYWlsdXJlRHVlVG9VbnJlYWNoYWJsZUNvZGUsIF9fVkFfQVJHU19f
KQpJbmRleDogU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzEsNyArMTcxLDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KGNvbnN0IEFic3RyYQog
ICAgICAgICAgICAgUmVmUHRyPEF1dG9tYXRpY1RocmVhZD4gdGhyZWFkID0gcHJlc2VydmVUaGlz
Rm9yVGhyZWFkOwogICAgICAgICAgICAgdGhyZWFkLT50aHJlYWREaWRTdGFydCgpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAg
aWYgKFdURl9BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKCptX2xvY2spOwogICAgICAgICAgICAgICAgIEFTU0VSVChtX2NvbmRpdGlvbi0+Y29udGFp
bnMobG9ja2VyLCB0aGlzKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9C
aXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6IAogICAgIHNpemVfdCBmaW5kQml0KHNpemVf
dCBpbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHNpemVfdCByZXN1bHQg
PSBmaW5kQml0RmFzdChpbmRleCwgdmFsdWUpOwotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgICAgICBpZiAoV1RGX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBzaXpl
X3QgZXhwZWN0ZWRSZXN1bHQgPSBmaW5kQml0U2ltcGxlKGluZGV4LCB2YWx1ZSk7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgZGF0
YUxvZygiZmluZEJpdCgiLCBpbmRleCwgIiwgIiwgdmFsdWUsICIpIG9uICIsICp0aGlzLCAiIHNo
b3VsZCBoYXZlIGdvdHRlbiAiLCBleHBlY3RlZFJlc3VsdCwgIiBidXQgZ290ICIsIHJlc3VsdCwg
IlxuIik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlv
bihOU0V4Y2VwdAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGNv
bmZ1c2luZyB3aGVuIEphdmFTY3JpcHRDb3JlIGlzIHVzZWQgc3RhbmRhbG9uZS4gSlNDCiAgICAg
Ly8gd2lsbCBjYWxsIHRoaXMgY29kZSBhcyBwYXJ0IG9mIGRlZmF1bHQgbG9jYWxlIGRldGVjdGlv
bi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODA0
Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIVdURl9BU1NFUlRfRU5BQkxFRAogICAgIE5TTG9n
KEAiKioqIFdlYktpdCBkaXNjYXJkaW5nIGV4Y2VwdGlvbjogPCVAPiAlQCIsIFtleGNlcHRpb24g
bmFtZV0sIFtleGNlcHRpb24gcmVhc29uXSk7CiAjZWxzZQogICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoMCwgIlVuY2F1Z2h0IGV4Y2VwdGlvbiAtICVAIiwgZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0Jsb29tRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmxv
b21GaWx0ZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvQmxvb21GaWx0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4Miw3IEBAIHB1YmxpYzoKICAgICBib29s
IG1heUNvbnRhaW4oY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtYXlD
b250YWluKHN0cmluZy5pbXBsKCktPmV4aXN0aW5nSGFzaCgpKTsgfQogICAgIGJvb2wgbWF5Q29u
dGFpbihjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbWF5Q29udGFpbihzdHJp
bmcuaW1wbCgpLT5oYXNoKCkpOyB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FT
U0VSVF9FTkFCTEVECiAgICAgLy8gU2xvdy4KICAgICBib29sIGxpa2VseUVtcHR5KCkgY29uc3Q7
CiAgICAgYm9vbCBpc0NsZWFyKCkgY29uc3Q7CkBAIC0yMzYsNyArMjM2LDcgQEAgaW5saW5lIHZv
aWQgQ291bnRpbmdCbG9vbUZpbHRlcjxrZXlCaXRzPgogICAgIG1fYnVja2V0cy5maWxsKDApOwog
fQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogdGVtcGxh
dGUgPHVuc2lnbmVkIGtleUJpdHM+CiBib29sIENvdW50aW5nQmxvb21GaWx0ZXI8a2V5Qml0cz46
Omxpa2VseUVtcHR5KCkgY29uc3QKIHsKQEAgLTI1Niw5ICsyNTYsOSBAQCBib29sIENvdW50aW5n
Qmxvb21GaWx0ZXI8a2V5Qml0cz46OmlzQ2xlCiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQot
I2VuZGlmCisjZW5kaWYgLy8gV1RGX0FTU0VSVF9FTkFCTEVECiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdURgogCiB1c2luZyBXVEY6OkJsb29tRmlsdGVyOwogdXNpbmcgV1RGOjpDb3VudGluZ0Jsb29t
RmlsdGVyOwpJbmRleDogU291cmNlL1dURi93dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmgJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NhbGxiYWNrQWdncmVnYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
YWxsYmFja0FnZ3JlZ2F0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQog
ICAgICAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fd2FzQ29uc3RydWN0ZWRP
bk1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKICAgICB7CiAgICAgfQogCiAgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBtX2NhbGxiYWNrOwotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fd2FzQ29uc3RydWN0ZWRPbk1h
aW5UaHJlYWQ7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU0NSw3ICs1NDUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgT3ZlcmZs
b3dIYW5kbGVyLCB0eXBlbmFtCiBpbmxpbmUgY29uc3RleHByIGJvb2wgb2JzZXJ2ZXNPdmVyZmxv
dygpIHsgcmV0dXJuIHRydWU7IH0KIAogdGVtcGxhdGUgPD4KLWlubGluZSBjb25zdGV4cHIgYm9v
bCBvYnNlcnZlc092ZXJmbG93PEFzc2VydE5vT3ZlcmZsb3c+KCkgeyByZXR1cm4gIUFTU0VSVF9E
SVNBQkxFRDsgfQoraW5saW5lIGNvbnN0ZXhwciBib29sIG9ic2VydmVzT3ZlcmZsb3c8QXNzZXJ0
Tm9PdmVyZmxvdz4oKSB7IHJldHVybiBXVEZfQVNTRVJUX0VOQUJMRUQ7IH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBz
YWZlQWRkKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQogewpJbmRleDogU291cmNlL1dURi93dGYv
Q2hlY2tlZEJvb2xlYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DaGVja2VkQm9v
bGVhbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9DaGVja2VkQm9vbGVh
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiBjbGFzcyBDaGVja2VkQm9vbGVh
biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIENoZWNrZWRCb29sZWFuKGNvbnN0
IENoZWNrZWRCb29sZWFuJiBvdGhlcikKICAgICAgICAgOiBtX3ZhbHVlKG90aGVyLm1fdmFsdWUp
CiAgICAgICAgICwgbV9jaGVja2VkKGZhbHNlKQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAK
ICAgICBDaGVja2VkQm9vbGVhbihib29sIHZhbHVlKQogICAgICAgICA6IG1fdmFsdWUodmFsdWUp
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgICAgICAs
IG1fY2hlY2tlZChmYWxzZSkKICNlbmRpZgogICAgIHsKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIAogICAgIG9wZXJhdG9yIGJvb2woKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fY2hlY2tlZCA9IHRydWU7CiAjZW5k
aWYKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAg
ICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX3ZhbHVlOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBtdXRhYmxlIGJvb2wgbV9jaGVja2VkOwogI2VuZGlm
CiB9OwpJbmRleDogU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGdW5jdGlvbjxPdXQoSW4u
Li4pPiBtX2Z1bmN0aW9uOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VO
QUJMRUQKICAgICBib29sIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQgeyBpc01haW5UaHJl
YWQoKSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzcs
NyArMzc3LDcgQEAgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldAogCiB2
b2lkIGluaXRpYWxpemVEYXRlcygpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9B
U1NFUlRfRU5BQkxFRAogICAgIHN0YXRpYyBib29sIGFscmVhZHlJbml0aWFsaXplZDsKICAgICBB
U1NFUlQoIWFscmVhZHlJbml0aWFsaXplZCk7CiAgICAgYWxyZWFkeUluaXRpYWxpemVkID0gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYv
d3RmL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2b2lkKiB0
cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhLaW5kCiAgICAgc2l6ZV90IHNpemUgPSByb3Vu
ZFVwVG9NdWx0aXBsZU9mKFdURjo6cGFnZVNpemUoKSwgcmVxdWVzdGVkU2l6ZSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoc2l6ZSA+PSByZXF1ZXN0ZWRTaXplKTsKICAgICB2b2lkKiByZXN1bHQgPSBP
U0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemUgLyBzaXplb2YodWludHB0cl90KTsgKytpKQogICAgICAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnRwdHJfdCo+KHJlc3VsdClbaV0gPT0gMCk7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9IYXNoVGFibGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw3ICs0NTMsNyBAQCBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5cGUqIGxvb2t1cChjb25zdCBUJik7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1
ZVR5cGUqIGlubGluZUxvb2t1cChjb25zdCBUJik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5
KCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVu
Y3koKSB7IH0KQEAgLTUwOSw3ICs1MDksNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihICiAgICAgICAgIGl0ZXJhdG9yIG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1
ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJs
ZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtl
S25vd25Hb29kQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29u
c3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25v
d25Hb29kKTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxF
RAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSBjb25zdDsK
ICNlbHNlCiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNp
emUoKSB7IH0KQEAgLTYwOSw3ICs2MDksNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihICiAgICAgICAgIHJldHVybiBrZXk7CiAgICAgfQogCi0jaWYgQVNTRVJUX0RJ
U0FCTEVECisjaWYgIVdURl9BU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KQEAgLTYxNyw3ICs2MTcsNyBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAgICAgewogICAgIH0K
IAotI2Vsc2UKKyNlbHNlIC8vIFdURl9BU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KQEAgLTYzMCwxMCAr
NjMwLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEgKICAgICAg
ICAgVmFsdWVUeXBlKiBkZWxldGVkVmFsdWVQdHIgPSByZWludGVycHJldF9jYXN0X3B0cjxWYWx1
ZVR5cGUqPigmZGVsZXRlZFZhbHVlQnVmZmVyKTsKICAgICAgICAgVmFsdWVUeXBlJiBkZWxldGVk
VmFsdWUgPSAqZGVsZXRlZFZhbHVlUHRyOwogICAgICAgICBUcmFpdHM6OmNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShkZWxldGVkVmFsdWUpOwotICAgICAgICBBU1NFUlQoIUhhc2hUcmFuc2xhdG9yOjpl
cXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoZGVsZXRlZFZhbHVlKSwga2V5KSk7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoa2V5LCAhSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFj
dChkZWxldGVkVmFsdWUpLCBrZXkpKTsKICAgICB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIFdURl9B
U1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVD4KQEAgLTE0MTcsNyArMTQxNyw3IEBAIERFQ0xBUkVfQUxMT0NB
VE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEgKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CiAgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0CkBA
IC0xNDQ3LDcgKzE0NDcsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihICiAKICAgICAgICAgICAgIGF1dG8mIGtleSA9IEV4dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkp
OwogICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQgPSBmaW5kKGtleSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7CisgICAgICAgICAgICBBU1NFUlRfVU5V
U0VEKGl0LCBlbnRyeSA9PSBpdC5tX3Bvc2l0aW9uKTsKICAgICAgICAgICAgICsrY291bnQ7CiAK
ICAgICAgICAgICAgIFZhbHVlQ2hlY2s8S2V5Pjo6Y2hlY2tDb25zaXN0ZW5jeShrZXkpOwpAQCAt
MTQ2MCw3ICsxNDYwLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
SAogICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPT0gbV90YWJsZVNpemVNYXNrICsgMSk7CiAg
ICAgfQogCi0jZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gV1RGX0FTU0VSVF9F
TkFCTEVECiAKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0xvZ2dlckhlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xvZ2dl
ckhlbHBlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxw
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyB1aW50NjRfdCBsb3dXb3JkID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KChoaWdoV29yZCA8
PCAzMikgKyBsb3dXb3JkKTsKICAgICB9Ci0jZWxzZQorI2Vsc2UgLy8gUkVMRUFTRV9MT0dfRElT
QUJMRUQKIAogI2RlZmluZSBMT0dJREVOVElGSUVSIChXVEY6Om51bGxvcHQpCiAKQEAgLTg4LDgg
Kzg4LDggQEAgcHVibGljOgogI2RlZmluZSBJTkZPX0xPR19JRihjb25kaXRpb24sIC4uLikgICAg
ICAgKCh2b2lkKTApCiAjZGVmaW5lIERFQlVHX0xPR19JRihjb25kaXRpb24sIC4uLikgICAgICAo
KHZvaWQpMCkKIAotI2VuZGlmCi0gICAgCisjZW5kaWYgLy8gUkVMRUFTRV9MT0dfRElTQUJMRUQK
KwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9OYXR1cmFs
TG9vcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9OYXR1cmFsTG9vcHMuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvTmF0dXJhbExvb3BzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgaWYgKGxvb3AtPmhlYWRlcigpID09IGJsb2NrKQogICAgICAgICAgICAg
cmV0dXJuIGxvb3A7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlm
IChXVEZfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIGZvciAoOyBsb29wOyBsb29wID0g
aW5uZXJNb3N0T3V0ZXJMb29wKCpsb29wKSkKICAgICAgICAgICAgICAgICBBU1NFUlQobG9vcC0+
aGVhZGVyKCkgIT0gYmxvY2spOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9OZXZl
ckRlc3Ryb3llZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVk
LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBBU1NFUlQoIW1faXNDb25zdHJ1Y3RlZCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
V1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1faXNDb25zdHJ1Y3RlZCA9IHRydWU7CiAjZW5k
aWYKIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFQqIG9wZXJhdG9y
LT4oKSBjb25zdCB7IHJldHVybiBzdG9yYWdlUG9pbnRlcigpOyB9CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc0NvbnN0cnVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdGVkOyB9CiAjZW5kaWYKIApAQCAtMTM3LDcgKzEz
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IE1heWJlUmVsYXgoUHRyVHlwZSogcHRy
KSB7IHB0ci0+cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7IH0KICAgICB9OwogCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIC8vIExhenlOZXZlckRl
c3Ryb3llZCBvYmplY3RzIGFyZSBhbHdheXMgc3RhdGljLCBzbyB0aGlzIHZhcmlhYmxlIGlzIGlu
aXRpYWxpemVkIHRvIGZhbHNlLgogICAgIC8vIEl0IG11c3Qgbm90IGJlIGluaXRpYWxpemVkIGR5
bmFtaWNhbGx5OyB0aGF0IHdvdWxkIG5vdCBiZSB0aHJlYWQgc2FmZS4KICAgICBib29sIG1faXND
b25zdHJ1Y3RlZDsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksMTMgKzc5LDE5IEBA
IHB1YmxpYzoKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0KFQgdCkKICAgICAgICAgOiBtX3N0b3Jh
Z2Uoc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+KHQpKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIC8vIFRoaXMgYXNzZXJ0aW9uIHdpbGwgY29uZmxpY3Qgd2l0aCB0aGUgY29uc3RleHBy
IGF0dHJpYnV0ZSBpZiB3ZSBlbmFibGUgaXQgb24gTkRFQlVHIGJ1aWxkcy4KICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghbV9zdG9yYWdlIHx8IGhhc09uZUJpdFNldChtX3N0b3JhZ2UpLCAi
RW51bWVyYXRvciBpcyBub3QgYSB6ZXJvIG9yIGEgcG9zaXRpdmUgcG93ZXIgb2YgdHdvLiIpOwor
I2VuZGlmCiAgICAgfQogCiAgICAgY29uc3RleHByIE9wdGlvblNldChzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQogICAgIHsKICAgICAgICAgZm9yIChhdXRvJiBvcHRp
b24gOiBpbml0aWFsaXplckxpc3QpIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICAvLyBU
aGlzIGFzc2VydGlvbiB3aWxsIGNvbmZsaWN0IHdpdGggdGhlIGNvbnN0ZXhwciBhdHRyaWJ1dGUg
aWYgd2UgZW5hYmxlIGl0IG9uIE5ERUJVRyBidWlsZHMuCiAgICAgICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGhhc09uZUJpdFNldChzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4ob3B0aW9uKSks
ICJFbnVtZXJhdG9yIGlzIG5vdCBhIHBvc2l0aXZlIHBvd2VyIG9mIHR3by4iKTsKKyNlbmRpZgog
ICAgICAgICAgICAgbV9zdG9yYWdlIHw9IHN0YXRpY19jYXN0PFN0b3JhZ2VUeXBlPihvcHRpb24p
OwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ2LDEyICsx
MDQ2LDM3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWZuZGVmIEVOQUJMRV9FWENFUFRJT05fU0NP
UEVfVkVSSUZJQ0FUSU9OCisjaWYgQVNBTl9FTkFCTEVECisjaWZuZGVmIEpTQ19BU1NFUlRfRU5B
QkxFRAorI2RlZmluZSBKU0NfQVNTRVJUX0VOQUJMRUQgMQorI2VuZGlmCisjZW5kaWYKKworLyog
QVNTRVJUX0VOQUJMRUQgc2hvdWxkIGJlIHRydWUgaWYgd2Ugd2FudCB0aGUgY3VycmVudCBjb21w
aWxhdGlvbiB1bml0IHRvCisgICBkbyBkZWJ1ZyBhc3NlcnRpb24gY2hlY2tzIHVuY29uZGl0aW9u
YWxseSAoZS5nLiAgdHJlYXQgYSBkZWJ1ZyBBU1NFUlQKKyAgIGxpa2UgYSBSRUxFQVNFX0FTU0VS
VC4KKyovCisjaWZuZGVmIEFTU0VSVF9FTkFCTEVECiAjaWZkZWYgTkRFQlVHCi0jZGVmaW5lIEVO
QUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OIDAKKyNkZWZpbmUgQVNTRVJUX0VOQUJM
RUQgMAogI2Vsc2UKLSNkZWZpbmUgRU5BQkxFX0VYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04g
MQorI2RlZmluZSBBU1NFUlRfRU5BQkxFRCAxCisjZW5kaWYKICNlbmRpZgorCisjaWZuZGVmIEpT
Q19BU1NFUlRfRU5BQkxFRAorI2RlZmluZSBKU0NfQVNTRVJUX0VOQUJMRUQgQVNTRVJUX0VOQUJM
RUQKKyNlbmRpZgorI2lmbmRlZiBXVEZfQVNTRVJUX0VOQUJMRUQKKyNkZWZpbmUgV1RGX0FTU0VS
VF9FTkFCTEVEIEpTQ19BU1NFUlRfRU5BQkxFRAorI2VuZGlmCisKKy8qIEl0J3MgaW1wb3J0YW50
IHRoYXQgRU5BQkxFX0VYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04gYmUgdHJ1ZSBpZiBKU0Nf
QVNTRVJUX0VOQUJMRUQKKyAgIGlzIHRydWUgcmVnYXJkbGVzcyBvZiB3aGF0IHZhbHVlIEFTU0VS
VF9FTkFCTEVEIGlzLiBUaGUgbGF5b3V0IG9mIHRoZSBFeGNlcHRpb25TY29wZQorICAgY2xhc3Nl
cyBkZXBlbmQgb24gRU5BQkxFX0VYQ0VQVElPTl9TQ09QRV9WRVJJRklDQVRJT04gcmVnYXJkbGVz
cyBvZiBBU1NFUlRfRU5BQkxFRC4KKyovCisjaWZuZGVmIEVOQUJMRV9FWENFUFRJT05fU0NPUEVf
VkVSSUZJQ0FUSU9OCisjZGVmaW5lIEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9O
IEpTQ19BU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkgJiYgSEFW
RShNQUNISU5FX0NPTlRFWFQpICYmIChDUFUoWDg2XzY0KSB8fCBDUFUoQVJNNjQpKQpJbmRleDog
U291cmNlL1dURi93dGYvUHRyVGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUHRy
VGFnLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL1B0clRhZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxMCBAQCBjb25zdGV4cHIgUHRyVGFnIEFueVB0clRh
ZyA9IHN0YXRpY19jYXN0CiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWdpc3RlclB0clRhZ0xv
b2t1cChQdHJUYWdMb29rdXAqKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEJhZFRh
Zyhjb25zdCB2b2lkKiwgUHRyVGFnIGV4cGVjdGVkVGFnKTsKIAotI2lmIEFTU0VSVF9ESVNBQkxF
RAotY29uc3RleHByIGJvb2wgZW5hYmxlUHRyVGFnRGVidWdBc3NlcnQgPSBmYWxzZTsKLSNlbHNl
CisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiBjb25zdGV4cHIgYm9vbCBlbmFibGVQdHJUYWdEZWJ1
Z0Fzc2VydCA9IHRydWU7CisjZWxzZQorY29uc3RleHByIGJvb2wgZW5hYmxlUHRyVGFnRGVidWdB
c3NlcnQgPSBmYWxzZTsKICNlbmRpZgogCiAjZGVmaW5lIFdURl9QVFJUQUdfQVNTRVJUKGFjdGlv
biwgcHRyLCBleHBlY3RlZFRhZywgYXNzZXJ0aW9uKSBcCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDEwICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmIGRlZmlu
ZWQoTkRFQlVHKSAmJiAhRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCi0jZGVmaW5lIENIRUNL
X1JFRl9DT1VOVEVEX0xJRkVDWUNMRSAwCi0jZWxzZQorI2lmIFdURl9BU1NFUlRfRU5BQkxFRCB8
fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICNkZWZpbmUgQ0hFQ0tfUkVGX0NPVU5URURf
TElGRUNZQ0xFIDEKKyNlbHNlCisjZGVmaW5lIENIRUNLX1JFRl9DT1VOVEVEX0xJRkVDWUNMRSAw
CiAjZW5kaWYKIAogLy8gVGhpcyBiYXNlIGNsYXNzIGhvbGRzIHRoZSBub24tdGVtcGxhdGUgbWV0
aG9kcyBhbmQgYXR0cmlidXRlcy4KQEAgLTc1LDE0ICs3NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8g
bG9ja2luZyBhdCBjYWxsIHNpdGVzKS4KICAgICB2b2lkIGRpc2FibGVUaHJlYWRpbmdDaGVja3Mo
KQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAg
ICAgICAgIG1fYXJlVGhyZWFkaW5nQ2hlY2tzRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAg
fQogCiAgICAgc3RhdGljIHZvaWQgZW5hYmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkoKQogICAg
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAg
IGFyZVRocmVhZGluZ0NoZWNrc0VuYWJsZWRHbG9iYWxseSA9IHRydWU7CiAjZW5kaWYKICAgICB9
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZWZDb3VudGVkQmFz
ZSgpCiAgICAgICAgIDogbV9yZWZDb3VudCgxKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBX
VEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX2lzT3duZWRCeU1haW5UaHJlYWQoaXNNYWlu
VGhyZWFkKCkpCiAjZW5kaWYKICNpZiBDSEVDS19SRUZfQ09VTlRFRF9MSUZFQ1lDTEUKQEAgLTEw
Miw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGFwcGx5UmVmRGVyZWZUaHJlYWRp
bmdDaGVjaygpIGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgaWYgKGhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICAvLyBM
aWtlbHkgYW4gb3duZXJzaGlwIHRyYW5zZmVyIGFjcm9zcyB0aHJlYWRzIHRoYXQgbWF5IGJlIHNh
ZmUuCiAgICAgICAgICAgICBtX2lzT3duZWRCeU1haW5UaHJlYWQgPSBpc01haW5UaHJlYWQoKTsK
QEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fcmVmQ291bnQ7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5B
QkxFRAogICAgIG11dGFibGUgYm9vbCBtX2lzT3duZWRCeU1haW5UaHJlYWQ7CiAgICAgYm9vbCBt
X2FyZVRocmVhZGluZ0NoZWNrc0VuYWJsZWQgeyB0cnVlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1NpbmdsZVJvb3RHcmFwaC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9T
aW5nbGVSb290R3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFzc2VydElzQ29uc2lzdGVudCgp
IGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSByb290cygpIGZ1bmN0aW9uIHRvIGJlIGlkZW1w
b3RlbnQgd2hpbGUgd2UncmUgYWxpdmUgc28gd2UgY2FuIGNhY2hlCiAgICAgICAgIC8vIHRoZSBy
ZXN1bHQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJZiBhIHVzZXIgb2YgdGhpcyBjaGFuZ2VzIHRoZSBy
ZXN1bHQgb2YgaXRzIHJvb3RzKCkKICAgICAgICAgLy8gZnVuY3Rpb24sIGl0J3MgZXhwZWN0ZWQg
dGhhdCB0aGUgdXNlciB3aWxsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLgpJ
bmRleDogU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvU2l6ZUxpbWl0cy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYv
d3RmL1NpemVMaW1pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAKIG5h
bWVzcGFjZSBXVEYgewogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoU0VDVVJJVFlf
QVNTRVJUSU9OUykKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FT
U0VSVElPTlMpCiBzdHJ1Y3QgU2FtZVNpemVBc1JlZkNvdW50ZWQgewogICAgIGludCBhOwogICAg
IGJvb2wgYjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEwICsxMjgs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CiAgICAg
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
dm9pZCogY3VycmVudFBvc2l0aW9uID0gY3VycmVudFN0YWNrUG9pbnRlcigpOwogICAgICAgICBB
U1NFUlQobV9vcmlnaW4gIT0gbV9ib3VuZCk7Ci0gICAgICAgIEFTU0VSVChjdXJyZW50UG9zaXRp
b24gPCBtX29yaWdpbiAmJiBjdXJyZW50UG9zaXRpb24gPiBtX2JvdW5kKTsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChjdXJyZW50UG9zaXRpb24sIGN1cnJlbnRQb3NpdGlvbiA8IG1fb3JpZ2luICYm
IGN1cnJlbnRQb3NpdGlvbiA+IG1fYm91bmQpOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TFBhcnNlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDgsNyArMTE0OCw3IEBAIFVSTFBhcnNlcjo6VVJM
UGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQKICAgICAgICAgfHwgKGlucHV0LmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpCiAgICAgICAgICAgICAmJiBtX3VybC5t
X3N0cmluZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSkpOwogICAgIEFT
U0VSVChpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQobV91cmwpKTsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xh
dGlvbikgewogICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lu
bmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdC4KICAgICAgICAgVVJMUGFy
c2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNv
ZGluZyk7CkBAIC0xMTU2LDcgKzExNTYsNyBAQCBVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBT
dHJpbmcmIGlucHV0CiAgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQogICAgICAgICAgICAg
QVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKICAgICB9Ci0j
ZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNTRVJUX0VOQUJMRUQKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTI1NDgsMTQgKzI1NDgsMTQgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYQogICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZl
cnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29k
ZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBkb21haW4u
bGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21haW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0
YWlscywgJmVycm9yKTsKIAogICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpICYmICFwcm9jZXNzaW5n
RGV0YWlscy5lcnJvcnMpIHsKLSNpZiBBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgVU5VU0VEX1BB
UkFNKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotI2Vsc2UKKyNpZiBXVEZfQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRl
ZDsgKytpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNBU0NJSShob3N0bmFtZUJ1ZmZlcltpXSkp
OwogICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBwZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsK
ICAgICAgICAgfQotI2VuZGlmCisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0obnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCk7CisjZW5kaWYgLy8gV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIGFz
Y2lpLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CiAgICAg
ICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkp
CiAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Q
b3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvVmFsdWVDaGVjay5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2sgewogICAgIHN0YXRpYyB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koY29uc3QgVCYpIHsgfQogfTsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBW
YWx1ZUNoZWNrPFAqPiB7CiAgICAgdHlwZWRlZiBQKiBUcmFpdFR5cGU7CiAgICAgc3RhdGljIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBQKiBwKQpAQCAtNDUsNiArNDUsNiBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmFsdWVDaGVjazxQCiAgICAgICAgIFZhbHVlQ2hlY2s8UD46
OmNoZWNrQ29uc2lzdGVuY3koKnApOwogICAgIH0KIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBXVEZf
QVNTRVJUX0VOQUJMRUQKIAogfQpJbmRleDogU291cmNlL1dURi93dGYvVmVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTk4LDcgKzE1OTgsNyBA
QCBpbmxpbmUgTWFsbG9jUHRyPFQsIE1hbGxvYz4gVmVjdG9yPFQsIGluCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwg
c2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxsb2M+CiBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHksIE1hbGxvYz46
OmNoZWNrQ29uc2lzdGVuY3koKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNT
RVJUX0VOQUJMRUQKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQogICAg
ICAgICBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5KGF0KGkpKTsKICNlbmRpZgpAQCAt
MTYyNSw3ICsxNjI1LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VCwg
aQogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
V1RGX0FTU0VSVF9FTkFCTEVECiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVj
azxWZWN0b3I8VD4+IHsKICAgICB0eXBlZGVmIFZlY3RvcjxUPiBUcmFpdFR5cGU7CiAgICAgc3Rh
dGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBWZWN0b3I8VD4mIHYpCkBAIC0xNjMzLDcg
KzE2MzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWCiAgICAg
ICAgIHYuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBX
VEZfQVNTRVJUX0VOQUJMRUQKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlw
ZW5hbWUgTWFsbG9jPgogdGVtcGxhdGU8dHlwZW5hbWUgVT4KSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1dlYWtIYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQu
aAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTM4LDEwICsxMzgsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9zZXQuc2l6ZSgpOwogICAgIH0KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeSgpIGNvbnN0IHsgfQotI2Vsc2UKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQK
ICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IG1fc2V0LmNoZWNrQ29uc2lzdGVu
Y3koKTsgfQorI2Vsc2UKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KICNl
bmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0ci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNCArNjgsMTQgQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3B0
cjsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fcHRyID0gbnVsbHB0cjsgfQogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgd2FzQ29uc3RydWN0
ZWRPbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhy
ZWFkOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBleHBs
aWNpdCBXZWFrUHRySW1wbChUKiBwdHIpCiAgICAgICAgIDogbV9wdHIoc3RhdGljX2Nhc3Q8dHlw
ZW5hbWUgVDo6V2Vha1ZhbHVlVHlwZSo+KHB0cikpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IFdURl9BU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJl
YWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKICAgICB7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgdm9pZCogbV9wdHI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IFdURl9BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVh
ZDsKICNlbmRpZgogfTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBXZWFrUHRyRmFjdG9yeSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vha1B0ckZhY3Rv
cnkoKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgOiBtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlm
CiAgICAgewpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWU+IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKIAogICAgIG11dGFibGUgUmVmUHRyPFdlYWtQ
dHJJbXBsPiBtX2ltcGw7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5B
QkxFRAogICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZDsKICNlbmRpZgogfTsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQyLDcgKzU0Miw3IEBAIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gQXRvbVN0cmlu
Z0ltcGw6OmwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIGJvb2wgQXRvbVN0cmluZ0ltcGw6OmlzSW5BdG9tU3Ry
aW5nVGFibGUoU3RyaW5nSW1wbCogc3RyaW5nKQogewogICAgIEF0b21TdHJpbmdUYWJsZUxvY2tl
ciBsb2NrZXI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkKCpz
dHJpbmdUYWJsZVByb3ZpZGVyLmF0b21TdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKICAgICB9CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzSW5BdG9tU3RyaW5nVGFibGUoU3RyaW5nSW1wbCop
OwogI2VuZGlmCiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBsb29rVXBTbG93Q2FzZShTdHJp
bmdJbXBsJik7CiB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5B
QkxFRAogCiAvLyBBdG9tU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwg
d2lsbCBBU1NFUlQgaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5j
eSwKIC8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4gV2UgZG9uJ3Qg
Y3VycmVudGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3QgdGhhdCBjYXNlLCBzbyB3ZSBkb24ndApA
QCAtMTE1LDcgKzExNSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFZhbHVlQ2hlY2s8Y29uc3QgQXRv
bVMKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IEF0b21TdHJpbmdJbXBs
KikgeyB9CiB9OwogCi0jZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNTRVJUX0VOQUJMRUQKIAogfQog
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjpyZWlmeVN0cmluZygpIGNv
bnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
V1RGX0FTU0VSVF9FTkFCTEVECiAgICAgbV9pc1JlaWZpZWQgPSB0cnVlOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcw
LDcgKzM3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljX2Fzc2VydChTdHJpbmc6Ok1heExlbmd0
aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSwgIiIpOwogICAgIENoZWNr
ZWQ8aW50MzJfdCwgQ29uZGl0aW9uYWxDcmFzaE9uT3ZlcmZsb3c+IG1fbGVuZ3RoOwogICAgIGJv
b2wgbV9pczhCaXQgeyB0cnVlIH07Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NF
UlRfRU5BQkxFRAogICAgIG11dGFibGUgYm9vbCBtX2lzUmVpZmllZCB7IGZhbHNlIH07CiAjZW5k
aWYKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYxMiw3ICs2MTIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB1bnNp
Z25lCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPiBib29sIGlubGluZSBoYXNQcmVm
aXhXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBz
dHJpbmcsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJU
KCpsb3dlcmNhc2VMZXR0ZXJzKTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIGxldHRlciA9IGxvd2Vy
Y2FzZUxldHRlcnM7ICpsZXR0ZXI7ICsrbGV0dGVyKQogICAgICAgICBBU1NFUlQodG9BU0NJSUxv
d2VyVW5jaGVja2VkKCpsZXR0ZXIpID09ICpsZXR0ZXIpOwpJbmRleDogU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdIYXNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0hhc2hlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0hhc2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMiArNzcsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hhciBiKQogICAgIHsKICAgICAgICAg
aWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBX
VEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZh
bHNlOwogI2VuZGlmCiAgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1f
cGVuZGluZ0NoYXJhY3RlciwgYSk7CiAgICAgICAgICAgICBtX3BlbmRpbmdDaGFyYWN0ZXIgPSBi
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTM3
LDcgKzUzNyw3IEBAIHVzaW5nIFN0YXRpY1N0cmluZ0ltcGwgPSBTdHJpbmdJbXBsOjpTdGEKIAog
c3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gc2l6ZW9mKFN0YXRpY1N0cmluZ0lt
cGwpLCAiIik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVE
CiAKIC8vIFN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNT
RVJUIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8vIGFz
IHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4gV2UgZG9uJ3QgY3VycmVudGx5
IGhhdmUgYW55IHdheSB0byBkZXRlY3QgdGhhdCBjYXNlCkBAIC01NDYsNyArNTQ2LDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxTdHJpbmdJbXBsKgogICAgIHN0YXRpYyB2b2lkIGNo
ZWNrQ29uc2lzdGVuY3koY29uc3QgU3RyaW5nSW1wbCopIHsgfQogfTsKIAotI2VuZGlmCisjZW5k
aWYgLy8gV1RGX0FTU0VSVF9FTkFCTEVECiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFs
KGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqKTsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL3RleHQvU3ltYm9sSW1wbC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDcgKzE5OSw3IEBAIGlu
bGluZSBSZWdpc3RlcmVkU3ltYm9sSW1wbCogU3ltYm9sSW1wbDoKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXJlZFN5bWJvbEltcGwqPih0aGlzKTsKIH0KIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIC8vIFN5bWJvbEltcGxzIGNyZWF0ZWQgZnJv
bSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJUCiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNo
ZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5CiAvLyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5
IGZhc3RNYWxsb2MuCkBAIC0yMTQsNyArMjE0LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QKIFZhbHVl
Q2hlY2s8Y29uc3QgU3ltYm9sSW1wbCo+IHsKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KGNvbnN0IFN5bWJvbEltcGwqKSB7IH0KIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNT
RVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYv
d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnKSA6
IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sKSB7IH0KIH07CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAvLyBVbmlxdWVkU3RyaW5nSW1wbHMgY3JlYXRlZCBm
cm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQKIC8vIGluIHRoZSBnZW5lcmljIFZhbHVl
Q2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQg
YnkgZmFzdE1hbGxvYy4KQEAgLTU1LDcgKzU1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QKIFZhbHVl
Q2hlY2s8Y29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqPiB7CiAgICAgc3RhdGljIHZvaWQgY2hlY2tD
b25zaXN0ZW5jeShjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCopIHsgfQogfTsKLSNlbmRpZgorI2Vu
ZGlmIC8vIFdURl9BU1NFUlRfRU5BQkxFRAogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzg1IEBACisyMDIwLTAxLTA1ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgcnVubmluZyBhIHJlbGVhc2UgYnVp
bGQgd2l0aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlTb3VyY2U6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VEZXRhaWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6OkRh
dGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZURldGFpbHM6Om9wZXJh
dG9yPSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VGhyZWFkOjp0ZXJtaW5hdGlvblJlcXVlc3RlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpX
SExTTDo6QVNUOjpUeXBlQW5ub3RhdGlvbjo6VHlwZUFubm90YXRpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXSExTTDo6ZmluZEhpZ2hab21iaWVzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Om1h
dGNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpjaGVja0xpdGVyYWxUeXBlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0
b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNMOjpGaW5kQWxsVHlwZXM6OmFwcGVuZE5h
bWVkVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QpOgorICAgICAgICAqIGNzcy9DU1NDYWxjdWxh
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbGNPcGVyYXRpb25Ob2RlOjpw
cmltaXRpdmVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZh
bHVlRm9yUHJvcGVydHlJblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
aGVldC5jcHA6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY3RpdmVET01PYmplY3Q6OmFzc2VydFN1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCBjb25z
dCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3Bw
OgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAqIGRv
bS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA6CisgICAgICAgICogZG9tL0N1c3RvbUVs
ZW1lbnRSZWFjdGlvblF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVh
Y3Rpb25EaXNhbGxvd2VkU2NvcGU6OkN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29w
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkU2Nv
cGU6On5DdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkU2NvcGUpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aGl0VGVzdCk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGVj
cmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBkb20v
RWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6cG9wQW5jZXN0b3JT
aWJsaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKToKKyAg
ICAgICAgKiBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVy
YXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9w
ZXJhdG9yLS0pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJh
dG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6Om9wZXJhdG9yKyspOgor
ICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRJdGVyYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91
cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZU5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFz
c2VydGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6dHJhdmVyc2VBbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDb25zdEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VQcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMpOgor
ICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuY3BwOgorICAgICAgICAqIGRvbS9FdmVudENvbnRl
eHQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVu
dFBhdGguY3BwOgorICAgICAgICAqIGRvbS9FdmVudFNlbmRlci5oOgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6YWRkRXZlbnRM
aXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6c2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6aW5uZXJJbnZva2VF
dmVudExpc3RlbmVycyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bW92ZU5vZGVUb05ld0Rv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGVyZWYgY29uc3QpOgor
ICAgICAgICAqIGRvbS9TY3JpcHREaXNhbGxvd2VkU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxv
d2VkSW5TdWJ0cmVlKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAg
ICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckRhdGFMaXN0OjpleGVjdXRlIGNvbnN0KToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpyZW1vdmVTbG90RWxlbWVu
dEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3Rz
QWZ0ZXJTbG90TXV0YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmZp
bmRGaXJzdFNsb3RFbGVtZW50KToKKyAgICAgICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuaDoKKyAg
ICAgICAgKiBkb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2NvcGVPcmRlcmVkTWFwOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlT3Jk
ZXJlZE1hcDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5o
OgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgICogZmlsZWFwaS9CbG9iLmg6
CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUFsbEl0ZW1zRm9yUGFnZSk6CisgICAgICAgICog
aGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6Om5vdGlmeU9ic2VydmVyc0NhbnZhc0Rl
c3Ryb3llZCk6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmg6CisgICAgICAgICogaHRtbC9I
VE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGVjdGlvbk5hbWVkRWxlbWVu
dENhY2hlOjpkaWRQb3B1bGF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNzZXJ0Um93SXNJblRhYmxl
KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclBvc2l0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6
On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MUGFyc2VyU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hl
ZHVsZXI6OkhUTUxQYXJzZXJTY2hlZHVsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNl
clNjaGVkdWxlcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1
bGVyOjpyZXN1bWUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIu
aDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbjo6YmVnaW5TdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46
OmJlZ2luRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6ZW5kQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6fkhUTUxUcmVlQnVpbGRlcik6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Omdlb21l
dHJ5Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVkVmVydGljYWxQb3NpdGlvbik6CisgICAg
ICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0Lmg6Cisg
ICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjpCb3gpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldFRvcExlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRUb3ApOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6Qm94OjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6c2V0Q29udGVudEJveEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpC
b3g6OnNldENvbnRlbnRCb3hXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
OnNldEhvcml6b250YWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpz
ZXRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEhv
cml6b250YWxDb21wdXRlZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
OnNldEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldFBhZGRpbmcp
OgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lUmVjdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6SW5saW5lUmVjdDo6SW5saW5lUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0OjpzZXRUb3BMZWZ0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OklubGluZVJlY3Q6OnNldFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpJbmxpbmVSZWN0OjpzZXRCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6SW5saW5lUmVjdDo6c2V0TGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpJbmxp
bmVSZWN0OjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0
OjpzZXRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJv
eC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6TGluZUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpyZXNldEJhc2VsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpzZXREZXNj
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpyZXNl
dCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpSZWN0OjpSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OlJlY3Q6OnNldFRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6
c2V0VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJlY3Q6OnNldExlZnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6UmVjdDo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OlJlY3Q6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6Y2xvbmUg
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpDb2xsYXBzaWJsZUNvbnRlbnQ6
OmNvbGxhcHNlKToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6Q29sdW1uOjpzZXRXaWR0
aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjpDb2x1
bW46OnNldExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3Jp
ZDo6Q29sdW1uOjpzZXRMb2dpY2FsTGVmdCk6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUdyaWQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmFkZFN1YnJlc291cmNlTG9hZGVyKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6
cmVtb3ZlRnJvbUxSVUxpc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2Uu
Y3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvVmlld3BvcnRDb25m
aWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKiBwYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkN1cnJlbnRFdmVudFNjb3BlOjpDdXJyZW50RXZlbnRTY29wZSk6CisgICAgICAgICogcGxhdGZv
cm0vRGF0ZUNvbXBvbmVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6
OnRvU3RyaW5nRm9yVGltZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU3VwcGxl
bWVudGFibGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
YXRjaEJ1ZmZlcjo6U2NyYXRjaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JhdGNoQnVm
ZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6
OnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0FDRkxh
eWVyVHJlZUhvc3Q6OnNldFdpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL0NBQ0ZMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRh
OjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVD
b3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dzdEFs
bG9jYXRvckZhc3RNYWxsb2MuY3BwOgorICAgICAgICAoZ3N0QWxsb2NhdG9yRmFzdE1hbGxvY0Zy
ZWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBh
aW50aW5nQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OlBhaW50aW5nQ29udGV4
dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1w
bC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6
Y3JlYXRlVGlsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjp+Q29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFkaWVudERpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpmaWxsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6
OmFwcGVuZEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OlBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnN0
cm9rZUNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnRyYW5zZm9ybSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpzZXRUYWdz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDcm9zc09yaWdpblNhZmVIZWFkZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OlNRTGl0ZVN0YXRlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnByZXBhcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50OjpmaW5hbGl6ZSk6CisgICAgICAgICogcGxhdGZvcm0vc3Fs
L1NRTGl0ZVN0YXRlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DT01QdHIuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcGxleExpbmVMYXlvdXQ6OnJlbW92ZUlubGluZUJveCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGlu
Z09iamVjdDo6RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmpl
Y3RzOjphZGRQbGFjZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3Rz
OjpyZW1vdmVQbGFjZWRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9hdGluZ09iamVj
dHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5jcHA6CisgICAgICAgICogcmVuZGVy
aW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpwbGFjZUl0ZW1zT25HcmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbGlwUmVjdHNDYWNoZTo6Q2xpcFJlY3RzQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VWaXNpYmxl
Tm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp0cmF2ZXJzZVVuY2hhbmdlZFN1YnRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW5nQW5kSGll
cmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkRGVz
Y2VuZGFudHNUb092ZXJsYXBNYXBSZWN1cnNpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6Y29tcHV0ZU9mZnNldHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmFkZExheW91dERlbHRhKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheW91
dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjbGVhck5lZWRzTGF5b3V0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclF1b3Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3Rlc0Zvckxhbmd1YWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNv
bXB1dGVPdmVyZmxvd0Zyb21DZWxscyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRM
aW5lQm94ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dExpbmVCb3hlczo6Y2hl
Y2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5l
Qm94ZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRyeUh5cGhlbmF0aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvR3JpZEFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRTcGFuOjpHcmlkU3Bhbik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
QnVpbGRlclJ1YnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJ1
Ynk6OmRldGFjaCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3Np
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlUG9zaXRpb246OmNvbXB1dGVO
ZXh0U2libGluZyk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3Np
dGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6UGxhY2Vob2xkZXI6OlBsYWNlaG9s
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6UGxhY2Vob2xk
ZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6
YXBwZW5kQ0ZGVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVy
OjpmaXJzdEdseXBoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZl
cnRlcjo6YXBwZW5kS0VSTlRhYmxlKToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFu
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5z
Zm9ybURpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybURpc3RhbmNlOjpz
Y2FsZWREaXN0YW5jZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0
YW5jZTo6YWRkU1ZHVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1E
aXN0YW5jZTo6YWRkVG9TVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtRGlzdGFuY2U6OmRpc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdl
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgICogd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldEds
b2JhbFNjb3BlOjp+UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIHhtbC9YUGF0
aFN0ZXAuY3BwOgorCiAyMDIwLTAxLTA1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1NMTF0gR2VuZXJhdGUgcnVucyBmb3IgcHJlc2VydmVkIG5ldyBsaW5lcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNl
LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQg
RmV0Y2hCb2R5U291cmNlOjpkb0NhbmNlbCgpCiAKIHZvaWQgRmV0Y2hCb2R5U291cmNlOjpjbG9z
ZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9pc0Nsb3Nl
ZCA9IHRydWU7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keVNvdXJjZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBGZXRjaEJvZHlPd25lciogbV9ib2R5T3duZXI7CiAg
ICAgYm9vbCBtX2lzQ2FuY2VsbGluZyB7IGZhbHNlIH07Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsKICNlbmRpZgogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZURldGFpbHMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jdXJyZW50VXNhZ2UoZGV0YWlscy5tX2N1cnJl
bnRVc2FnZSkKICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShkZXRhaWxzLm1fY3JlYXRpb25UaW1l
KQogICAgICAgICAsIG1fbW9kaWZpY2F0aW9uVGltZShkZXRhaWxzLm1fbW9kaWZpY2F0aW9uVGlt
ZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX3RocmVh
ZChkZXRhaWxzLm1fdGhyZWFkLmNvcHlSZWYoKSkKICNlbmRpZgogICAgIHsKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogICAgICAgICBtX2N1cnJlbnRVc2FnZSA9IGRldGFpbHMubV9jdXJyZW50
VXNhZ2U7CiAgICAgICAgIG1fY3JlYXRpb25UaW1lID0gZGV0YWlscy5tX2NyZWF0aW9uVGltZTsK
ICAgICAgICAgbV9tb2RpZmljYXRpb25UaW1lID0gZGV0YWlscy5tX21vZGlmaWNhdGlvblRpbWU7
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fdGhyZWFkID0g
ZGV0YWlscy5tX3RocmVhZC5jb3B5UmVmKCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICp0aGlz
OwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgY3VycmVudFVzYWdlKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50VXNhZ2U7IH0KICAgICBPcHRpb25hbDxXYWxsVGltZT4g
Y3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KICAgICBPcHRp
b25hbDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZp
Y2F0aW9uVGltZTsgfQotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFRo
cmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KICNlbmRpZgog
CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9jdXJyZW50VXNhZ2Ug
eyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4g
bV9jcmVhdGlvblRpbWU7CiAgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJs
ZVRyYWl0cz4gbV9tb2RpZmljYXRpb25UaW1lOwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsK
ICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGFzay5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsNyArODAsNyBAQCB2b2lkIERhdGFiYXNlVGFzazo6cGVyZm9ybVRhc2soKQogICAgIGlm
IChtX3N5bmNocm9uaXplcikKICAgICAgICAgbV9zeW5jaHJvbml6ZXItPnRhc2tDb21wbGV0ZWQo
KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY29t
cGxldGUgPSB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBieSB0aGUgdGFz
ay4KICAgICB2b2lkIHRhc2tDb21wbGV0ZWQoKTsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIGJvb2wgaGFzQ2hlY2tlZEZvclRlcm1pbmF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDaGVja2VkRm9yVGVybWluYXRpb247IH0KICAgICB2b2lkIHNldEhhc0NoZWNr
ZWRGb3JUZXJtaW5hdGlvbigpIHsgbV9oYXNDaGVja2VkRm9yVGVybWluYXRpb24gPSB0cnVlOyB9
CiAjZW5kaWYKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdGFza0NvbXBs
ZXRlZCB7IGZhbHNlIH07CiAgICAgTG9jayBtX3N5bmNocm9ub3VzTXV0ZXg7CiAgICAgQ29uZGl0
aW9uIG1fc3luY2hyb25vdXNDb25kaXRpb247Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgYm9vbCBtX2hhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbiB7IGZhbHNlIH07CiAj
ZW5kaWYKIH07CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIERhdGFiYXNlJiBkYXRh
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaGFzU3luY2hyb25pemVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zeW5jaHJvbml6ZXI7IH0KICAgICBib29sIGhhc0NoZWNrZWRGb3JUZXJtaW5h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3luY2hyb25pemVyLT5oYXNDaGVja2VkRm9yVGVybWlu
YXRpb24oKTsgfQogI2VuZGlmCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fY29tcGxldGUg
eyBmYWxzZSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJl
cXVlc3RUZXJtaW5hdGlvbigKIAogYm9vbCBEYXRhYmFzZVRocmVhZDo6dGVybWluYXRpb25SZXF1
ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0YXNrU3luY2hyb25pemVyKSBjb25zdAog
ewotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmICh0YXNrU3luY2hy
b25pemVyKQogICAgICAgICB0YXNrU3luY2hyb25pemVyLT5zZXRIYXNDaGVja2VkRm9yVGVybWlu
YXRpb24oKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGln
aFpvbWJpZUZpbmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBm
aW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJv
Z3JhbSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBI
aWdoWm9tYmllRmluZGVyIGZpbmRlcjsKICAgICBmaW5kZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3Jh
bSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMSW5mZXJUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IEFT
VDo6VHlwZSYgdW5pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGlzPEFTVDo6TmFt
ZWRUeXBlPih1bmlmeVRoaXMpICYmIGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeU90aGVyKSkgewot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBhdXRvJiBu
YW1lZFRoaXMgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlUaGlzKTsKICAgICAgICAg
YXV0byYgbmFtZWRPdGhlciA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1bmlmeU90aGVyKTsK
ICAgICAgICAgQVNTRVJUKCFpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZFRoaXMpICYmICFp
czxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZE90aGVyKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFs
VHlwZUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV0hM
U0wgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMg
QVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIGdldE5hdGl2ZVR5cGVEZWNsYXJhdGlvbihBU1Q6
OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKIHsKICAgICBpZiAoIWlzPEFTVDo6VHlw
ZVJlZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpKQpAQCAtNzMsMTQgKzcz
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVjbGFyYXRpb24tPmNh
blJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKHVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLnZh
bHVlKCkpKTsKICAgICB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAog
dm9pZCBjaGVja0xpdGVyYWxUeXBlcyhQcm9ncmFtJiBwcm9ncmFtKQogewotI2lmIEFTU0VSVF9E
SVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSNlbHNlCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBMaXRlcmFsVHlwZUNoZWNrZXIoKS5WaXNpdG9yOjp2aXNpdChwcm9ncmFtKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZUNvbnN0cnVj
dG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3Ry
dWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBhcHBlbmROYW1lZFR5cGUoQVNUOjpOYW1lZFR5cGUmIHR5cGUpCiAgICAgewogICAg
ICAgICAvLyBUaGUgd2F5IHdlIHdhbGsgdGhlIEFTVCBlbnN1cmVzIHdlIHNob3VsZCBuZXZlciB2
aXNpdCBhIG5hbWVkIHR5cGUgdHdpY2UuCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX25hbWVkVHlwZXMpCiAgICAg
ICAgICAgICBBU1NFUlQoJmVudHJ5LmdldCgpLnVuaWZ5Tm9kZSgpICE9ICZ0eXBlLnVuaWZ5Tm9k
ZSgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
QVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FTVC9XSExTTEFkZHJl
c3NTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGNsYXNzIFR5cGVBbm5v
dGF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUeXBl
QW5ub3RhdGlvbigpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgICAgIDogbV9lbXB0eSh0cnVlKQogI2VuZGlmCiAgICAgewpAQCAtMTI5LDcgKzEyOSw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWYXJpYW50PExlZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0
VmFsdWUsIFJpZ2h0VmFsdWU+IG1faW5uZXI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2VtcHR5IHsgZmFsc2UgfTsKICNlbmRpZgogfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKLSNpZm5k
ZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7
IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
SlNMYXp5RXZlbnRMaXN0ZW5lcgogI2VuZGlmCiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Nsb25lSW5TaGFkb3dUcmVl
T2ZTVkdVc2VFbGVtZW50KE5vZGUmIG9yaWdpbmFsTm9kZSwgRXZlbnRUYXJnZXQmIGV2ZW50VGFy
Z2V0KQogewogICAgIGlmICghZXZlbnRUYXJnZXQuaXNOb2RlKCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
UmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShDcmVhdGlvbkFyZ3VtZW50cyYmKTsK
ICAgICBKU0xhenlFdmVudExpc3RlbmVyKENyZWF0aW9uQXJndW1lbnRzJiYsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mKTsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgY2hlY2tWYWxpZGl0eUZvckV2ZW50VGFy
Z2V0KEV2ZW50VGFyZ2V0JikgZmluYWw7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRvQnl0ZWNvZGUoQ29tYmluZWRVUgog
CiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNpb25Db21waWxh
dGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTiwgVmVjdG9yPENvbnRlbnRFeHRl
bnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVKU09OID0gcnVsZUpT
T04uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gcGFyc2VkUnVsZUxpc3QuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgQVNTRVJUKHBhcnNlUnVsZUxpc3QocnVsZUpTT04pLnZhbHVl
KCkgPT0gcGFyc2VkUnVsZUxpc3QpOwogICAgIH0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg3
LDcgKzEyODcsNyBAQCBDU1NVbml0VHlwZSBDU1NDYWxjT3BlcmF0aW9uTm9kZTo6cHJpbWl0CiAg
ICAgYXV0byB1bml0Q2F0ZWdvcnkgPSBjYXRlZ29yeSgpOwogICAgIHN3aXRjaCAodW5pdENhdGVn
b3J5KSB7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAoYXV0byYgY2hpbGQg
OiBtX2NoaWxkcmVuKQogICAgICAgICAgICAgQVNTRVJUKGNoaWxkLT5jYXRlZ29yeSgpID09IENh
bGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4Myw3ICszMDgzLDcgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhhc2lzQ3VzdG9tTWFyaygpLCBDU1NVbml0
VHlwZTo6Q1NTX1NUUklORyk7CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBoYXNpc01hcms6OkF1
dG86CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJ
U0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7
CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6RG90OgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRDU1NVbml0
VHlwZUZvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdUeXBlKENTU1Vu
aXRUeXBlIHR5cGUpCiB7CkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
U3RyaW5nVHlwZShDU1NVbml0VAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2VuZGlmIC8vICFB
U1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB0eXBlZGVmIEhhc2hN
YXA8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqLCBTdHJpbmc+IENTU1RleHRDYWNoZTsKIHN0YXRp
YyBDU1NUZXh0Q2FjaGUmIGNzc1RleHRDYWNoZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMiw3ICs4MTIsNyBAQCBTdHJpbmcgQ1NTU2Vs
ZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTCiAgICAgICAgICAgICByZXR1cm4gdGFnSGlzdG9y
eS0+c2VsZWN0b3JUZXh0KCIgfiAiICsgYnVpbGRlci50b1N0cmluZygpICsgcmlnaHRTaWRlKTsK
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3I6CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hl
ZXQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBD
U1NTdHlsZVNoZWV0KiBtX3N0eWxlU2hlZXQ7CiB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0
UGFyZW50KE5vZGUqIHBhcmVudE5vZGUpCiB7CiAgICAgLy8gT25seSB0aGVzZSBub2RlcyBjYW4g
YmUgcGFyZW50cyBvZiBTdHlsZVNoZWV0cywgYW5kIHRoZXkgbmVlZCB0byBjYWxsIGNsZWFyT3du
ZXJOb2RlKCkgd2hlbiBtb3ZlZCBvdXQgb2YgZG9jdW1lbnQuCkBAIC02Nyw3ICs2Nyw3IEBAIHN0
YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXIKICAgICAgICAgfHwgaXM8U1ZH
U3R5bGVFbGVtZW50PigqcGFyZW50Tm9kZSkKICAgICAgICAgfHwgcGFyZW50Tm9kZS0+bm9kZVR5
cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7CiB9Ci0jZW5kaWYKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVl
dDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIENTU0ltcG9ydFJ1bGUq
IG93bmVyUnVsZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBBY3RpdmVET01PYmplY3Q6On5B
Y3RpdmVET01PYmplY3QoKQogCiB2b2lkIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVk
KCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NF
UlQoIW1fc3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkKTsKICAgICBtX3N1c3BlbmRJZk5lZWRlZFdh
c0NhbGxlZCA9IHRydWU7CiAjZW5kaWYKQEAgLTk1LDE4ICs5NSwxNiBAQCB2b2lkIEFjdGl2ZURP
TU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZCgqdGhpcyk7CiB9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBBY3RpdmVET01PYmplY3Q6OmFz
c2VydFN1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCgpIGNvbnN0CiB7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIGlmICghbV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQpCiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiRmFpbGVkIHRvIGNhbGwgc3VzcGVuZElmTmVlZGVkKCkgZm9yICVzIiwgYWN0aXZl
RE9NT2JqZWN0TmFtZSgpKTsKLSNlbmRpZgogICAgIEFTU0VSVChtX3N1c3BlbmRJZk5lZWRlZFdh
c0NhbGxlZCk7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIGJvb2wg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyAr
MTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudEludGVy
bmFsKEV2ZW50VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50PiYmKTsKIAogICAgIHVuc2ln
bmVkIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgeyAwIH07Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCB7
IGZhbHNlIH07CiAgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3Vy
cmVudCgpIH07CiAjZW5kaWYKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzazsKIH07CiAKLSNpZiBBU1NF
UlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogaW5saW5lIHZvaWQgQWN0aXZlRE9N
T2JqZWN0Ojphc3NlcnRTdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQoKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKFIKIENoaWxk
Tm9kZXNMYXp5U25hcHNob3QqIENoaWxkTm9kZXNMYXp5U25hcHNob3Q6OmxhdGVzdFNuYXBzaG90
OwogCiB1bnNpZ25lZCBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OnNfY291bnQgPSAwOwotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OjpFdmVudEFsbG93ZWRTY29wZSogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRT
Y29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIENvbnRhaW5lckNoaWxk
UmVtb3ZhbFNjb3BlKiBDb250YWluZXJDaGlsZFJlbW92YWxTY29wZTo6c19zY29wZSA9IG51bGxw
dHI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBEZWxldGUgdGhpcyBjbGFzcyBhZnRlciBm
aXhpbmcgRm9ybUFzc29jaWF0ZWRFbGVtZW50IHRvIGF2b2lkIGNhbGxpbmcgZ2V0RWxlbWVudEJ5
SWQgZHVyaW5nIGEgdHJlZSByZW1vdmFsLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogY2xhc3MgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUgewogcHVibGljOgog
ICAgIENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKENvbnRhaW5lck5vZGUmIHBhcmVudE9mUmVt
b3ZlZFRyZWUsIE5vZGUmIGNoaWxkKQpAQCAtNTQsMTIgKzU0LDEyIEBAIHByaXZhdGU6CiAgICAg
Q29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUqIG1fcHJldmlvdXNTY29wZTsKICAgICBzdGF0aWMg
Q29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUqIHNfc2NvcGU7CiB9OwotI2Vsc2UKKyNlbHNlIC8v
IG5vdCBBU1NFUlRfRU5BQkxFRAogY2xhc3MgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUgewog
cHVibGljOgogICAgIENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKENvbnRhaW5lck5vZGUmLCBO
b2RlJikgeyB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAKIE5v
ZGVWZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJ
bnNlcnRlZFRyZWUsIE5vZGUmKTsKIHZvaWQgbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZChDb250YWlu
ZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBOb2RlJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlCiAgICAgcXVldWUtPmFkZChlbGVtZW50KTsKIH0KIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogdW5zaWduZWQgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uRGlzYWxsb3dlZFNjb3BlOjpzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRp
c2FsbG93ZWRDb3VudCA9IDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NCwyNSArOTQsMjUgQEAgY2xhc3MgQ3VzdG9tRWxlbWVudFJlYWN0aW9uRGlzYWxs
b3dlZFNjbwogcHVibGljOgogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29w
ZSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICBzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCsrOwogI2VuZGlmCiAg
ICAgfQogCiAgICAgfkN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29wZSgpCiAgICAg
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBBU1NF
UlQoc19jdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkQ291bnQpOwogICAgICAgICBzX2N1
c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudC0tOwogI2VuZGlmCiAgICAgfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc3RhdGljIGJvb2wg
aXNSZWFjdGlvbkFsbG93ZWQoKSB7IHJldHVybiAhc19jdXN0b21FbGVtZW50UmVhY3Rpb25EaXNh
bGxvd2VkQ291bnQ7IH0KICNlbmRpZgogCiAgICAgY2xhc3MgQWxsb3dlZFNjb3BlIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBwdWJsaWM6CiAgICAgICAg
IEFsbG93ZWRTY29wZSgpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxDb3VudChzX2N1c3RvbUVs
ZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCkKQEAgLTEyNywxMSArMTI3LDExIEBAIHB1Ymxp
YzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxDb3VudDsKLSNl
bmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgfTsKIAogcHJpdmF0ZToKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdW5zaWduZWQgc19jdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkQ291bnQ7CiAK
ICAgICBmcmllbmQgY2xhc3MgQWxsb3dlZFNjb3BlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTY2LDcgKzExNjYsNyBAQCBzdHJ1Y3QgVW5pY29kZUNvZGVQ
b2ludFJhbmdlIHsKICAgICBVQ2hhcjMyIG1heGltdW07CiB9OwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBjb25zdCBVbmljb2RlQ29kZVBvaW50UmFu
Z2UmIGIpCiB7CkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IFVuaWNvCiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGIubWluaW11bTsKIH0KIAot
I2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIGlubGluZSBib29sIG9w
ZXJhdG9yPChjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGEsIFVDaGFyMzIgYikKIHsKQEAg
LTgyMTAsNyArODIxMCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJl
cXUKICAgICBpZiAoIXJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gaGl0VGVzdFJlc3RvcmVyIHsgbV9pbkhpdFRlc3RpbmcsIHRydWUgfTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NSw3ICszNzUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuIHx8ICFtX3JlZmVyZW5jaW5n
Tm9kZUNvdW50KTsKICAgICAgICAgLS1tX3JlZmVyZW5jaW5nTm9kZUNvdW50OwogICAgICAgICBp
ZiAoIW1fcmVmZXJlbmNpbmdOb2RlQ291bnQgJiYgIXJlZkNvdW50KCkpIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1fZGVsZXRpb25IYXNC
ZWd1biA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAgIG1fcmVmQ291bnRBbmRQYXJlbnRCaXQg
PSBzX3JlZkNvdW50SW5jcmVtZW50OyAvLyBBdm9pZCBkb3VibGUgZGVzdHJ1Y3Rpb24gdGhyb3Vn
aCB1c2Ugb2YgUmVmPFQ+L1JlZlB0cjxUPi4gKFRoaXMgaXMgYSBzZWN1cml0eSBtaXRpZ2F0aW9u
IGluIGNhc2Ugb2YgcHJvZ3JhbW1lciBlcnJvci4gSXQgd2lsbCBBU1NFUlQgaW4gZGVidWcgYnVp
bGRzLikKQEAgLTE1MjcsNyArMTUyNyw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsKICAg
ICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgYm9vbCBpbkhpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2luSGl0VGVz
dGluZzsgfQogI2VuZGlmCiAKQEAgLTIwMDQsNyArMjAwNCw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1fYXJlRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzU3VzcGVuZGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fdXNlckRpZEludGVyYWN0V2l0aFBhZ2UgeyBmYWxzZSB9OwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9pbkhpdFRl
c3RpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4OCw3ICsyMjg4LDcgQEAgdm9pZCBFbGVtZW50OjphZGRTaGFkb3dSb290
KFJlZjxTaGFkb3dSbwogICAgICAgICBzaGFkb3dSb290LnNldEhvc3QodGhpcyk7CiAgICAgICAg
IHNoYWRvd1Jvb3Quc2V0UGFyZW50VHJlZVNjb3BlKHRyZWVTY29wZSgpKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBBU1NFUlQobm90aWZ5Q2hp
bGROb2RlSW5zZXJ0ZWQoKnRoaXMsIHNoYWRvd1Jvb3QpLmlzRW1wdHkoKSk7CiAjZWxzZQogICAg
ICAgICBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCgqdGhpcywgc2hhZG93Um9vdCk7CkBAIC0zNTUx
LDcgKzM1NTEsNyBAQCBEYXRhc2V0RE9NU3RyaW5nTWFwJiBFbGVtZW50OjpkYXRhc2V0KCkKIAog
VVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBj
b25zdAogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlm
IChlbGVtZW50RGF0YSgpKSB7CiAgICAgICAgIGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0
ZSA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSkpCiAgICAgICAgICAgICBBU1NFUlQoaXNVUkxB
dHRyaWJ1dGUoKmF0dHJpYnV0ZSkpOwpAQCAtMzU2Miw3ICszNTYyLDcgQEAgVVJMIEVsZW1lbnQ6
OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaQogCiBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAoZWxlbWVudERhdGEoKSkg
ewogICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBmaW5kQXR0cmlidXRl
QnlOYW1lKG5hbWUpKQogICAgICAgICAgICAgQVNTRVJUKGlzVVJMQXR0cmlidXRlKCphdHRyaWJ1
dGUpKTsKQEAgLTM3ODEsNyArMzc4MSw3IEBAIGJvb2wgRWxlbWVudDo6aXNTcGVsbENoZWNraW5n
RW5hYmxlZCgpIGMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiBB
U1NFUlRfRU5BQkxFRAogYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRlTG9va3VwQWxsb3dlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAgIGlmIChuYW1lID09IEhUTUxO
YW1lczo6c3R5bGVBdHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MDcs
NyArNzA3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGF0dGFjaEF0dHJpYnV0ZU5vZGVJ
Zk5lZWRlZChBdHRyJik7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8QW5jZXN0b3JTaWJsaW5nLCAxNj4gbV9hbmNlc3RvclNpYmxpbmdTdGFjazsKICAgICB1
bnNpZ25lZCBtX2RlcHRoIHsgMCB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CiAj
ZW5kaWYKIH07CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5lIEVsZW1lbnRBbmRUZXh0RGVzY2Vu
ZGFudEl0ZXJhdG9yOgogCiBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5vZGUmIHJvb3QsIEZp
cnN0Q2hpbGRUYWcpCiAgICAgOiBtX2N1cnJlbnQoZmlyc3RDaGlsZChyb290KSkKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNzZXJ0aW9ucyhtX2N1
cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3I6CiAKIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYg
cm9vdCwgTm9kZSogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKG1fY3Vy
cmVudCkKICNlbmRpZgogewpAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcjoKIAogaW5saW5lIHZvaWQgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKICNlbmRpZgogfQpA
QCAtMTc4LDcgKzE3OCw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXIKICAgICBtX2RlcHRoID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay5sYXN0KCkuZGVwdGg7CiAg
ICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5yZW1vdmVMYXN0KCk7CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hl
biB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgogICAgIGlmICghbV9jdXJyZW50KQogICAg
ICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKQEAgLTIzMCw3
ICsyMzAsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3ImCiAKICAg
ICBtX2N1cnJlbnQgPSBuZXh0U2libGluZygqbV9jdXJyZW50KTsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBt
X2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKICNlbmRpZgpAQCAtMjQ0
LDcgKzI0NCw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciYKIAog
ICAgIG1fY3VycmVudCA9IHByZXZpb3VzU2libGluZygqbV9jdXJyZW50KTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghbV9jdXJyZW50KQogICAg
ICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAg
ICAgRWxlbWVudCogbV9jdXJyZW50OwogICAgIFZlY3RvcjxFbGVtZW50KiwgMTY+IG1fYW5jZXN0
b3JTaWJsaW5nU3RhY2s7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKICNlbmRpZgog
fTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBFbGVtZW50KiBtX2N1cnJl
bnQ7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3RvclNpYmxpbmdTdGFjazsKIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwogI2VuZGlmCiB9OwpAQCAtMTE1LDcgKzExNSw3
IEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW4KIAogaW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVu
dCogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCiAjZW5k
aWYKIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
cjo6RWxlbWVuCiAKIGlubGluZSB2b2lkIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BB
c3NlcnRpb25zKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKICNlbmRpZgogfQpAQCAtMTUxLDcgKzE1MSw3IEBA
IEFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYKIAogICAgIG1fY3VycmVu
dCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMTg1LDcg
KzE4NSw3IEBAIEFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYKIAogICAg
IG1fY3VycmVudCA9IGRlZXBlc3RTaWJsaW5nOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJh
dG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgbV9hc3Nl
cnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkBAIC0yMjgsNyArMjI4LDcgQEAg
aW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RQogCiBpbmxpbmUgRWxlbWVu
dERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3Io
Y29uc3QgRWxlbWVudCogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKGN1
cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTIzNyw3ICsyMzcsNyBAQCBpbmxpbmUgRWxlbWVudERlc2Nl
bmRhbnRDb25zdEl0ZXJhdG9yOjpFCiAKIGlubGluZSB2b2lkIEVsZW1lbnREZXNjZW5kYW50Q29u
c3RJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwogI2VuZGlmCiB9CkBA
IC0yNjQsNyArMjY0LDcgQEAgQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cgogCiAgICAgbV9jdXJyZW50ID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay50YWtlTGFzdCgpOwog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0
aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAo
IW1fY3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0
aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIK
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogI2luY2x1ZGUgIkVs
ZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCIKICNlbmRpZgogCkBAIC01OCw3ICs1OCw3IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290OwogICAgIEVsZW1lbnRUeXBl
KiBtX2N1cnJlbnQ7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsKICNlbmRpZgogfTsK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBDb250YWluZXJOb2RlKiBtX3Jv
b3Q7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMg
bV9hc3NlcnRpb25zOwogI2VuZGlmCiB9OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgRWxlbWVudFR5cGUq
IGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICAsIG1fY3VycmVudChjdXJyZW50KQot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRp
b25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTExOCw3ICsxMTgsNyBAQCBpbmxpbmUgRWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlCiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFz
c2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1
cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigp
OwpAQCAtMTMyLDcgKzEzMiw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5k
b21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5
cGU+OjpwcmV2aW91cygqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBp
dGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1f
YXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMTQ2LDcgKzE0Niw3
IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQo
bV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgp
KTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygq
bV9jdXJyZW50KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5k
LgogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlz
cGF0Y2hBc3NlcnRpb24oKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPiYgRWxlCiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKCptX2N1cnJlbnQpOwotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2Vy
dGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJl
bnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpA
QCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21U
cmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+
OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3
aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAg
ICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGUKIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRv
cjxFbGVtZW50VHlwZT46OmRyb3BBc3NlcnRpb25zKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKICNlbmRpZgog
fQpAQCAtMjEzLDcgKzIxMyw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7CiAgICAgQVNTRVJUKCFtX2Fz
c2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gZmluZEVsZW1l
bnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdo
ZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAg
ICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkBAIC0yNjQs
NyArMjY0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRlcmF0b3IoY29uc3Qg
Q29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpCiAgICAgOiBt
X3Jvb3Qocm9vdCkKICAgICAsIG1fY3VycmVudChjdXJyZW50KQotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCiAjZW5k
aWYKIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCBpbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlv
bnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBp
dGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1f
YXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMjkwLDcgKzI5MCw3
IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBBU1NFUlQo
bV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgp
KTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cygqbV9j
dXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRo
ZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZl
bnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIGlubGluZSBFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQg
PSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJyZW50KTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBEcm9wIHRoZSBhc3Nl
cnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgogICAgIGlmICghbV9jdXJy
ZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsK
QEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9t
VHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBl
Pjo6cHJldmlvdXNTaWJsaW5nKCptX2N1cnJlbnQpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVy
YXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNz
ZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzMyLDcgKzMzMiw3IEBA
IGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBBU1NFUlQobV9j
dXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsK
ICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGls
ZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciBy
ZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9u
cy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIGlubGlu
ZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBBU1NFUlQobV9jdXJyZW50
ICE9IG1fcm9vdCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7CiAgICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNo
ZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25zLmRy
b3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkBAIC0zNTgsNyArMzU4LDcgQEAgaW5saW5lIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPgogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgogaW5saW5lIHZvaWQgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpk
cm9wQXNzZXJ0aW9ucygpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudENvbnRleHQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBA
IGJvb2wgVG91Y2hFdmVudENvbnRleHQ6OmlzVG91Y2hFdmVudENvbnQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiB2b2lk
IFRvdWNoRXZlbnRDb250ZXh0OjpjaGVja1JlYWNoYWJpbGl0eShjb25zdCBSZWY8VG91Y2hMaXN0
PiYgdG91Y2hMaXN0KSBjb25zdAogewpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgVG91Y2hFdmVu
dENvbnRleHQ6OmNoZWNrUmVhY2hhYmlsaXQKICAgICAgICAgQVNTRVJUKCFpc1VucmVhY2hhYmxl
Tm9kZShkb3duY2FzdDxOb2RlPih0b3VjaExpc3QtPml0ZW0oaSktPnRhcmdldCgpKSkpOwogfQog
Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAjZW5kaWYgLy8gRU5BQkxFKFRP
VUNIX0VWRU5UUykKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2
ZW50Q29udGV4dCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdl
dCopIGNvbnN0OwogI2VuZGlmCiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogCiAjZW5k
aWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogCiBpbmxpbmUgYm9vbCBFdmVudENvbnRleHQ6OmlzVW5yZWFjaGFibGVO
b2RlKEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNvbnN0CiB7CkBAIC0xMzQsNyArMTM0LDcgQEAgaW5s
aW5lIFRvdWNoTGlzdCYgVG91Y2hFdmVudENvbnRleHQ6OnRvdQogCiAjZW5kaWYKIAotI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpICYmIEFTU0VSVF9ESVNBQkxFRAorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmICFBU1NFUlRfRU5BQkxFRAogCiBpbmxpbmUgdm9pZCBUb3VjaEV2ZW50Q29udGV4
dDo6Y2hlY2tSZWFjaGFiaWxpdHkoY29uc3QgUmVmPFRvdWNoTGlzdD4mKSBjb25zdAogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdmlydHVhbCB2
b2lkIGNoZWNrVmFsaWRpdHlGb3JFdmVudFRhcmdldChFdmVudFRhcmdldCYpIHsgfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDEz
ICs0MzgsMTMgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmNvbGxlY3RUcmVlUwogICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2FuY2VzdG9yVHJlZVNjb3Blcy5p
c0VtcHR5KCkpOwogfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVE
CiAKIGlubGluZSB2b2lkIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeShO
b2RlJikKIHsKIH0KIAotI2Vsc2UKKyNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQgUmVs
YXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0NvbnNpc3RlbmN5KE5vZGUmIGN1cnJlbnRUYXJnZXQp
CiB7CkBAIC00NTQsNiArNDU0LDYgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmNoZWNr
Q29uc2lzdAogICAgIEFTU0VSVChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9PSAmY3VycmVudFRh
cmdldC50cmVlU2NvcGUoKS5yZXRhcmdldFRvU2NvcGUobV9yZWxhdGVkTm9kZSkpOwogfQogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRTZW5kZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
U2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY2FuY2VsRXZlbnQoVCYpOwogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiAK
LSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGhhc1BlbmRpbmdF
dmVudHMoVCYgc2VuZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZGlzcGF0Y2hT
b29uTGlzdC5maW5kKCZzZW5kZXIpICE9IG5vdEZvdW5kIHx8IG1fZGlzcGF0Y2hpbmdMaXN0LmZp
bmQoJnNlbmRlcikgIT0gbm90Rm91bmQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBFdmVudFRhcmdldDo6aXNQ
YXltZW50UmVxdWVzdCgpIGNvbgogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVy
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVu
ZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogewotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGxpc3RlbmVyLT5jaGVja1ZhbGlk
aXR5Rm9yRXZlbnRUYXJnZXQoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTE0OSw3ICsxNDksNyBAQCBi
b29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlCiAgICAgaWYgKGV4aXN0aW5n
TGlzdGVuZXIpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3Zl
RXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCAqZXhpc3RpbmdMaXN0ZW5lciwgZmFsc2Up
OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGxp
c3RlbmVyLT5jaGVja1ZhbGlkaXR5Rm9yRXZlbnRUYXJnZXQoKnRoaXMpOwogI2VuZGlmCiAKQEAg
LTMwOCw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojppbm5lckludm9rZUV2ZW50TGlzdGVu
CiAgICAgICAgIGlmIChyZWdpc3RlcmVkTGlzdGVuZXItPmlzUGFzc2l2ZSgpKQogICAgICAgICAg
ICAgZXZlbnQuc2V0SW5QYXNzaXZlTGlzdGVuZXIodHJ1ZSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgcmVnaXN0ZXJlZExpc3RlbmVyLT5jYWxs
YmFjaygpLmNoZWNrVmFsaWRpdHlGb3JFdmVudFRhcmdldCgqdGhpcyk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgTm9kZTo6fk5vZGUo
KQogCiAgICAgZG9jdW1lbnQoKS5kZWNyZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCgpOwogCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgKCFBU1NF
UlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpKQorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIChBU1NFUlRfRU5BQkxFRCB8
fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykpCiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighZG9jdW1lbnQtPnRvdWNoRXZlbnRMaXN0ZW5lcnNDb250YWluKCp0aGlz
KSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudC0+
dG91Y2hFdmVudEhhbmRsZXJzQ29udGFpbigqdGhpcykpOwpAQCAtMTEzMCw3ICsxMTMwLDcgQEAg
U2hhZG93Um9vdCogTm9kZTo6Y29udGFpbmluZ1NoYWRvd1Jvb3QoKQogICAgIHJldHVybiBpczxT
aGFkb3dSb290Pihyb290KSA/IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCZyb290KSA6IG51bGxwdHI7
CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIC8vIGh0dHBz
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1jbG9zZWQtc2hhZG93LWhpZGRlbgogc3Rh
dGljIGJvb2wgaXNDbG9zZWRTaGFkb3dIaWRkZW5Vc2luZ1NwZWNEZWZpbml0aW9uKGNvbnN0IE5v
ZGUmIEEsIGNvbnN0IE5vZGUmIEIpCiB7CkBAIC0yMDk2LDcgKzIwOTYsNyBAQCB2b2lkIE5vZGU6
Om1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1bWVuCiAjZW5kaWYKICAgICB9CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorI2lmIEFTU0VSVF9F
TkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oIW9sZERvY3VtZW50LnRvdWNoRXZlbnRMaXN0ZW5lcnNDb250YWluKCp0aGlz
KSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW9sZERvY3VtZW50LnRv
dWNoRXZlbnRIYW5kbGVyc0NvbnRhaW4oKnRoaXMpKTsKQEAgLTI1MzUsNyArMjUzNSw3IEBAIHZv
aWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogICAgIGlmIChpczxTVkdFbGVtZW50PigqdGhpcykp
CiAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0aGlzKS5kZXRhY2hBbGxQcm9wZXJ0aWVz
KCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2RlbGV0aW9u
SGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCiAgICAgZGVsZXRlIHRoaXM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPbmVSZWYo
KSBjb25zdDsKICAgICB1bnNpZ25lZCByZWZDb3VudCgpIGNvbnN0OwogCi0jaWZuZGVmIE5ERUJV
RworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW4geyBmYWxz
ZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCB7IHRydWUgfTsKQEAgLTY3OSw3ICs2
NzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFyZURhdGEsIE5vZGVS
YXJlRGF0YURlbGV0ZXI+IG1fcmFyZURhdGE7CiB9OwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFT
U0VSVF9FTkFCTEVECiBpbmxpbmUgdm9pZCBhZG9wdGVkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYg
KCFub2RlKQpAQCAtNjg4LDcgKzY4OCw3IEBAIGlubGluZSB2b2lkIGFkb3B0ZWQoTm9kZSogbm9k
ZSkKICAgICBBU1NFUlQoIW5vZGUtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICBu
b2RlLT5tX2Fkb3B0aW9uSXNSZXF1aXJlZCA9IGZhbHNlOwogfQotI2VuZGlmCisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAogQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OnJlZigpIGNvbnN0CiB7
CkBAIC03MTAsNyArNzEwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OmRlcmVmKCkgY29u
c3QKICAgICBpZiAoIXVwZGF0ZWRSZWZDb3VudCkgewogICAgICAgICAvLyBEb24ndCB1cGRhdGUg
bV9yZWZDb3VudEFuZFBhcmVudEJpdCB0byBhdm9pZCBkb3VibGUgZGVzdHJ1Y3Rpb24gdGhyb3Vn
aCB1c2Ugb2YgUmVmPFQ+L1JlZlB0cjxUPi4KICAgICAgICAgLy8gKFRoaXMgaXMgYSBzZWN1cml0
eSBtaXRpZ2F0aW9uIGluIGNhc2Ugb2YgcHJvZ3JhbW1lciBlcnJvci4gSXQgd2lsbCBBU1NFUlQg
aW4gZGVidWcgYnVpbGRzLikKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwogI2VuZGlmCiAgICAgICAg
IGNvbnN0X2Nhc3Q8Tm9kZSY+KCp0aGlzKS5yZW1vdmVkTGFzdFJlZigpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHREaXNhbGxvd2VkU2NvcGUuaAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gUmVsZWFzZSBhc3NlcnRz
IGluIGNhbkV4ZWN1dGVTY3JpcHQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIHNlY3VyaXR5IGRl
ZmVuc2UgcHVycG9zZXMuCiAgICAgICAgIHN0YXRpYyBib29sIGlzRXZlbnREaXNwYXRjaEFsbG93
ZWRJblN1YnRyZWUoTm9kZSYgbm9kZSkKICAgICAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQg
fHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisjaWYgQVNTRVJUX0VOQUJMRUQgfHwgRU5B
QkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgICAgICAgICByZXR1cm4gaXNTY3JpcHRBbGxv
d2VkKCkgfHwgRXZlbnRBbGxvd2VkU2NvcGU6OmlzQWxsb3dlZE5vZGUobm9kZSk7CiAjZWxzZQog
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH07CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgY2xhc3MgRXZlbnRBbGxvd2VkU2NvcGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgZXhwbGljaXQgRXZlbnRBbGxvd2VkU2NvcGUoQ29udGFpbmVyTm9kZSYgdXNlckFn
ZW50Q29udGVudFJvb3QpCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIEV2
ZW50QWxsb3dlZFNjb3BlKiBtX3ByZXZpb3VzU2NvcGU7CiAgICAgICAgIHN0YXRpYyBFdmVudEFs
bG93ZWRTY29wZSogc19jdXJyZW50U2NvcGU7CiAgICAgfTsKLSNlbHNlCisjZWxzZSAvLyBub3Qg
QVNTRVJUX0VOQUJMRUQKICAgICBjbGFzcyBFdmVudEFsbG93ZWRTY29wZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBleHBsaWNpdCBFdmVudEFsbG93ZWRTY29wZShDb250YWluZXJOb2RlJikgeyB9
CiAgICAgICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZE5vZGUoTm9kZSYpIHsgcmV0dXJuIHRydWU7
IH0KICAgICB9OwotI2VuZGlmCisjZW5kaWYgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAKICAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgb25jZSB0aGUgc3luYyBsYXlvdXQgaW5zaWRlIFNW
R0ltYWdlOjpkcmF3IGlzIHJlbW92ZWQsCiAgICAgLy8gQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3Vz
dG9tRm9udERhdGEgbm8gbG9uZ2VyIHN5bmNocm9ub3VzbHkgY3JlYXRlcyBhIGRvY3VtZW50IGR1
cmluZyBzdHlsZSByZXNvbHV0aW9uLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMs
MTMgKzEyMywxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlbW92ZUZyb21DCiAg
ICAgfQogfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAKIGlu
bGluZSB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dAogewogfQogCi0jZWxzZQorI2Vsc2UgLy8gQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsKQEAgLTE0NSwxMyAr
MTQ1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2hlY2tDb25zaXMKICAgICB9
CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIHsKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBp
ZiAobV9jb250ZXh0SWRlbnRpZmllcikgewogICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFs
bFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFpbnMobV9jb250ZXh0
SWRlbnRpZmllciksCkBAIC0xNTksNyArMTU5LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
flNjcmlwdEV4ZWN1dGlvbgogICAgIH0KIAogICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0
RGVzdHJ1Y3RvciA9IHRydWU7Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHNldEFjdGl2ZVNlcnZpY2VXb3JrZXIobnVs
bHB0cik7CkBAIC0xNjgsNyArMTY4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlw
dEV4ZWN1dGlvbgogICAgIHdoaWxlIChhdXRvKiBkZXN0cnVjdGlvbk9ic2VydmVyID0gbV9kZXN0
cnVjdGlvbk9ic2VydmVycy50YWtlQW55KCkpCiAgICAgICAgIGRlc3RydWN0aW9uT2JzZXJ2ZXIt
PmNvbnRleHREZXN0cm95ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IGZhbHNl
OwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNCw3ICszMjQsNyBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgYm9vbCBtX2FjdGl2ZURPTU9iamVjdEFkZGl0aW9uRm9yYmlkZGVu
IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2lsbHByb2Nlc3NNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
c1Nvb24geyBmYWxzZSB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgYm9vbCBtX2luU2NyaXB0RXhlY3V0aW9uQ29udGV4dERlc3RydWN0b3IgeyBmYWxz
ZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBib29sIGlz
U2luZ2xlVGFnTmFtZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKIHsKICAg
ICByZXR1cm4gc2VsZWN0b3IuaXNMYXN0SW5UYWdIaXN0b3J5KCkgJiYgc2VsZWN0b3IubWF0Y2go
KSA9PSBDU1NTZWxlY3Rvcjo6VGFnOwpAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgYm9vbCBpc1Np
bmdsZUNsYXNzTmFtZVNlbGVjdG9yKGNvCiB7CiAgICAgcmV0dXJuIHNlbGVjdG9yLmlzTGFzdElu
VGFnSGlzdG9yeSgpICYmIHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OkNsYXNzOwog
fQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogZW51bSBjbGFzcyBJZE1hdGNo
aW5nVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUsCkBAIC01NDIsNyArNTQyLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZQogICAgIGNhc2UgQ29tcGlsZWRTaW5n
bGVXaXRoUm9vdEZpbHRlcjoKICAgICBjYXNlIENvbXBpbGVkU2luZ2xlOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NF
TEVDVE9SX0pJVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYg
c2xvdE5hbWVGcm9tU2xvCiAgICAgcmV0dXJuIHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKGRv
d25jYXN0PEVsZW1lbnQ+KGNoaWxkKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNs
b3RBdHRyKSk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
IHN0YXRpYyBIVE1MU2xvdEVsZW1lbnQqIGZpbmRTbG90RWxlbWVudChTaGFkb3dSb290JiBzaGFk
b3dSb290LCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKIHsKICAgICBmb3IgKGF1dG8mIHNs
b3RFbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFNsb3RFbGVtZW50PihzaGFkb3dSb290
KSkgewpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgSFRNTFNsb3RFbGVtZW50KiBmaW5kU2xvdEVs
ZW1lbnQoCiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQotI2VuZGlmCisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIEhUTUxTbG90RWxlbWVudCogbmV4dFNsb3RFbGVtZW50
U2tpcHBpbmdTdWJ0cmVlKENvbnRhaW5lck5vZGUmIHN0YXJ0aW5nTm9kZSwgQ29udGFpbmVyTm9k
ZSogc2tpcHBlZFN1YnRyZWUpCiB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBTbG90QXNzaWdu
bWVudDo6cmVuYW1lU2xvdEVsZW1lbnQoSAogCiB2b2lkIFNsb3RBc3NpZ25tZW50OjphZGRTbG90
RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNs
b3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQogewotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCghbV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5j
eUNoZWNrLmNvbnRhaW5zKCZzbG90RWxlbWVudCkpOwogICAgIG1fc2xvdEVsZW1lbnRzRm9yQ29u
c2lzdGVuY3lDaGVjay5hZGQoJnNsb3RFbGVtZW50KTsKICNlbmRpZgpAQCAtMTQyLDcgKzE0Miw3
IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW0KIAogdm9pZCBTbG90
QXNzaWdubWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgQ29udGFpbmVyTm9kZSogb2xkUGFyZW50
T2ZSZW1vdmVkVHJlZUZvclJlbW92YWwsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCiB7Ci0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUKG1fc2xvdEVsZW1lbnRz
Rm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucygmc2xvdEVsZW1lbnQpKTsKICAgICBtX3Nsb3RF
bGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2sucmVtb3ZlKCZzbG90RWxlbWVudCk7CiAjZW5kaWYK
QEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpyZXNvbHZlU2xvdHNBZnRl
clNsCiAgICAgaWYgKG11dGF0aW9uVHlwZSA9PSBTbG90TXV0YXRpb25UeXBlOjpJbnNlcnRpb24p
IHsKICAgICAgICAgLy8gVGhpcyBjb2RlIHBhdGggaXMgdGFrZW4gb25seSB3aGVuIGNvbnRpbnVl
IGFib3ZlIGZvciAhY3VycmVudFNsb3QgaXMgdGFrZW4uCiAgICAgICAgIC8vIGkuZS4gdGhlcmUg
aXMgYSBuZXcgc2xvdCBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlIGJ1dCB3ZSBoYXZlIHll
dCB0byBpbnZva2UgYWRkU2xvdEVsZW1lbnRCeU5hbWUgb24gaXQuCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3Ns
b3RzKQogICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLT5zZWVuRmlyc3RFbGVtZW50IHx8
ICFmaW5kU2xvdEVsZW1lbnQoc2hhZG93Um9vdCwgZW50cnkua2V5KSk7CiAjZW5kaWYKQEAgLTM0
MSwxMCArMzQxLDggQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVudDo6ZmluZEZpcgog
ICAgIGlmIChzbG90LnNob3VsZFJlc29sdmVTbG90RWxlbWVudCgpKQogICAgICAgICByZXNvbHZl
QWxsU2xvdEVsZW1lbnRzKHNoYWRvd1Jvb3QpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VCghc2xvdC5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250
YWlucyhzbG90LmVsZW1lbnQuZ2V0KCkpKTsKICAgICBBU1NFUlQoISFzbG90LmVsZW1lbnQgPT0g
ISFzbG90LmVsZW1lbnRDb3VudCk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBzbG90LmVsZW1lbnQu
Z2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8QXRvbVN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFNsb3Q+PiBtX3Nsb3RzOwogCi0jaWZuZGVmIE5ERUJVRworI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgSGFzaFNldDxIVE1MU2xvdEVsZW1lbnQqPiBtX3Nsb3RFbGVt
ZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2s7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgVHJlZVNjb3BlT3JkZXJlZE1hcDo6YWRkKGNvbnN0IEF0b20KICAg
ICB9KTsKICAgICBNYXBFbnRyeSYgZW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyNp
ZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZW50cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmNv
bnRhaW5zKCZlbGVtZW50KSk7CiAgICAgZW50cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmFkZCgmZWxl
bWVudCk7CiAjZW5kaWYKQEAgLTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgRWxlbWVudCogVHJlZVNj
b3BlT3JkZXJlZE1hcDo6Z2V0CiAgICAgICAgIHJldHVybiAmZWxlbWVudDsKICAgICB9CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQgbWF5IGNhbGwgZ2V0RWxlbWVudEJ5SWQgdG8gZmluZCBpdHMgb3duZXIgZm9y
bSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJlZSByZW1vdmFsLgogICAgIGlmIChhdXRvKiBjdXJyZW50
U2NvcGUgPSBDb250YWluZXJDaGlsZFJlbW92YWxTY29wZTo6Y3VycmVudFNjb3BlKCkpIHsKICAg
ICAgICAgQVNTRVJUKCZzY29wZS5yb290Tm9kZSgpID09ICZjdXJyZW50U2NvcGUtPnBhcmVudE9m
UmVtb3ZlZFRyZWUoKS5yb290Tm9kZSgpKTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBpbmxpbmUgRWxl
bWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0CiAgICAgICAgIH0KICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
T3JkZXJlZE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVP
cmRlcmVkTWFwLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGVPcmRlcmVkTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgRWxlbWVudCogZWxlbWVudCB7IG51bGxwdHIgfTsKICAgICAgICAgdW5zaWdu
ZWQgY291bnQgeyAwIH07CiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gb3JkZXJlZExpc3Q7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyNpZiBB
U1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICAgICAgSGFz
aFNldDxFbGVtZW50Kj4gcmVnaXN0ZXJlZEVsZW1lbnRzOwogI2VuZGlmCiAgICAgfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIFN0
cmluZyBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QKICAgICByZXR1cm4gY29udGVu
dFR5cGUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBCbG9iOjppc05vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFs
bHkgd2FudCB0byB0cmVhdCB0aGUgZW1wdHkgc3RyaW5nIGFuZCBudWxsIHN0cmluZyBhcyB2YWxp
ZCBjb250ZW50IHR5cGVzPwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgQmxvYjo6aXNOb3JtYWxp
emVkQ29udGVudFR5cGUoY29uc3QKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9Ci0jZW5kaWYK
KyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBVUkxSZWdpc3RyeSYgQmxvYjo6cmVnaXN0cnko
KSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29udGVudFR5cGUoY29uc3Qg
U3RyaW5nJik7CiAgICAgLy8gVGhlIG5vcm1hbGl6YXRpb24gcHJvY2VkdXJlIGRlc2NyaWJlZCBp
biB0aGUgRmlsZSBBUEkgc3BlYy4KICAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50
VHlwZShjb25zdCBTdHJpbmcmKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBzdGF0aWMgYm9vbCBpc05vcm1hbGl6ZWRDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgYm9vbCBpc05vcm1hbGl6ZWRDb250ZW50VHlwZShjb25zdCBDU3Ry
aW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRD
YWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZENhY2hlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZEMKIAogdm9pZCBCYWNrRm9yd2Fy
ZENhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2UoUGFnZSYgcGFnZSkKIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFt
X2lzSW5SZW1vdmVBbGxJdGVtc0ZvclBhZ2UsICJXZSBzaG91bGQgbm90IHJlZW50ZXIgdGhpcyBt
ZXRob2QiKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbW92ZUFsbEl0ZW1zRm9yUGFnZVNj
b3BlIHsgbV9pc0luUmVtb3ZlQWxsSXRlbXNGb3JQYWdlLCB0cnVlIH07CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIExpc3RIYXNoU2V0PFJlZlB0
cjxIaXN0b3J5SXRlbT4+IG1faXRlbXM7CiAgICAgdW5zaWduZWQgbV9tYXhTaXplIHswfTsKIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9pc0lu
UmVtb3ZlQWxsSXRlbXNGb3JQYWdlIHsgZmFsc2UgfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2
b2lkIENhbnZhc0Jhc2U6Om5vdGlmeU9ic2VydmVyc0NhbnZhc0RlCiAKICAgICBtX29ic2VydmVy
cy5jbGVhcigpOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9k
aWROb3RpZnlPYnNlcnZlcnNDYW52YXNEZXN0cm95ZWQgPSB0cnVlOwogI2VuZGlmCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9DYW52YXNCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw3ICsxMjYsNyBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRlU2F2ZXI7CiAKICAgICBib29sIG1fb3JpZ2luQ2xlYW4g
eyB0cnVlIH07Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBt
X2RpZE5vdGlmeU9ic2VydmVyc0NhbnZhc0Rlc3Ryb3llZCB7IGZhbHNlIH07CiAjZW5kaWYKICAg
ICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9vYnNlcnZlcnM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAg
cHJpdmF0ZToKICAgICBTdHJpbmdUb0VsZW1lbnRzTWFwIG1fbmFtZU1hcDsKICAgICBWZWN0b3I8
QXRvbVN0cmluZz4gbV9wcm9wZXJ0eU5hbWVzOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2RpZFBvcHVsYXRlIHsgZmFsc2UgfTsKICNlbmRp
ZgogfTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBpbmxpbmUgc2l6ZV90IENvbGxlY3Rpb25OYW1lZEVs
ZW1lbnRDYWNoCiAKIGlubGluZSB2b2lkIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6ZGlk
UG9wdWxhdGUoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIG1fZGlkUG9wdWxhdGUgPSB0cnVlOwogI2VuZGlmCiAgICAgaWYgKHNpemVfdCBjb3N0ID0g
bWVtb3J5Q29zdCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNyArNzM2LDcgQEAgY29uc3QgVmVj
dG9yPEhUTUxFbGVtZW50Kj4mIEhUTUxTZWxlY3RFbAogICAgIGlmIChtX3Nob3VsZFJlY2FsY0xp
c3RJdGVtcykKICAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiAgICAgZWxzZSB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIFZlY3RvcjxIVE1MRWxl
bWVudCo+IGl0ZW1zID0gbV9saXN0SXRlbXM7CiAgICAgICAgIHJlY2FsY0xpc3RJdGVtcyhmYWxz
ZSk7CiAgICAgICAgIEFTU0VSVChpdGVtcyA9PSBtX2xpc3RJdGVtcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0MywxMCBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoSFRNTFRhYmxlUm93CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnRSb3dJc0lu
VGFibGUoSFRNTFRhYmxlRWxlbWVudCYgdGFibGUsIEhUTUxUYWJsZVJvd0VsZW1lbnQqIHJvdykK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBVTlVTRURf
UEFSQU0odGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShyb3cpOwotI2Vsc2UKKyNlbHNlIC8vIG5v
dCBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghcm93KQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KHJvdy0+cGFyZW50Tm9kZSgpID09ICZ0YWJsZSkKQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFzc2VydFJvd0lzSW5UYWJsZShIVAogICAgIEFTU0VSVChyb3ctPnBhcmVudE5v
ZGUoKSk7CiAgICAgQVNTRVJUKHJvdy0+cGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKHRoZWFkVGFn
KSB8fCByb3ctPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgcm93LT5wYXJl
bnROb2RlKCktPmhhc1RhZ05hbWUodGZvb3RUYWcpKTsKICAgICBBU1NFUlQocm93LT5wYXJlbnRO
b2RlKCktPnBhcmVudE5vZGUoKSA9PSAmdGFibGUpOwotI2VuZGlmCisjZW5kaWYgLy8gbm90IEFT
U0VSVF9FTkFCTEVECiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luU2VjdGlvbihIVE1MVGFi
bGVSb3dFbGVtZW50JiByb3csIGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiBzZWN0aW9uVGFnKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDMsMTMgKzY0Mywx
NyBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5kCiAKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBpbm5lclRleHRWYWx1ZSgpLmxlbmd0aCgpOwogICAgIGluZGV4ID0gc3Rk
OjptaW4oaW5kZXgsIGxlbmd0aCk7IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBjYWxs
IGlubmVyVGV4dFZhbHVlKCkganVzdCB0byBpZ25vcmUgdGhlIGxhc3QgTEYuIFNlZSBmaW5pc2hU
ZXh0LgotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAwCisgICAgLy8gRklYTUU6IFRoaXMg
YXNzZXJ0aW9uIGNvZGUgd2FzIG5ldmVyIGJ1aWx0LCBoYXMgYml0IHJvdHRlZCwgYW5kIG5lZWRz
IHRvIGJlIGZpeGVkIGJlZm9yZSBpdCBjYW4gYmUgZW5hYmxlZDoKKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2LgorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHBhc3NlZFBvc2l0aW9uOwog
ICAgIHVuc2lnbmVkIGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbiA9IDA7CiAgICAgaWYg
KHZpc2libGVQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgaW5kZXhDb21wdXRlZEJ5Vmlz
aWJsZVBvc2l0aW9uID0gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24oaW5uZXJUZXh0
LCB2aXNpYmxlUG9zaXRpb24sIGZhbHNlIC8qIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiAqLyk7
CiAgICAgQVNTRVJUKGluZGV4ID09IGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbik7CiAj
ZW5kaWYKKyNlbmRpZgogICAgIHJldHVybiBpbmRleDsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAs
NyArMTYwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp1bndpbgogCiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZSgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW53
aW5kU3RhdGVTdGFjaygpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpIVE1MUGFy
c2VyU2NoZWR1bGVyCiAgICAgLCBtX3BhcnNlclRpbWVMaW1pdChTZWNvbmRzKHBhcnNlclRpbWVM
aW1pdChtX3BhcnNlci5kb2N1bWVudCgpLT5wYWdlKCkpKSkKICAgICAsIG1fY29udGludWVOZXh0
Q2h1bmtUaW1lcigqdGhpcywgJkhUTUxQYXJzZXJTY2hlZHVsZXI6OmNvbnRpbnVlTmV4dENodW5r
VGltZXJGaXJlZCkKICAgICAsIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXIoZmFsc2UpCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX3N1c3BlbmRl
ZChmYWxzZSkKICNlbmRpZgogewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgSFRNTFBhcnNlclNj
aGVkdWxlcjo6c3VzcGVuZCgpCiB7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgQVNT
RVJUKCFtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX3N1c3BlbmRlZCA9IHRydWU7CiAjZW5kaWYKIApA
QCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6cmVzdW1lKCkKIHsK
ICAgICBBU1NFUlQobV9zdXNwZW5kZWQpOwogICAgIEFTU0VSVCghbV9jb250aW51ZU5leHRDaHVu
a1RpbWVyLmlzQWN0aXZlKCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0ZToKICAgICBTZWNv
bmRzIG1fcGFyc2VyVGltZUxpbWl0OwogICAgIFRpbWVyIG1fY29udGludWVOZXh0Q2h1bmtUaW1l
cjsKICAgICBib29sIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXI7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX3N1c3BlbmRlZDsKICNlbmRp
ZgogICAgIGJvb2wgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zIHsgZmFsc2Ug
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5T
dGFydFRhZyhVQ2gKICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CiAgICAgbV9hdHRyaWJ1dGVz
LmNsZWFyKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwogI2VuZGlmCiAKQEAgLTI5MCw3ICsyOTAs
NyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRW5kVGFnKExDaGFyCiAgICAgbV9zZWxm
Q2xvc2luZyA9IGZhbHNlOwogICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50QXR0cmlidXRlID0g
bnVsbHB0cjsKICNlbmRpZgogCkBAIC0zMDQsNyArMzA0LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRv
a2VuOjpiZWdpbkVuZFRhZyhjb25zdAogICAgIG1fc2VsZkNsb3NpbmcgPSBmYWxzZTsKICAgICBt
X2F0dHJpYnV0ZXMuY2xlYXIoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CiAjZW5kaWYKIApAQCAt
MzI3LDcgKzMyNyw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6ZW5kQXR0cmlidXRlKHVuc2kK
ICAgICBBU1NFUlQob2Zmc2V0KTsKICAgICBBU1NFUlQobV9jdXJyZW50QXR0cmlidXRlKTsKICAg
ICBtX2N1cnJlbnRBdHRyaWJ1dGUtPmVuZE9mZnNldCA9IG9mZnNldCAtIG1fYXR0cmlidXRlQmFz
ZU9mZnNldDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBt
X2N1cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVl
QnVpbGRlcihIVE1MRG9jCiAgICAgLCBtX3RyZWUoZG9jdW1lbnQsIHBhcnNlckNvbnRlbnRQb2xp
Y3ksIG9wdGlvbnMubWF4aW11bURPTVRyZWVEZXB0aCkKICAgICAsIG1fc2NyaXB0VG9Qcm9jZXNz
U3RhcnRQb3NpdGlvbih1bmluaXRpYWxpemVkUG9zaXRpb25WYWx1ZTEoKSkKIHsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Rlc3RydWN0aW9uUHJvaGli
aXRlZCA9IGZhbHNlOwogI2VuZGlmCiB9CkBAIC0yOTQsNyArMjk0LDcgQEAgSFRNTFRyZWVCdWls
ZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvYwogCiAgICAgbV90cmVlLnNldEZvcm0oaXM8SFRN
TEZvcm1FbGVtZW50Pihjb250ZXh0RWxlbWVudCkgPyAmZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50
Pihjb250ZXh0RWxlbWVudCkgOiBIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2Vz
dG9yKGNvbnRleHRFbGVtZW50KSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IGZhbHNlOwogI2VuZGlmCiB9
CkBAIC0zMzgsNyArMzM4LDcgQEAgUmVmUHRyPFNjcmlwdEVsZW1lbnQ+IEhUTUxUcmVlQnVpbGRl
cjo6dAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZShBdG9taWNIVE1MVG9r
ZW4mJiB0b2tlbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBBU1NFUlQoIW1fZGVzdHJveWVkKTsKICAgICBBU1NFUlQoIW1fZGVzdHJ1Y3Rpb25Qcm9o
aWJpdGVkKTsKICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IHRydWU7CkBAIC0zNTcsNyAr
MzU3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUoQXRvbQogICAgIG1f
cGFyc2VyLnRva2VuaXplcigpLnNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50KG1faW5z
ZXJ0aW9uTW9kZSA9PSBJbnNlcnRpb25Nb2RlOjpUZXh0IHx8IGluRm9yZWlnbkNvbnRlbnQpOwog
ICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldFNob3VsZEFsbG93Q0RBVEEoaW5Gb3JlaWduQ29u
dGVudCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBt
X2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IGZhbHNlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fZnJhbWVz
ZXRPayB7IHRydWUgfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIGJvb2wgbV9kZXN0cm95ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kZXN0cnVjdGlv
blByb2hpYml0ZWQgeyB0cnVlIH07CiAjZW5kaWYKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcml2YXRl
OgogCiBpbmxpbmUgSFRNTFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWlsZGVyKCkKIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQoIW1fZGVzdHJv
eWVkKTsKICAgICBBU1NFUlQoIW1fZGVzdHJ1Y3Rpb25Qcm9oaWJpdGVkKTsKICAgICBtX2Rlc3Ry
b3llZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBMYXlv
dXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBSaWdodFRvCiBjb25zdCBEaXNwbGF5OjpCb3gm
IEZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCwg
T3B0aW9uYWw8RXNjYXBlVHlwZT4gZXNjYXBlVHlwZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZXNjYXBlVHlwZSk7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
YXV0byBpc09rVG9BY2Nlc3NEaXNwbGF5Qm94ID0gWyZdIHsKICAgICAgICAgLy8gMS4gSGlnaGx5
IGNvbW1vbiBjYXNlIG9mIGFjY2Vzc2luZyB0aGUgZm9ybWF0dGluZyByb290J3MgZGlzcGxheSBi
b3ggaXRzZWxmLiBUaGlzIGlzIGZvcm1hdHRpbmcgY29udGV4dCBlc2NhcGluZyBpbiB0aGUgc3Ry
aWN0IHNlbnNlLCBzaW5jZQogICAgICAgICAvLyB0aGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3Qg
Ym94IGxpdmVzIGluIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgpJbmRleDogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlRXN0aQogICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBVc2VkVmVydGljYWxN
YXJnaW4geyBub25Db2xsYXBzZWRWYWx1ZXMsIGNvbGxhcHNlZFZhbHVlcyB9OwogICAgIGRpc3Bs
YXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwogICAgIGRpc3BsYXlCb3gu
c2V0VG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGxheW91dEJveCwgdmVydGljYWxNYXJn
aW4pKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBkaXNw
bGF5Qm94LnNldEhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgpOwogI2VuZGlmCiB9CkBAIC0zMzcs
NyArMzM3LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aQogICAg
ICAgICBkaXNwbGF5Qm94LnNldEhhc0NsZWFyYW5jZSgpOwogfQogCi0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Omhhc1ByZWNv
bXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIGZv
ciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9y
ICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCk7IGFuY2Vz
dG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CkBAIC0zNDcsNyArMzQ3LDcgQEAg
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpoYXNQcmVjb21wdQogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24oY29uc3QgRmxvYXRp
bmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZUVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgeyBtX2VzdGlt
YXRlZE1hcmdpbkJlZm9yZUxpc3QucmVtb3ZlKCZsYXlvdXRCb3gpOyB9CiAgICAgYm9vbCBoYXNF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JikgY29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNvbnN0IEZsb2F0aW5n
Q29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIEVzdGltYXRlZE1hcmdpbkJlZm9yZSBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVm
b3JlTGlzdC5nZXQoJmxheW91dEJveCk7IH0KICAgICBib29sIGhhc1ByZWNvbXB1dGVkTWFyZ2lu
QmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94OjpCb3goY29uc3QgQm94JiBvdGhlcikK
ICAgICAsIG1faGFzQ2xlYXJhbmNlKG90aGVyLm1faGFzQ2xlYXJhbmNlKQogICAgICwgbV9ib3Jk
ZXIob3RoZXIubV9ib3JkZXIpCiAgICAgLCBtX3BhZGRpbmcob3RoZXIubV9wYWRkaW5nKQotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9oYXNWYWxpZFRv
cChvdGhlci5tX2hhc1ZhbGlkVG9wKQogICAgICwgbV9oYXNWYWxpZExlZnQob3RoZXIubV9oYXNW
YWxpZExlZnQpCiAgICAgLCBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbihvdGhlci5tX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlCb3guaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBSZWN0IHBhZGRpbmdCb3goKSBjb25zdDsKICAgICBS
ZWN0IGNvbnRlbnRCb3goKSBjb25zdDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIHZvaWQgc2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hh
c0VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IHRydWU7IH0KICNlbmRpZgogCkBAIC0xMzUsNyArMTM1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2Vz
Pik7CiAKIHByaXZhdGU6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVy
KCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gZmFsc2U7IH0KICAgICB2b2lkIGludmFsaWRhdGVQYWRk
aW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IGZhbHNlOyB9CkBAIC0xNTMsNyArMTUzLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc2V0SGFzVmFsaWRDb250ZW50SGVpZ2h0KCkgeyBtX2hhc1Zh
bGlkQ29udGVudEhlaWdodCA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1ZhbGlkQ29udGVudFdp
ZHRoKCkgeyBtX2hhc1ZhbGlkQ29udGVudFdpZHRoID0gdHJ1ZTsgfQotI2VuZGlmCisjZW5kaWYg
Ly8gQVNTRVJUX0VOQUJMRUQKIAogICAgIExheW91dFBvaW50IG1fdG9wTGVmdDsKICAgICBMYXlv
dXRVbml0IG1fY29udGVudFdpZHRoOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAg
TGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAgICBPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBtX3Bh
ZGRpbmc7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBi
b29sIG1faGFzVmFsaWRUb3AgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4geyBmYWxzZSB9OwpA
QCAtMTc5LDEwICsxNzksMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50
SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50V2lkdGggeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgeyBmYWxzZSB9OwotI2Vu
ZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIH07CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB2b2lkIEJveDo6aW52YWxpZGF0ZU1hcmdpbigp
CiB7CiAgICAgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4gPSBmYWxzZTsKQEAgLTIxMSw3ICsy
MTEsNyBAQCBpbmxpbmUgTGF5b3V0UG9pbnQgQm94Ojp0b3BMZWZ0KCkgY29uc3QKIAogaW5saW5l
IHZvaWQgQm94OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91dFBvaW50JiB0b3BMZWZ0KQogewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkVG9w
KCk7CiAgICAgc2V0SGFzVmFsaWRMZWZ0KCk7CiAjZW5kaWYKQEAgLTIyMCw3ICsyMjAsNyBAQCBp
bmxpbmUgdm9pZCBCb3g6OnNldFRvcExlZnQoY29uc3QgTGF5b3V0CiAKIGlubGluZSB2b2lkIEJv
eDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkVG9wKCk7CiAjZW5kaWYKICAgICBtX3RvcExl
ZnQuc2V0WSh0b3ApOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VG9w
KExheW91dFVuaXQgdG9wKQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldExlZnQoTGF5b3V0VW5pdCBs
ZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNl
dEhhc1ZhbGlkTGVmdCgpOwogI2VuZGlmCiAgICAgbV90b3BMZWZ0LnNldFgobGVmdCk7CkBAIC0y
MzYsNyArMjM2LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRMZWZ0KExheW91dFVuaXQgbGVmdAog
CiBpbmxpbmUgdm9pZCBCb3g6OnNldENvbnRlbnRCb3hIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQp
CiB7IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhh
c1ZhbGlkQ29udGVudEhlaWdodCgpOwogI2VuZGlmCiAgICAgbV9jb250ZW50SGVpZ2h0ID0gaGVp
Z2h0OwpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSB2b2lkIEJveDo6c2V0Q29udGVudEJveEhl
aWdodChMYXkKIAogaW5saW5lIHZvaWQgQm94OjpzZXRDb250ZW50Qm94V2lkdGgoTGF5b3V0VW5p
dCB3aWR0aCkKIHsgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgc2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKTsKICNlbmRpZgogICAgIG1fY29udGVudFdpZHRo
ID0gd2lkdGg7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW5saW5lIExheW91dFVuaXQgQm94Ojpjb250
ZW50Qm94V2lkdGgoKQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250YWxNYXJnaW4oTGF5
b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbiBtYXJnaW4pCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKCk7
CiAjZW5kaWYKICAgICBtX2hvcml6b250YWxNYXJnaW4gPSBtYXJnaW47CkBAIC0yNzIsNyArMjcy
LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKExheQogCiBpbmxpbmUg
dm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luIG1h
cmdpbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBz
ZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNv
bGxhcHNlZE1hcmdpbigpOwogICAgIGludmFsaWRhdGVFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoKTsK
QEAgLTI4Miw3ICsyODIsNyBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExh
eW91CiAKIGlubGluZSB2b2lkIEJveDo6c2V0SG9yaXpvbnRhbENvbXB1dGVkTWFyZ2luKExheW91
dDo6Q29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIG1hcmdpbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXRIYXNWYWxpZEhvcml6b250YWxDb21wdXRl
ZE1hcmdpbigpOwogI2VuZGlmCiAgICAgbV9ob3Jpem9udGFsQ29tcHV0ZWRNYXJnaW4gPSBtYXJn
aW47CkBAIC0yOTAsNyArMjkwLDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsQ29t
cHV0ZWRNYQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldEJvcmRlcihMYXlvdXQ6OkVkZ2VzIGJvcmRl
cikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXRI
YXNWYWxpZEJvcmRlcigpOwogI2VuZGlmCiAgICAgbV9ib3JkZXIgPSBib3JkZXI7CkBAIC0yOTgs
NyArMjk4LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRCb3JkZXIoTGF5b3V0OjpFZGdlcwogCiBp
bmxpbmUgdm9pZCBCb3g6OnNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpFZGdlcz4gcGFkZGlu
ZykKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXRI
YXNWYWxpZFBhZGRpbmcoKTsKICNlbmRpZgogICAgIG1fcGFkZGluZyA9IHBhZGRpbmc7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZVJlY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlu
bGluZVJlY3QuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rp
c3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIElubGluZUxheW91dFJlY3QoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB2
b2lkIGludmFsaWRhdGVUb3AoKSB7IG1faGFzVmFsaWRUb3AgPSBmYWxzZTsgfQogICAgIHZvaWQg
aW52YWxpZGF0ZUxlZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0gZmFsc2U7IH0KICAgICB2b2lkIGlu
dmFsaWRhdGVXaWR0aCgpIHsgbV9oYXNWYWxpZFdpZHRoID0gZmFsc2U7IH0KQEAgLTg3LDE0ICs4
NywxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9oYXNWYWxpZFdpZHRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRIZWln
aHQgeyBmYWxzZSB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICBJbmxp
bmVMYXlvdXRSZWN0IG1fcmVjdDsKIH07CiAKIGlubGluZSBJbmxpbmVSZWN0OjpJbmxpbmVSZWN0
KElubGluZUxheW91dFVuaXQgdG9wLCBJbmxpbmVMYXlvdXRVbml0IGxlZnQsIElubGluZUxheW91
dFVuaXQgd2lkdGgsIElubGluZUxheW91dFVuaXQgaGVpZ2h0KQogICAgIDogbV9yZWN0KGxlZnQs
IHRvcCwgd2lkdGgsIGhlaWdodCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICAgICBtX2hhc1ZhbGlkTGVmdCA9
IHRydWU7CiAgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBp
bmxpbmUgSW5saW5lUmVjdDo6SW5saW5lUmVjdChjb25zdCBJbmxpCiB7CiB9CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB2b2lkIElubGluZVJlY3Q6
OmludmFsaWRhdGVQb3NpdGlvbigpCiB7CiAgICAgaW52YWxpZGF0ZVRvcCgpOwpAQCAtMTI1LDcg
KzEyNSw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldEhhc1ZhbGlkU2l6ZSgKICAgICBt
X2hhc1ZhbGlkV2lkdGggPSB0cnVlOwogICAgIG1faGFzVmFsaWRIZWlnaHQgPSB0cnVlOwogfQot
I2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogaW5saW5lIElubGluZUxheW91dFVu
aXQgSW5saW5lUmVjdDo6dG9wKCkgY29uc3QKIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUg
SW5saW5lTGF5b3V0VW5pdCBJbmxpbmVSZWN0OjpoZWlnCiAKIGlubGluZSB2b2lkIElubGluZVJl
Y3Q6OnNldFRvcExlZnQoY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIHRvcExlZnQpCiB7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRQb3Np
dGlvbigpOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldExvY2F0aW9uKHRvcExlZnQpOwpAQCAtMTg1
LDcgKzE4NSw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldFRvcExlZnQoY29uc3QKIAog
aW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0VG9wKElubGluZUxheW91dFVuaXQgdG9wKQogewot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRU
b3AgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldFkodG9wKTsKQEAgLTE5Myw3ICsxOTMs
NyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVSZWN0OjpzZXRUb3AoSW5saW5lTGF5CiAKIGlubGluZSB2
b2lkIElubGluZVJlY3Q6OnNldEJvdHRvbShJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSkKIHsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkVG9w
ID0gdHJ1ZTsKICAgICBtX2hhc1ZhbGlkSGVpZ2h0ID0gdHJ1ZTsKICNlbmRpZgpAQCAtMjAyLDcg
KzIwMiw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldEJvdHRvbShJbmxpbmUKIAogaW5s
aW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0TGVmdChJbmxpbmVMYXlvdXRVbml0IGxlZnQpCiB7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZExl
ZnQgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldFgobGVmdCk7CkBAIC0yMTAsNyArMjEw
LDcgQEAgaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0TGVmdChJbmxpbmVMYQogCiBpbmxpbmUg
dm9pZCBJbmxpbmVSZWN0OjpzZXRXaWR0aChJbmxpbmVMYXlvdXRVbml0IHdpZHRoKQogewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRXaWR0
aCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0V2lkdGgod2lkdGgpOwpAQCAtMjE4LDcg
KzIxOCw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldFdpZHRoKElubGluZUwKIAogaW5s
aW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0SGVpZ2h0KElubGluZUxheW91dFVuaXQgaGVpZ2h0KQog
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFs
aWRIZWlnaHQgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldEhlaWdodChoZWlnaHQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlM
aW5lQm94LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5TGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KCkgY29uc3Q7CiAKICAg
ICBwcml2YXRlOgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1faGFz
VmFsaWREZXNjZW50IHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMTI2LDcgKzEyNiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVt
cHR5ID0gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgeyBmYWxzZSB9OwogI2VuZGlmCkBAIC0xNDMs
NyArMTQzLDcgQEAgaW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lUmVjdAogICAg
ICwgbV9iYXNlbGluZShiYXNlbGluZSkKICAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVP
ZmZzZXQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
bV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKICAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQg
PSB0cnVlOwogI2VuZGlmCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIGNvbnN0IExpbmVCb3g6
OkJhc2VsaW5lJiBMaW5lQm94OgogCiBpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9m
ZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQogewotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRCYXNlbGlu
ZU9mZnNldCA9IHRydWU7CiAjZW5kaWYKICAgICBtX2Jhc2VsaW5lT2Zmc2V0ID0gc3RkOjptYXgo
YmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIGlu
bGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJhc2VsaW4KIAogaW5saW5lIHZvaWQgTGlu
ZUJveDo6cmVzZXRCYXNlbGluZSgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKICNlbmRpZgog
ICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OwpAQCAtMjA0LDcgKzIwNCw3IEBAIGlubGluZSBM
aW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW4KICAgICA6IG1fYXNjZW50KGFzY2VudCkK
ICAgICAsIG1fZGVzY2VudChkZXNjZW50KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwogICAgIG1faGFzVmFs
aWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgpAQCAtMjEyLDcgKzIxMiw3IEBAIGlubGluZSBMaW5l
Qm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW4KIAogaW5saW5lIHZvaWQgTGluZUJveDo6QmFz
ZWxpbmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1
ZTsKICNlbmRpZgogICAgIG1fYXNjZW50ID0gYXNjZW50OwpAQCAtMjIwLDcgKzIyMCw3IEBAIGlu
bGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQKIAogaW5saW5lIHZvaWQgTGlu
ZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnQoSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQogewot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRE
ZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fZGVzY2VudCA9IGRlc2NlbnQ7CkBAIC0yMjgs
NyArMjI4LDcgQEAgaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbgogCiBp
bmxpbmUgdm9pZCBMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQoKQogewotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwog
ICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSZWN0LmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UmVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBMYXlv
dXRSZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgdm9pZCBpbnZhbGlkYXRlVG9wKCkgeyBtX2hhc1ZhbGlkVG9wID0g
ZmFsc2U7IH0KICAgICB2b2lkIGludmFsaWRhdGVMZWZ0KCkgeyBtX2hhc1ZhbGlkTGVmdCA9IGZh
bHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlV2lkdGgoKSB7IG1faGFzVmFsaWRXaWR0aCA9IGZh
bHNlOyB9CkBAIC05MywxNCArOTMsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVmFsaWRM
ZWZ0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRXaWR0aCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2hhc1ZhbGlkSGVpZ2h0IHsgZmFsc2UgfTsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiB9OwogCiBpbmxpbmUgUmVjdDo6UmVj
dChMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlv
dXRVbml0IGhlaWdodCkKICAgICA6IG1fcmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQpCiB7
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxp
ZFRvcCA9IHRydWU7CiAgICAgbV9oYXNWYWxpZExlZnQgPSB0cnVlOwogICAgIG1faGFzVmFsaWRX
aWR0aCA9IHRydWU7CkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIFJlY3Q6OlJlY3QoTGF5b3V0
UG9pbnQgdG9wTGVmdCwgTAogewogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiBpbmxpbmUgdm9pZCBSZWN0OjppbnZhbGlkYXRlUG9zaXRpb24oKQogewogICAg
IGludmFsaWRhdGVUb3AoKTsKQEAgLTE4OSw3ICsxODksNyBAQCBpbmxpbmUgTGF5b3V0VW5pdCBS
ZWN0OjpoZWlnaHQoKSBjb25zdAogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRUb3BMZWZ0KGNvbnN0
IExheW91dFBvaW50JiB0b3BMZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkUG9zaXRpb24oKTsKICNlbmRpZgogICAgIG1fcmVj
dC5zZXRMb2NhdGlvbih0b3BMZWZ0KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBS
ZWN0OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91CiAKIGlubGluZSB2b2lkIFJlY3Q6OnNldFRvcChM
YXlvdXRVbml0IHRvcCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fcmVjdC5zZXRZKHRv
cCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6c2V0VG9wKExheW91dFVu
aXQgdG9wKQogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRMZWZ0KExheW91dFVuaXQgbGVmdCkKIHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlk
TGVmdCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0WChsZWZ0KTsKQEAgLTIxMyw3ICsy
MTMsNyBAQCBpbmxpbmUgdm9pZCBSZWN0OjpzZXRMZWZ0KExheW91dFVuaXQgbGVmCiAKIGlubGlu
ZSB2b2lkIFJlY3Q6OnNldFdpZHRoKExheW91dFVuaXQgd2lkdGgpCiB7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsK
ICNlbmRpZgogICAgIG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7CkBAIC0yMjEsNyArMjIxLDcgQEAg
aW5saW5lIHZvaWQgUmVjdDo6c2V0V2lkdGgoTGF5b3V0VW5pdCB3aQogCiBpbmxpbmUgdm9pZCBS
ZWN0OjpzZXRIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZEhlaWdodCA9IHRydWU7CiAjZW5k
aWYKICAgICBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdodCk7CkBAIC0yMjksNyArMjI5LDcgQEAgaW5s
aW5lIHZvaWQgUmVjdDo6c2V0SGVpZ2h0KExheW91dFVuaXQgaAogCiBpbmxpbmUgdm9pZCBSZWN0
OjpzZXRTaXplKGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRTaXplKCk7CiAjZW5kaWYKICAg
ICBtX3JlY3Quc2V0U2l6ZShzaXplKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBpbmxpbmUgdm9pZCBS
ZWN0OjpleHBhbmQoT3B0aW9uYWw8TGF5b3V0CiBpbmxpbmUgUmVjdCBSZWN0OjpjbG9uZSgpIGNv
bnN0CiB7CiAgICAgUmVjdCByZWN0OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIHJlY3QubV9oYXNWYWxpZFRvcCA9IG1faGFzVmFsaWRUb3A7CiAgICAgcmVj
dC5tX2hhc1ZhbGlkTGVmdCA9IG1faGFzVmFsaWRMZWZ0OwogICAgIHJlY3QubV9oYXNWYWxpZFdp
ZHRoID0gbV9oYXNWYWxpZFdpZHRoOwpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIEl0ZXJhdG9yIGVuZChjb25zdCBGbG9hdGluZ1N0
YXRlOgogICAgIHJldHVybiBJdGVyYXRvcihmbG9hdHMsIHsgfSk7CiB9CiAKLSNpZm5kZWYgTkRF
QlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBib29sIGFyZUZsb2F0c0hvcml6b250YWxs
eVNvcnRlZChjb25zdCBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQogewogICAgIGF1dG8m
IGZsb2F0cyA9IGZsb2F0aW5nU3RhdGUuZmxvYXRzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2Myw3
ICs4NjMsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpDb2xsYXBzaWJsZUNvbnRlbnQ6OmFwCiBJbmxp
bmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpDb2xsYXBzaWJsZUNvbnRlbnQ6OmNvbGxhcHNlKCkK
IHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgYXV0byBoYXNTZWVuTm9uV2hpdGVzcGFjZVRleHRDb250ZW50ID0gZmFsc2U7
CiAjZW5kaWYKICAgICAvLyBDb2xsYXBzZSBjb2xsYXBzaWJsZSB0cmFpbGluZyBjb250ZW50IGFu
ZCBtb3ZlIGFsbCB0aGUgb3RoZXIgdHJhaWxpbmcgcnVucy4KQEAgLTg4Myw3ICs4ODMsNyBAQCBJ
bmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpDb2xsYXBzaWJsCiAgICAgICAgICAgICBydW4u
c2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlQoIWhhc1NlZW5Ob25XaGl0ZXNwYWNlVGV4dENvbnRlbnQpOwotI2lmbmRl
ZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgaGFzU2Vlbk5vbldoaXRl
c3BhY2VUZXh0Q29udGVudCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAgIC8vIE11c3QgYmUg
YSBsZXR0ZXIgc3BhY2luZyBjb2xsYXBzZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBUYWJsZUdyaWQ6OkNvbHVtbjo6Q29sdW1u
KGNvbnN0IEJveCogY29sCiAKIHZvaWQgVGFibGVHcmlkOjpDb2x1bW46OnNldFdpZHRoQ29uc3Ry
YWludHMoRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgd2lkdGhD
b25zdHJhaW50cykKIHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBt
X2hhc1dpZHRoQ29uc3RyYWludHMgPSB0cnVlOwogI2VuZGlmCiAgICAgbV93aWR0aENvbnN0cmFp
bnRzID0gd2lkdGhDb25zdHJhaW50czsKQEAgLTU2LDcgKzU2LDcgQEAgRm9ybWF0dGluZ0NvbnRl
eHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYQogCiB2b2lkIFRhYmxlR3JpZDo6Q29sdW1uOjpzZXRM
b2dpY2FsV2lkdGgoTGF5b3V0VW5pdCBjb21wdXRlZExvZ2ljYWxXaWR0aCkKIHsKLSNpZm5kZWYg
TkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc0NvbXB1dGVkV2lkdGggPSB0cnVl
OwogI2VuZGlmCiAgICAgbV9jb21wdXRlZExvZ2ljYWxXaWR0aCA9IGNvbXB1dGVkTG9naWNhbFdp
ZHRoOwpAQCAtNzAsNyArNzAsNyBAQCBMYXlvdXRVbml0IFRhYmxlR3JpZDo6Q29sdW1uOjpsb2dp
Y2FsV2lkCiAKIHZvaWQgVGFibGVHcmlkOjpDb2x1bW46OnNldExvZ2ljYWxMZWZ0KExheW91dFVu
aXQgY29tcHV0ZWRMb2dpY2FsTGVmdCkKIHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2hhc0NvbXB1dGVkTGVmdCA9IHRydWU7CiAjZW5kaWYKICAgICBtX2NvbXB1
dGVkTG9naWNhbExlZnQgPSBjb21wdXRlZExvZ2ljYWxMZWZ0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3Jp
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgTGF5
b3V0VW5pdCBtX2NvbXB1dGVkTG9naWNhbExlZnQ7CiAgICAgICAgIFdlYWtQdHI8Y29uc3QgQm94
PiBtX2NvbHVtbkJveDsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICBib29sIG1faGFzV2lkdGhDb25zdHJhaW50cyB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wg
bV9oYXNDb21wdXRlZFdpZHRoIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2hhc0NvbXB1dGVk
TGVmdCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVuCiAgICAgfQogICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpTdG9wQWxsTG9hZHM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFT
U0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBGQUxMVEhST1VHSDsK
ICNlbmRpZgogICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CkBAIC0xMjE5LDcgKzEyMTks
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lKEZyYW1lCiAgICAgbV93cml0
ZXIuc2V0RnJhbWUoZnJhbWUpOwogICAgIGF0dGFjaFRvRnJhbWUoKTsKIAotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzRXZlckJlZW5BdHRhY2hlZCA9IHRydWU7
CiAjZW5kaWYKIApAQCAtMTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YXR0
YWNoVG9GcmFtZSgpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiB7
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKG1faGFzRXZlckJl
ZW5BdHRhY2hlZCkKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZyYW1lLCAiZGV0YWNo
RnJvbUZyYW1lKCkgaXMgYmVpbmcgY2FsbGVkIG9uIGEgRG9jdW1lbnRMb2FkZXIgdHdpY2Ugd2l0
aG91dCBhbiBhdHRhY2hUb0ZyYW1lKCkgaW5iZXR3ZWVuIik7CiAgICAgZWxzZQpAQCAtMTUxNiwx
NCArMTUxNiwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VECiAg
ICAgfQogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAKIGJvb2wgRG9j
dW1lbnRMb2FkZXI6OmlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKFJlc291cmNlTG9hZGVyKiBsb2Fk
ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGluZ1N1YnN0aXR1dGVSZXNvdXJjZXMuY29u
dGFpbnMobG9hZGVyKTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVMb2FkKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIpCiB7CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjphZGRTdWJyZXNvdXJjZUxvYWRlCiAgICAgaWYgKGxvYWRlci0+b3B0aW9ucygpLmFwcGxp
Y2F0aW9uQ2FjaGVNb2RlID09IEFwcGxpY2F0aW9uQ2FjaGVNb2RlOjpCeXBhc3MpCiAgICAgICAg
IHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGlmIChkb2N1bWVudCgpKSB7CiAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQoKS0+YmFja0Zvcndh
cmRDYWNoZVN0YXRlKCkpIHsKICAgICAgICAgY2FzZSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2Fy
ZENhY2hlOgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXMoKSBjb25zdDsK
IAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNTdWJzdGl0
dXRlTG9hZFBlbmRpbmcoUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICNlbmRpZgogICAgIHZvaWQg
Y2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVMb2FkKFJlc291cmNlTG9hZGVyKik7ICAgCkBAIC02MjAs
NyArNjIwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxEb2N1bWVudElkZW50aWZpZXI+IG1f
dGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudDsKICNlbmRpZgogCi0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc0V2ZXJCZWVuQXR0YWNoZWQgeyBmYWxz
ZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZGVv
LmgiCiAjZW5kaWYKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
Ly8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIg
b2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5cyBmYWlsLgogbmFt
ZXNwYWNlIFdURiB7CiAKQEAgLTYyLDggKzYyLDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVD
aGVjazxXZWJDb3JlOjpJbQogICAgIH0KIH07CiAKLX0KLSNlbmRpZgorfSAvLyBuYW1lc3BhY2Ug
V1RGCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9zd2l0Y2hpbmdDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faWdub3JlRm9yUmVxdWVzdENvdW50IHsgZmFsc2UgfTsKIAotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9kZWxldGVkIHsgZmFsc2UgfTsKICAg
ICB1bnNpZ25lZCBtX2xydUluZGV4IHsgMCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQyMyw3ICs0MjMsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjpscnVMaXN0Rm9yKENhY2hlZFJl
c291CiB7CiAgICAgdW5zaWduZWQgYWNjZXNzQ291bnQgPSBzdGQ6Om1heChyZXNvdXJjZS5hY2Nl
c3NDb3VudCgpLCAxVSk7CiAgICAgdW5zaWduZWQgcXVldWVJbmRleCA9IFdURjo6ZmFzdExvZzIo
cmVzb3VyY2Uuc2l6ZSgpIC8gYWNjZXNzQ291bnQpOwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIHJlc291cmNlLm1fbHJ1SW5kZXggPSBxdWV1ZUluZGV4OwogI2VuZGlm
CiAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlz
dChDYWNoCiAgICAgaWYgKCFyZXNvdXJjZS5hY2Nlc3NDb3VudCgpKQogICAgICAgICByZXR1cm47
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25l
ZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS5tX2xydUluZGV4OwogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMzMSw3ICs0MzMxLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYXV0byBuZWVkc1N0eWxlUmVjYWxjID0gWyZdIHsKICAgICAgICAgRGVzY2VuZGFudHNE
ZXF1ZSBkZXF1ZTsKICAgICAgICAgd2hpbGUgKGF1dG8gdmlldyA9IG5leHRSZW5kZXJlZERlc2Nl
bmRhbnQoZGVxdWUpKSB7CkBAIC00MzUwLDcgKzQzNTAsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBk
YXRlTGF5b3V0QW5kU3R5bGVJZk5lCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgQVNTRVJUKCFu
ZWVkc1N0eWxlUmVjYWxjKCkpOwogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEZyYW1lVmlld0xh
eW91dENvbnRleHQ6OmFkZExheW91dERlCiAgICAgICAgIGxheW91dFN0YXRlLT5hZGRMYXlvdXRE
ZWx0YShkZWx0YSk7CiB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OmxheW91dERlbHRhTWF0Y2hlcyhj
b25zdCBMYXlvdXRTaXplJiBkZWx0YSkKIHsKICAgICBpZiAoYXV0byogbGF5b3V0U3RhdGUgPSB0
aGlzLT5sYXlvdXRTdGF0ZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdM
YXlvdXRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXdMYXlvdXRDb250ZXh0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTEx
LDcgQEAgcHVibGljOgogICAgIC8vIElmIHdlJ3JlIGRvaW5nIGEgZnVsbCByZXBhaW50IG1fbGF5
b3V0U3RhdGUgd2lsbCBiZSAwLCBidXQgaW4gdGhhdCBjYXNlIGxheW91dERlbHRhIGRvZXNuJ3Qg
bWF0dGVyLgogICAgIExheW91dFNpemUgbGF5b3V0RGVsdGEoKSBjb25zdDsKICAgICB2b2lkIGFk
ZExheW91dERlbHRhKGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGxheW91dERlbHRhTWF0Y2hlcyhjb25z
dCBMYXlvdXRTaXplJiBkZWx0YSk7CiAjZW5kaWYKICAgICB1c2luZyBMYXlvdXRTdGF0ZVN0YWNr
ID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJMYXlvdXRTdGF0ZT4+OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM1LDcgKzE4MzUsNyBAQCB2b2lkIFBhZ2U6OnNl
dFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsCiAKICNlbmRpZgogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQgUGFnZTo6Y2hlY2tTdWJmcmFtZUNvdW50
Q29uc2lzdGVuY3koKSBjb25zdAogewpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBQYWdlOjpj
aGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeQogICAgIEFTU0VSVChtX3N1YmZyYW1lQ291bnQg
KyAxID09IHN1YmZyYW1lQ291bnQpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCiB2b2lkIFBhZ2U6OnJlc3VtZUFuaW1hdGluZ0ltYWdlcygpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk5OSwxMiArOTk5LDEyIEBAIGlubGluZSBQYWdlR3JvdXAmIFBh
Z2U6Omdyb3VwKCkKICAgICByZXR1cm4gKm1fZ3JvdXA7CiB9CiAKLSNpZiBBU1NFUlRfRElTQUJM
RUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogaW5saW5lIHZvaWQgUGFnZTo6Y2hlY2tTdWJmcmFt
ZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyAhQVNT
RVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgYm9vbCBjb25zdHJh
aW50c0FyZUFsbFJlbGF0aXZlKGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVy
cyYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gIWNvbmZpZ3VyYXRpb24ud2lkdGhJc1Nl
dCAmJiAhY29uZmlndXJhdGlvbi5oZWlnaHRJc1NldCAmJiAhY29uZmlndXJhdGlvbi5pbml0aWFs
U2NhbGVJc1NldDsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHN0YXRp
YyBmbG9hdCBwbGF0Zm9ybURldmljZVdpZHRoT3ZlcnJpZGUoKQogewpAQCAtNjMzLDcgKzYzMyw3
IEBAIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRJc0tub3duVG8KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiAhTE9HX0RJU0FCTEVECiAKIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Vmlld3BvcnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFyYW1ldGVy
cyB4aHRtbE1vYmlsZVBhcmFtZXRlcnMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFy
YW1ldGVycyB0ZXN0aW5nUGFyYW1ldGVycygpOwogICAgIAotI2lmbmRlZiBOREVCVUcKKyNpZiAh
TE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNFdmVu
dD4gbV9zYXZlZEN1cnJlbnRFdmVudDsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9ldmVudDsKICNlbmRpZgogICAgIFJldGFpblB0
cjxOU0V2ZW50PiBtX3NhdmVkUHJlc3N1cmVFdmVudDsKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2
YXRlOgogCiBpbmxpbmUgQ3VycmVudEV2ZW50U2NvcGU6OkN1cnJlbnRFdmVudFNjb3BlKE5TRXZl
bnQgKmV2ZW50LCBOU0V2ZW50ICpjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVudCkKICAgICA6IG1f
c2F2ZWRDdXJyZW50RXZlbnQoY3VycmVudE5TRXZlbnRTbG90KCkpCi0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2V2ZW50KGV2ZW50KQogI2VuZGlmCiAgICAgLCBt
X3NhdmVkUHJlc3N1cmVFdmVudChjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVudFNsb3QoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBAIFN0cmluZyBEYXRlQ29tcG9uZW50czo6
dG9TdHJpbmdGb3JUaW1lKFMKICAgICBzd2l0Y2ggKGVmZmVjdGl2ZUZvcm1hdCkgewogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxF
RAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBGQUxMVEhST1VHSDsgLy8gVG8gTm9uZS4K
ICNlbmRpZgogICAgIGNhc2UgTm9uZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2Nyb2xsYWJsZUFyZWEg
ewogICAgIHZpcnR1YWwgflNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSgpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBib29sIHdlYWtQdHJGYWN0b3JX
YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZDsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfU0NST0xM
X1NOQVApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVgogCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVT
ZWdtZW50KCkgY29uc3QKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB0byB0cnVl
IGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KICAgICAvLyBSZW1vdmUgYWxsIGluc3RhbmNl
cyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBP
KG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2LgogICAgIC8vIG1faGFzQmVlbkNvbWJpbmVk
SW50b09uZVNlZ21lbnQgPSB0cnVlOwpAQCAtMjAwLDcgKzIwMCw3IEBAIFJlZjxTaGFyZWRCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGMKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjpp
bnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBvc2l0aW9uID0gMDsK
QEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFNoYXJlZEJ1ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3Rl
bnQoCiAgICAgfQogICAgIHJldHVybiBwb3NpdGlvbiA9PSBtX3NpemU7CiB9Ci0jZW5kaWYKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHByaXZhdGU6
CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKICAgICBtdXRhYmxlIERhdGFTZWdtZW50VmVjdG9y
IG1fc2VnbWVudHM7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmluZWRJbnRvT25lU2VnbWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0OwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjZW5kaWYKIApAQCAtNzgsNyAr
NzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgU3VwcGxlbWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+U3VwcGxlbWVudCgpID0gZGVmYXVsdDsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorI2lmIEFTU0VSVF9FTkFCTEVEIHx8
IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIHZpcnR1YWwgYm9vbCBpc1JlZkNvdW50
ZWRXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCkBAIC0xMTUsNyAr
MTE1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zdXBwbGVtZW50cy5nZXQoa2V5KTsK
ICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHByb3Rl
Y3RlZDoKICAgICBTdXBwbGVtZW50YWJsZSgpID0gZGVmYXVsdDsKICNlbmRpZgpAQCAtMTIzLDcg
KzEyMyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0
IGNoYXIqLCBzdGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVudDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hh
cio+PiBTdXBwbGVtZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3Mg
VGltZXJIZWFwUmVmZXJlbmNlOwogLy8gVGhlbiB3ZSBzZXQgYSBzaW5nbGUgc2hhcmVkIHN5c3Rl
bSB0aW1lciB0byBmaXJlIGF0IHRoYXQgdGltZS4KIC8vCiAvLyBXaGVuIGEgdGltZXIncyAibmV4
dCBmaXJlIHRpbWUiIGNoYW5nZXMsIHdlIG5lZWQgdG8gbW92ZSBpdCBhcm91bmQgaW4gdGhlIHBy
aW9yaXR5IHF1ZXVlLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
c3RhdGljIFRocmVhZFRpbWVySGVhcCYgdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkKIHsKICAgICBy
ZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRpbWVycygpLnRpbWVySGVhcCgpOwpAQCAt
MzAwLDcgKzMwMCw3IEBAIFNlY29uZHMgVGltZXJCYXNlOjpuZXh0RmlyZUludGVydmFsKCkgY28K
IAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0hlYXBJbmRleCgpIGNvbnN0CiB7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUKG1faGVhcEl0
ZW0pOwogICAgIGF1dG8mIGhlYXAgPSBtX2hlYXBJdGVtLT50aW1lckhlYXAoKTsKICAgICBBU1NF
UlQoJmhlYXAgPT0gJnRocmVhZEdsb2JhbFRpbWVySGVhcCgpKTsKQEAgLTQzNCw3ICs0MzQsNyBA
QCB2b2lkIFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKE1vbm90CiAgICAgaWYgKGZpcmVU
aW1lICYmIGhhc1ZhbGlkSGVhcFBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIE9wdGlvbmFsPHVuc2lnbmVk
PiBvbGRIZWFwSW5kZXg7CiAgICAgaWYgKG1faGVhcEl0ZW0tPmlzSW5IZWFwKCkpCiAgICAgICAg
IG9sZEhlYXBJbmRleCA9IG1faGVhcEl0ZW0tPmhlYXBJbmRleCgpOwpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3QKICAgICBlbHNlCiAg
ICAgICAgIGhlYXBJbmNyZWFzZUtleSgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IG5ld0hlYXBJbmRleDsKICAgICBp
ZiAobV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkKICAgICAgICAgbmV3SGVhcEluZGV4ID0gbV9oZWFw
SXRlbS0+aGVhcEluZGV4KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MCwxMiArMTgwLDEyIEBAIFZlY3RvcjxOYXRpdmVJbWFnZVB0cj4gQml0bWFwSW1hZ2U6OmZy
YW0KIH0KICNlbmRpZgogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiBib29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIHsKICAgICByZXR1cm4gc2l6ZSgp
LndpZHRoKCkgIT0gMSB8fCBzaXplKCkuaGVpZ2h0KCkgIT0gMSB8fCBmcmFtZUNvdW50KCkgPiAx
OwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogSW1hZ2VEcmF3UmVzdWx0
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg2LDcgKzE4Niw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBIYW5kbGUgcGxhdGZvcm0tc3BlY2lm
aWMgZGF0YQogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXRmb3JtRGF0YSgpOwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBub3RTb2xpZENvbG9yKCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkRm9yVGVzdGluZyB7
IGZhbHNlIH07CiAKLSNpZiAhTE9HX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQgfHwgIUxP
R19ESVNBQkxFRAogICAgIHNpemVfdCBtX2xhdGVGcmFtZUNvdW50IHsgMCB9OwogICAgIHNpemVf
dCBtX2Vhcmx5RnJhbWVDb3VudCB7IDAgfTsKICAgICBzaXplX3QgbV9jYWNoZWRGcmFtZUNvdW50
IHsgMCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdmlydHVhbCBib29sIG5v
dFNvbGlkQ29sb3IoKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTY3JhdGNoQnVm
ZmVyKCkKICAgICAgICAgOiBtX3B1cmdlVGltZXIoKnRoaXMsICZTY3JhdGNoQnVmZmVyOjpjbGVh
clNjcmF0Y2hCdWZmZXIpCiAgICAgICAgICwgbV9sYXN0V2FzSW5zZXQoZmFsc2UpCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICwgbV9idWZmZXJJblVz
ZShmYWxzZSkKICNlbmRpZgogICAgIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIElt
YWdlQnVmZmVyKiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIW1fYnVmZmVySW5Vc2UpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX2J1ZmZlckluVXNlID0gdHJ1ZTsKICNlbmRpZgog
ICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byByZWNyZWF0ZSB0aGUgYnVmZmVyIGlmIHRoZSBj
dXJyZW50IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpCiAgICAgewotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX2J1ZmZlckluVXNl
ID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgaWYgKG1fcHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQpA
QCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xhc3RXYXNJbnNldDsKICAg
ICBGbG9hdFNpemUgbV9sYXN0TGF5ZXJTaXplOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2J1ZmZlckluVXNlOwogI2VuZGlmCiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVI
b3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6
c2V0V2luZG93KEhXTkQgdwogICAgIGlmICh3aW5kb3cgPT0gbV93aW5kb3cpCiAgICAgICAgIHJl
dHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHN3
aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgV2luZG93Tm90U2V0OgogICAgICAgICBBU1NFUlRf
QVJHKHdpbmRvdywgd2luZG93KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FD
RkxheWVyVHJlZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Nob3VsZEZsdXNoUGVuZGluZ0dyYXBoaWNzTGF5ZXJDaGFuZ2VzIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyB7IGZhbHNlIH07CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBlbnVtIHsgV2lu
ZG93Tm90U2V0LCBXaW5kb3dTZXQsIFdpbmRvd0NsZWFyZWQgfSBtX3N0YXRlIHsgV2luZG93Tm90
U2V0IH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRh
dGFDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiwxNyArMzM2LDEzIEBAIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXQKIAogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1
dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIGNvbnN0IEludFNpemUm
IHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZykKIHsKLSNpZiBBU1NFUlRfRElTQUJMRUQK
LSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0jZW5kaWYKLQogICAgIEFTU0VSVChzb3VyY2VSZWN0
LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVjdC5oZWlnaHQoKSA+IDApOwogICAg
IAogICAgIENoZWNrZWQ8aW50PiBvcmlnaW54ID0gc291cmNlUmVjdC54KCk7CiAgICAgQ2hlY2tl
ZDxpbnQ+IGRlc3R4ID0gKENoZWNrZWQ8aW50PihkZXN0UG9pbnQueCgpKSArIHNvdXJjZVJlY3Qu
eCgpKTsKICAgICBBU1NFUlQoZGVzdHgudW5zYWZlR2V0KCkgPj0gMCk7Ci0gICAgQVNTRVJUKGRl
c3R4LnVuc2FmZUdldCgpIDwgc2l6ZS53aWR0aCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHNpemUs
IGRlc3R4LnVuc2FmZUdldCgpIDwgc2l6ZS53aWR0aCgpKTsKICAgICBBU1NFUlQob3JpZ2lueC51
bnNhZmVHZXQoKSA+PSAwKTsKICAgICBBU1NFUlQob3JpZ2lueC51bnNhZmVHZXQoKSA8PSBzb3Vy
Y2VSZWN0Lm1heFgoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOTAsNyArMTM5MCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXJhY3RlcihVQ2gKIH0KICNlbmRpZgogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgaW5saW5lIGJv
b2wgaXNVc2VySW5zdGFsbGVkRm9udChDVEZvbnRSZWYgZm9udCkKIHsKICNpZiBIQVZFKERJU0FM
TE9XQUJMRV9VU0VSX0lOU1RBTExFRF9GT05UUykKQEAgLTE0MDEsNyArMTQwMSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1VzZXJJbnN0YWxsZWRGb250KEMKICAgICByZXR1cm4gZmFsc2U7CiAj
ZW5kaWYKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICNpZiAhVVNFKFBM
QVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUKSAmJiAoUExBVEZPUk0oTUFDKSB8fCAoUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgVEFSR0VUX09TX0lPUykpCiBzdGF0aWMgUmV0YWluUHRyPENURm9u
dFJlZj4gY3JlYXRlRm9udEZvckNoYXJhY3RlcnMoQ1RGb250UmVmIGZvbnQsIENGU3RyaW5nUmVm
IGxvY2FsZVN0cmluZywgQWxsb3dVc2VySW5zdGFsbGVkRm9udHMsIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dzdEFsbG9jYXRv
ckZhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR3N0QWxsb2NhdG9yRmFzdE1hbGxvYy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIEdzdE1lbW9yeSogZ3N0QWxsb2NhdG9y
RmFzdE1hbGxvYwogCiBzdGF0aWMgdm9pZCBnc3RBbGxvY2F0b3JGYXN0TWFsbG9jRnJlZShHc3RB
bGxvY2F0b3IqIGFsbG9jYXRvciwgR3N0TWVtb3J5KiBtZW1vcnkpCiB7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9UWVBFKGFsbG9jYXRvciwgZ3N0X2FsbG9jYXRvcl9mYXN0X21hbGxvY19nZXRfdHlwZSgp
KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhbGxvY2F0b3IpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250
ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBAIFBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGEKIAog
ICAgICAgICAgICAgLy8gRGVyZWYgdGhlIEJ1ZmZlciBvYmplY3QuCiAgICAgICAgICAgICB1c2Vy
RGF0YS0+Zmlyc3QtPmRlcmVmKCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgICAgICAgICAvLyBNYXJrIHRoZSBkZWxldGlvbiBvZiB0aGUgY2Fpcm9fc3Vy
ZmFjZV90IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gUGFpbnRp
bmdDb250ZXh0Q2Fpcm8gYXMgY29tcGxldGUuIFRoaXMgd2F5IHdlIGNoZWNrIHRoYXQgdGhlIGNh
aXJvX3N1cmZhY2VfdAogICAgICAgICAgICAgLy8gb2JqZWN0IGRvZXNuJ3Qgb3V0bGl2ZSB0aGUg
UGFpbnRpbmdDb250ZXh0Q2Fpcm8gdGhyb3VnaCB3aGljaCBpdCB3YXMgdXNlZC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRl
eHR1cmVNYXBwZXJJbXBsLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1
cmVNYXBwZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEJh
Y2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVhCiAgICAgYXV0byYgdXBkYXRlID0gbV9s
YXllclN0YXRlLnVwZGF0ZTsKIAogICAgIC8vIEFzc2VydCBubyB0aWxlIHdpdGggdGhpcyBJRCBo
YXMgYmVlbiByZWdpc3RlcmVkIHlldC4KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBhdXRvIG1hdGNoZXNUaWxlID0gW3RpbGVJRF0oYXV0byYgdGlsZSkgeyBy
ZXR1cm4gdGlsZS50aWxlSUQgPT0gdGlsZUlEOyB9OwogI2VuZGlmCiAgICAgQVNTRVJUKHN0ZDo6
bm9uZV9vZih1cGRhdGUudGlsZXNUb0NyZWF0ZS5iZWdpbigpLCB1cGRhdGUudGlsZXNUb0NyZWF0
ZS5lbmQoKSwgbWF0Y2hlc1RpbGUpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6
Q29udGVudExhCiAKIENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjp+Q29udGVudExheWVy
VGV4dHVyZU1hcHBlckltcGwoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50LmxvY2spOwogICAgIEFTU0VS
VCghbV9jbGllbnQuY2xpZW50KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9p
ZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbgogICAgICAgICAgICAgaWYgKCFt
X2NhY2hlZEhhc2ggfHwgIW1fZ3JhZGllbnQpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVHcmFk
aWVudChkMmRDb250ZXh0KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgICAgICAgICAgZDJkQ29udGV4dC0+U2V0VGFncyhHUkFESUVOVF9EUkFXSU5HLCBf
X0xJTkVfXyk7CiAjZW5kaWYKIApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgR3JhZGllbnQ6OmZp
bGwoR3JhcGhpY3NDb250ZXh0JiBjb24KICAgICAgICAgICAgIGlmICghbV9jYWNoZWRIYXNoIHx8
ICFtX2dyYWRpZW50KQogICAgICAgICAgICAgICAgIGdlbmVyYXRlR3JhZGllbnQoZDJkQ29udGV4
dCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ICAgIGQyZENvbnRleHQtPlNldFRhZ3MoR1JBRElFTlRfRFJBV0lORywgX19MSU5FX18pOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRhdGFEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVy
RGF0YURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQg
SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQKICAgICBpZiAod2lkdGggPD0gMCB8
fCBoZWlnaHQgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKGJpdG1hcCkgewogICAgICAgICBhdXRvIHBpeGVs
U2l6ZSA9IGJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7CiAgICAgICAgIEFTU0VSVChwaXhlbFNpemUu
d2lkdGggPj0gc291cmNlU2l6ZS53aWR0aCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERpcmVj
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUGF0aDo6Y2xl
YXJHZW9tZXRyaWVzKCkKIAogdm9pZCBQYXRoOjphcHBlbmRHZW9tZXRyeShJRDJEMUdlb21ldHJ5
KiBnZW9tZXRyeSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICB1bnNpZ25lZCBiZWZvcmUgPSByZWZDb3VudChnZW9tZXRyeSk7CiAjZW5kaWYKIApAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUGF0aDo6Y3JlYXRlR2VvbWV0cnlXaXRoRmlsbE1vZGUoV2kK
IAogUGF0aDo6UGF0aChjb25zdCBQYXRoJiBvdGhlcikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBwYXRoQ291bnQgPSByZWZDb3VudChv
dGhlci5tX3BhdGguZ2V0KCkpOwogICAgIHVuc2lnbmVkIGFjdGl2ZVBhdGhDb3VudCA9IHJlZkNv
dW50KG90aGVyLm1fYWN0aXZlUGF0aC5nZXQoKSk7CiAjZW5kaWYKQEAgLTE1OSw3ICsxNTksNyBA
QCBQYXRoOjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQogICAgIAogUGF0aDo6UGF0aChQYXRoJiYg
b3RoZXIpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
dW5zaWduZWQgcGF0aENvdW50ID0gcmVmQ291bnQob3RoZXIubV9wYXRoLmdldCgpKTsKICAgICB1
bnNpZ25lZCBhY3RpdmVQYXRoQ291bnQgPSByZWZDb3VudChvdGhlci5tX2FjdGl2ZVBhdGguZ2V0
KCkpOwogI2VuZGlmCkBAIC0xNzUsNyArMTc1LDcgQEAgUGF0aCYgUGF0aDo6b3BlcmF0b3I9KGNv
bnN0IFBhdGgmIG90aGVyKQogewogICAgIGlmICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0
dXJuICp0aGlzOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IHVuc2lnbmVkIHBhdGhDb3VudCA9IHJlZkNvdW50KG90aGVyLm1fcGF0aC5nZXQoKSk7CiAgICAg
dW5zaWduZWQgYWN0aXZlUGF0aENvdW50ID0gcmVmQ291bnQob3RoZXIubV9hY3RpdmVQYXRoLmdl
dCgpKTsKICNlbmRpZgpAQCAtMTk2LDcgKzE5Niw3IEBAIFBhdGgmIFBhdGg6Om9wZXJhdG9yPShQ
YXRoJiYgb3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gKnRo
aXM7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNp
Z25lZCBwYXRoQ291bnQgPSByZWZDb3VudChvdGhlci5tX3BhdGguZ2V0KCkpOwogICAgIHVuc2ln
bmVkIGFjdGl2ZVBhdGhDb3VudCA9IHJlZkNvdW50KG90aGVyLm1fYWN0aXZlUGF0aC5nZXQoKSk7
CiAjZW5kaWYKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0
cm9rZVN0eWxlQXBwCiAgICAgR3JhcGhpY3NDb250ZXh0IHNjcmF0Y2hDb250ZXh0KCZzY3JhdGNo
Q29udGV4dEQyRCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6
R1BVTWVtb3J5KTsKICAgICBhcHBsaWVyLnN0cm9rZVN0eWxlKCZzY3JhdGNoQ29udGV4dCk7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBi
ZWZvcmUgPSByZWZDb3VudChtX3BhdGguZ2V0KCkpOwogI2VuZGlmCiAKQEAgLTI3Niw3ICsyNzYs
NyBAQCB2b2lkIFBhdGg6OnRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2ZvCiAgICAgaWYgKG1f
YWN0aXZlUGF0aCkKICAgICAgICAgY2xvc2VBbnlPcGVuR2VvbWV0cmllcyhEMkQxX0ZJR1VSRV9F
TkRfT1BFTik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICB1bnNpZ25lZCBiZWZvcmUgPSByZWZDb3VudChtX3BhdGguZ2V0KCkpOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVj
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQ6OmVuZERyYXcoKQogCiB2b2lkIFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
OjpzZXRUYWdzKEQyRDFfVEFHIHRhZzEsIEQyRDFfVEFHIHRhZzIpCiB7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9yZW5kZXJUYXJnZXQtPlNldFRhZ3Mo
dGFnMSwgdGFnMik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0YWcxKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkT2JzZXJ2ZXIo
T2JzZXJ2ZXImKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJik7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBoYXNPYnNlcnZlcihP
YnNlcnZlciYpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE3MCw3ICsxNzAsNyBAQCBwcml2YXRlOgog
CiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZVZlY3RvcjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogaW5saW5lIGJvb2wgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Omhhc09ic2Vy
dmVyKE9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fb2JzZXJ2ZXJzTG9jayk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZWFsdGltZU91
dAogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlKCkKIHsKIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKICNlbmRpZgogICAgIEFTU0VSVChtX3NpbmtzLmlzRW1w
dHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcg
QEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZWFsdGltZU91dAogUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKCkKIHsKIEFTU0VS
VCghbV92aWRlb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lu
a3NMb2NrKTsKICNlbmRpZgogICAgIEFTU0VSVChtX3NpbmtzLmlzRW1wdHkoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOSw3ICs5MjksNyBAQCBib29sIGlzQ3Jvc3NP
cmlnaW5TYWZlSGVhZGVyKEhUVFBIZWFkZXJOCiAKIGJvb2wgaXNDcm9zc09yaWdpblNhZmVIZWFk
ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBIVFRQSGVhZGVyU2V0JiBhY2Nlc3NDb250cm9s
RXhwb3NlSGVhZGVyU2V0KQogewotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWU7CiAgICAgQVNTRVJUKCFmaW5k
SFRUUEhlYWRlck5hbWUobmFtZSwgaGVhZGVyTmFtZSkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBAQCBjb25zdCBjaGFyKiBTUUxpdGVEYXRh
YmFzZTo6bGFzdEVycm9yTXNnCiAgICAgcmV0dXJuIG1fb3BlbkVycm9yTWVzc2FnZS5pc051bGwo
KSA/IG5vdE9wZW5FcnJvck1lc3NhZ2UgOiBtX29wZW5FcnJvck1lc3NhZ2UuZGF0YSgpOwogfQog
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIFNRTGl0ZURhdGFiYXNl
OjpkaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCkKIHsKICAgICAvLyBOb3RlIHRoYXQgU1FMaXRlIGNv
dWxkIGJlIGNvbXBpbGVkIHdpdGggLURUSFJFQURTQUZFLCBvciB5b3UgbWF5IGhhdmUgdHVybmVk
IG9mZiB0aGUgbXV0ZXhlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFNldCB0aGlzIGZsYWcgdG8gYWxsb3cgYWNjZXNzIGZyb20g
bXVsdGlwbGUgdGhyZWFkcy4gIE5vdCBhbGwgbXVsdGktdGhyZWFkZWQgYWNjZXNzZXMgYXJlIHNh
ZmUhCiAgICAgLy8gU2VlIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy9jdnN0cmFjL3dpa2k/cD1NdWx0
aVRocmVhZGluZyBmb3IgbW9yZSBpbmZvLgotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpOwog
I2Vsc2UKICAgICB2b2lkIGRpc2FibGVUaHJlYWRpbmdDaGVja3MoKSB7IH0KQEAgLTE1NCw3ICsx
NTQsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3BhZ2VTaXplIHsgLTEgfTsKICAgICAKICAgICBi
b29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFsc2UgfTsKLSNpZm5kZWYgTkRFQlVHCisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fc2hhcmFibGUgeyBmYWxzZSB9OwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsNiBAQCBTUUxp
dGVTdGF0ZW1lbnQ6OlNRTGl0ZVN0YXRlbWVudChTUUxpdGVECiAgICAgOiBtX2RhdGFiYXNlKGRi
KQogICAgICwgbV9xdWVyeShzcWwpCiAgICAgLCBtX3N0YXRlbWVudCgwKQotI2lmbmRlZiBOREVC
VUcKLSAgICAsIG1faXNQcmVwYXJlZChmYWxzZSkKLSNlbmRpZgogewogfQogCkBAIC03OSw3ICs3
Niw3IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnByZXBhcmUoKQogICAgIGlmICh0YWlsICYmICp0
YWlsKQogICAgICAgICBlcnJvciA9IFNRTElURV9FUlJPUjsKIAotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faXNQcmVwYXJlZCA9IGVycm9yID09IFNRTElURV9PSzsK
ICNlbmRpZgogICAgIHJldHVybiBlcnJvcjsKQEAgLTEwOCw3ICsxMDUsNyBAQCBpbnQgU1FMaXRl
U3RhdGVtZW50OjpzdGVwKCkKICAgICAKIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmZpbmFsaXplKCkK
IHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzUHJlcGFyZWQg
PSBmYWxzZTsKICNlbmRpZgogICAgIGlmICghbV9zdGF0ZW1lbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTk2LDggKzk2LDggQEAgcHJpdmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSYg
bV9kYXRhYmFzZTsKICAgICBTdHJpbmcgbV9xdWVyeTsKICAgICBzcWxpdGUzX3N0bXQqIG1fc3Rh
dGVtZW50OwotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1faXNQcmVwYXJlZDsKKyNpZiBBU1NF
UlRfRU5BQkxFRAorICAgIGJvb2wgbV9pc1ByZXBhcmVkIHsgZmFsc2UgfTsKICNlbmRpZgogfTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NPTVB0ci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DT01QdHIuaAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NPTVB0ci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjgsNyArMjI4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5s
aW5lIAogICAgIHJldHVybiBhICE9IGIuZ2V0KCk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB1bnNpZ25lZCByZWZDb3VudChJVW5rbm93biog
cHRyKQogewogICAgIGlmICghcHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Nv
bXBsZXhMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NzcsNyArOTc3LDcgQEAgQmlkaVJ1biogQ29tcGxleExpbmVMYXlvdXQ6OmNvbXB1dGVJbmxpbgog
dm9pZCBDb21wbGV4TGluZUxheW91dDo6cmVtb3ZlSW5saW5lQm94KEJpZGlSdW4mIHJ1biwgY29u
c3QgUm9vdElubGluZUJveCYgcm9vdExpbmVCb3gpIGNvbnN0CiB7CiAgICAgYXV0byogaW5saW5l
Qm94ID0gcnVuLmJveCgpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIGF1dG8qIGlubGluZVBhcmVudCA9IGlubGluZUJveC0+cGFyZW50KCk7CiAgICAgd2hp
bGUgKGlubGluZVBhcmVudCAmJiBpbmxpbmVQYXJlbnQgIT0gJnJvb3RMaW5lQm94KSB7CiAgICAg
ICAgIEFTU0VSVCghaW5saW5lUGFyZW50LT5pc0RpcnR5KCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIEZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdChSZW5k
ZXJCb3gKICAgICAsIG1fc2hvdWxkUGFpbnQodHJ1ZSkKICAgICAsIG1faXNEZXNjZW5kYW50KGZh
bHNlKQogICAgICwgbV9pc1BsYWNlZChmYWxzZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAsIG1faXNJblBsYWNlZFRyZWUoZmFsc2UpCiAjZW5kaWYKIHsKQEAgLTY4
LDcgKzY4LDcgQEAgRmxvYXRpbmdPYmplY3Q6OkZsb2F0aW5nT2JqZWN0KFJlbmRlckJveAogICAg
ICwgbV9zaG91bGRQYWludChzaG91bGRQYWludCkKICAgICAsIG1faXNEZXNjZW5kYW50KGlzRGVz
Y2VuZGFudCkKICAgICAsIG1faXNQbGFjZWQodHJ1ZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAsIG1faXNJblBsYWNlZFRyZWUoZmFsc2UpCiAjZW5kaWYKIHsKQEAg
LTMyOCw3ICszMjgsNyBAQCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6YWRkUGxhY2VkT2JqZWN0KEZs
CiAgICAgaWYgKG1fcGxhY2VkRmxvYXRzVHJlZSkKICAgICAgICAgbV9wbGFjZWRGbG9hdHNUcmVl
LT5hZGQoaW50ZXJ2YWxGb3JGbG9hdGluZ09iamVjdChmbG9hdGluZ09iamVjdCkpOwogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgZmxvYXRpbmdPYmplY3QtPnNldElz
SW5QbGFjZWRUcmVlKHRydWUpOwogI2VuZGlmCiB9CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBG
bG9hdGluZ09iamVjdHM6OnJlbW92ZVBsYWNlZE9iamVjdAogICAgIH0KIAogICAgIGZsb2F0aW5n
T2JqZWN0LT5zZXRJc1BsYWNlZChmYWxzZSk7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgZmxvYXRpbmdPYmplY3QtPnNldElzSW5QbGFjZWRUcmVlKGZhbHNlKTsKICNl
bmRpZgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMu
aAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5n
T2JqZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBM
YXlvdXRVbml0IHBhZ2luYXRpb25TdHJ1dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0
cnV0OyB9CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uU3RydXQoTGF5b3V0VW5pdCBzdHJ1dCkgeyBt
X3BhZ2luYXRpb25TdHJ1dCA9IHN0cnV0OyB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBib29sIGlzSW5QbGFjZWRUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
UGxhY2VkVHJlZTsgfQogICAgIHZvaWQgc2V0SXNJblBsYWNlZFRyZWUoYm9vbCB2YWx1ZSkgeyBt
X2lzSW5QbGFjZWRUcmVlID0gdmFsdWU7IH0KICNlbmRpZgpAQCAtMTA4LDcgKzEwOCw3IEBAIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9zaG91bGRQYWludCA6IDE7CiAgICAgdW5zaWduZWQgbV9p
c0Rlc2NlbmRhbnQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNQbGFjZWQgOiAxOwotI2lmbmRlZiBO
REVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVuc2lnbmVkIG1faXNJblBsYWNlZFRyZWUg
OiAxOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzQ3LDcgKzEzNDcsNyBAQCB2b2lkIEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobTo6cmVzZXQoKQogICAgIG1faGFzUGVyY2VudFNpemVkUm93c0luZGVmaW5pdGVIZWlnaHQg
PSBmYWxzZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBH
cmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0
aCgpIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRy
YWNrcyhtX2RpcmVjdGlvbik7CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBib29sIEdyaWRUcmFja1Np
emluZ0FsZ29yaXRobTo6dHJhY2tzQXJlCiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQotI2Vu
ZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
OjpTdGF0ZU1hY2hpbmU6OlN0YXRlTWFjaGluZShHcmlkVHJhY2tTaXppbmdBbGdvcml0aG0mIGFs
Z29yaXRobSkKICAgICA6IG1fYWxnb3JpdGhtKGFsZ29yaXRobSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmgJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdB
bGdvcml0aG0uaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaGFzQW55UGVyY2VudFNpemVkUm93c0luZGVmaW5pdGVIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2hhc1BlcmNlbnRTaXplZFJvd3NJbmRlZmluaXRlSGVpZ2h0OyB9CiAKLSNpZm5k
ZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIHRyYWNrc0FyZVdpZGVyVGhh
bk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUuY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0RGlzYWxsb3dlZFNjb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAogTGF5b3V0
RGlzYWxsb3dlZFNjb3BlKiBMYXlvdXREaXNhbGxvd2VkU2NvcGU6OnNfY3VycmVudEFzc2VydGlv
biA9IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXREaXNh
bGxvd2VkU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5
b3V0RGlzYWxsb3dlZFNjb3BlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBAIGNsYXNzIExheW91dERpc2FsbG93ZWRTY29wZSB7CiBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBSZWFzb24geyBQZXJmb3JtYW5jZU9wdGltaXphdGlvbiwgUmVlbnRyYW5jeUF2
b2lkYW5jZSB9OwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAg
ICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlKFJlYXNvbikgeyB9CiAgICAgc3RhdGljIGJvb2wgaXNM
YXlvdXRBbGxvd2VkKCkgeyByZXR1cm4gdHJ1ZTsgfQotI2Vsc2UKKyNlbHNlIC8vIEFTU0VSVF9F
TkFCTEVECiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlKFJlYXNvbikKICAgICAgICAgOiBtX3By
ZXZpb3VzQXNzZXJ0aW9uKHNfY3VycmVudEFzc2VydGlvbikKICAgICB7CkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlKiBtX3ByZXZp
b3VzQXNzZXJ0aW9uOwogICAgIHN0YXRpYyBMYXlvdXREaXNhbGxvd2VkU2NvcGUqIHNfY3VycmVu
dEFzc2VydGlvbjsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxNjUsNyArMzE2NSw3IEBAIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4oY28KICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bihTdHJpbmdWaWV3KGNo
YXJhY3RlcnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNpb24pOwogfQogCi0jaWZuZGVmIE5ERUJV
RworI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIFJlbmRlckJsb2NrOjpjaGVja1Bvc2l0aW9uZWRP
YmplY3RzTmVlZExheW91dCgpCiB7CiAgICAgYXV0byogcG9zaXRpb25lZERlc2NlbmRhbnRzID0g
cG9zaXRpb25lZE9iamVjdHMoKTsKQEAgLTMxNzUsOCArMzE3NSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmNoZWNrUG9zaXRpb25lZE9iamVjdHMKICAgICBmb3IgKGF1dG8qIHJlbmRlcmVyIDogKnBv
c2l0aW9uZWREZXNjZW5kYW50cykKICAgICAgICAgQVNTRVJUKCFyZW5kZXJlci0+bmVlZHNMYXlv
dXQoKSk7CiB9Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIGJvb2wgUmVu
ZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdodCgpIGNvbnN0CiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
OSw3ICsyOTksNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVTdGFydFBvc2l0
aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIExh
eW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqID0gMCk7
CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrUG9z
aXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2Nr
Q2hpbGQoUgogICAgIExheW91dFJlY3Qgb2xkUmVjdCA9IGNoaWxkLmZyYW1lUmVjdCgpOwogICAg
IExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9IGxvZ2ljYWxUb3BGb3JDaGlsZChjaGlsZCk7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBMYXlvdXRTaXpl
IG9sZExheW91dERlbHRhID0gdmlldygpLmZyYW1lVmlldygpLmxheW91dENvbnRleHQoKS5sYXlv
dXREZWx0YSgpOwogI2VuZGlmCiAgICAgLy8gUG9zaXRpb24gdGhlIGNoaWxkIGFzIHRob3VnaCBp
dCBkaWRuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgdG9wLgpAQCAtMjM1OSw3ICsyMzU5LDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZQogICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCZmbG9hdGluZ09iamVjdC5vcmlnaW5hdGluZ0xpbmUoKS0+cmVuZGVyZXIo
KSA9PSB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0Lm9yaWdp
bmF0aW5nTGluZSgpLT5tYXJrRGlydHkoKTsKICAgICAgICAgICAgICAgICAgICAgfQotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgICAgICAgICBm
bG9hdGluZ09iamVjdC5jbGVhck9yaWdpbmF0aW5nTGluZSgpOwogI2VuZGlmCiAgICAgICAgICAg
ICAgICAgfQpAQCAtMzc0OSw3ICszNzQ5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3Vy
ZUxpbmVCb3hlcygpCiAKICAgICBhdXRvJiBjb21wbGV4TGluZUxheW91dCA9ICp0aGlzLT5jb21w
bGV4TGluZUxheW91dCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgTGF5b3V0VW5pdCBvbGRIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7CiAjZW5kaWYK
ICAgICBib29sIGRpZE5lZWRMYXlvdXQgPSBuZWVkc0xheW91dCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBACiAjaW5jbHVkZSAiVHJhbnNm
b3JtU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAy
LDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXQKIAog
ICAgICAgICBtX3N0cmV0Y2hpbmdDaGlsZHJlbiA9IGZhbHNlOwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIExheW91dFNpemUgb2xkTGF5b3V0RGVs
dGEgPSB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4dCgpLmxheW91dERlbHRhKCk7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGluZUJyZWFrLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjZW5kaWYKICNpbmNsdWRl
ICJSZW5kZXJGcmFnbWVudENvbnRhaW5lci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVy
KFQKICAgICB9CiAgICAgCiAgICAgYm9vbCBpbkZpeGVkID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBmb3VuZENvbnRhaW5lciA9ICFj
b250YWluZXIgfHwgKG1fbWFwcGluZy5zaXplKCkgJiYgbV9tYXBwaW5nWzBdLm1fcmVuZGVyZXIg
PT0gY29udGFpbmVyKTsKICNlbmRpZgogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUmVuZGVyR2Vv
bWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKFQKIAogICAgICAgICAvLyBJZiBjb250YWluZXIgaXMg
dGhlIFJlbmRlclZpZXcgKHN0ZXAgMCkgd2Ugd2FudCB0byBhcHBseSBpdHMgc2Nyb2xsIG9mZnNl
dC4KICAgICAgICAgaWYgKGkgPiAwICYmIGN1cnJlbnRTdGVwLm1fcmVuZGVyZXIgPT0gY29udGFp
bmVyKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
ICAgICBmb3VuZENvbnRhaW5lciA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVy
KFQKIEZsb2F0UG9pbnQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKGNvbnN0IEZs
b2F0UG9pbnQmIHAsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lcikgY29u
c3QKIHsKICAgICBGbG9hdFBvaW50IHJlc3VsdDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBGbG9hdFBvaW50IHJlbmRlcmVyTWFwcGVkUmVzdWx0ID0gbV9t
YXBwaW5nLmxhc3QoKS5tX3JlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUocCwgbV9tYXBDb29yZGlu
YXRlc0ZsYWdzKTsKICNlbmRpZgogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNyArNjMzLDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcgogICAgICAgICBncmlkLmluc2Vy
dCgqY2hpbGQsIHsgYXJlYS5yb3dzLCBhcmVhLmNvbHVtbnMgfSk7CiAgICAgfQogCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKGdyaWQuaGFzR3JpZEl0
ZW1zKCkpIHsKICAgICAgICAgQVNTRVJUKGdyaWQubnVtVHJhY2tzKEZvclJvd3MpID49IEdyaWRQ
b3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQoc3R5bGUoKSwgZ3JpZC5hdXRv
UmVwZWF0VHJhY2tzKEZvclJvd3MpKSk7CiAgICAgICAgIEFTU0VSVChncmlkLm51bVRyYWNrcyhG
b3JDb2x1bW5zKSA+PSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNv
dW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKSkpOwpAQCAtNjQ5
LDcgKzY0OSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZChHcmlkVHIKIAog
ICAgIGdyaWQuc2V0TmVlZHNJdGVtc1BsYWNlbWVudChmYWxzZSk7CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKGF1dG8qIGNoaWxkID0gZ3JpZC5v
cmRlckl0ZXJhdG9yKCkuZmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gZ3JpZC5vcmRlckl0ZXJhdG9y
KCkubmV4dCgpKSB7CiAgICAgICAgIGlmIChncmlkLm9yZGVySXRlcmF0b3IoKS5zaG91bGRTa2lw
Q2hpbGQoKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTIyOCwxMSArMTIyOCw3
IEBAIGJvb2wgUmVuZGVyR3JpZDo6aXNCYXNlbGluZUFsaWdubWVudEZvckMKIC8vIEZJWE1FOiBU
aGlzIGxvZ2ljIGlzIHNoYXJlZCBieSBSZW5kZXJGbGV4aWJsZUJveCwgc28gaXQgbWlnaHQgYmUg
cmVmYWN0b3JlZCBzb21laG93LgogaW50IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbW9kZSkgY29uc3QKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgQVNTRVJUKG1v
ZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KG1vZGUpOwotI2VuZGlmCisgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2RlID09IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSk7CiAgICAgYXV0byBiYXNlbGluZSA9IGZpcnN0TGluZUJhc2VsaW5l
KCk7CiAgICAgaWYgKCFiYXNlbGluZSkKICAgICAgICAgcmV0dXJuIHN5bnRoZXNpemVkQmFzZWxp
bmVGcm9tQm9yZGVyQm94KCp0aGlzLCBkaXJlY3Rpb24pICsgbWFyZ2luTG9naWNhbEhlaWdodCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIFJlbmRlcklubGluZTo6UmVuZGVySW5s
aW5lKERvY3VtZW50JiBkb2MKIAogdm9pZCBSZW5kZXJJbmxpbmU6OndpbGxCZURlc3Ryb3llZCgp
CiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gTWFr
ZSBzdXJlIHdlIGRvIG5vdCByZXRhaW4gInRoaXMiIGluIHRoZSBjb250aW51YXRpb24gb3V0bGlu
ZSB0YWJsZSBtYXAgb2Ygb3VyIGNvbnRhaW5pbmcgYmxvY2tzLgogICAgIGlmIChwYXJlbnQoKSAm
JiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmIGhhc091dGxp
bmUoKSkgewogICAgICAgICBib29sIGNvbnRhaW5pbmdCbG9ja1BhaW50c0NvbnRpbnVhdGlvbk91
dGxpbmUgPSBjb250aW51YXRpb24oKSB8fCBpc0NvbnRpbnVhdGlvbigpOwpAQCAtODAsNyArODAs
NyBAQCB2b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVzdHJveWVkKCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICAg
ICBpZiAoIXJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKSB7CiAgICAgICAgIGlmIChmaXJzdExp
bmVCb3goKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgY2xhc3MgQ2xpcFJlY3Rz
Q2FjaGUgewogcHVibGljOgogICAgIENsaXBSZWN0c0NhY2hlKCkKICAgICB7Ci0jaWZuZGVmIE5E
RUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTnVt
Q2FjaGVkQ2xpcFJlY3RzVHlwZXM7ICsraSkgewogICAgICAgICAgICAgbV9jbGlwUmVjdHNSb290
W2ldID0gMDsKICAgICAgICAgICAgIG1fc2Nyb2xsYmFyUmVsZXZhbmN5W2ldID0gSWdub3JlT3Zl
cmxheVNjcm9sbGJhclNpemU7CkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGljOgogICAgICAgICBt
X2NsaXBSZWN0c1tnZXRJbmRleChjbGlwUmVjdHNUeXBlLCByZXNwZWN0T3ZlcmZsb3cpXSA9IFdU
Rk1vdmUoY2xpcFJlY3RzKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBjb25zdCBSZW5kZXJMYXllciogbV9jbGlwUmVjdHNSb290W051bUNhY2hlZENs
aXBSZWN0c1R5cGVzXTsKICAgICBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBtX3Njcm9s
bGJhclJlbGV2YW5jeVtOdW1DYWNoZWRDbGlwUmVjdHNUeXBlc107CiAjZW5kaWYKQEAgLTMyNyw3
ICszMjcsNyBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlCiAgICAg
LCBtX3JlcXVpcmVzU2Nyb2xsUG9zaXRpb25SZWNvbmNpbGlhdGlvbihmYWxzZSkKICAgICAsIG1f
Y29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKGZhbHNlKQogICAgICwgbV91cGRhdGluZ01h
cnF1ZWVQb3NpdGlvbihmYWxzZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAsIG1fbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKHRydWUpCiAjZW5kaWYKICNp
ZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpAQCAtNDc2Myw3ICs0NzYzLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMaXN0KExheWVyTGlzdCBsYQogICAgIGlmICghaGFzU2VsZlBhaW50aW5n
TGF5ZXJEZXNjZW5kYW50KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0
YXRpb25DaGVja2VyKCp0aGlzKTsKICNlbmRpZgogCkBAIC01Mzc4LDcgKzUzNzgsNyBAQCBSZW5k
ZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSCiAKICAgICAvLyBUaGlzIHZhcmlh
YmxlIHRyYWNrcyB3aGljaCBsYXllciB0aGUgbW91c2UgZW5kcyB1cCBiZWluZyBpbnNpZGUuCiAg
ICAgUmVuZGVyTGF5ZXIqIGNhbmRpZGF0ZUxheWVyID0gbnVsbHB0cjsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9y
IG11dGF0aW9uQ2hlY2tlcigqdGhpcyk7CiAjZW5kaWYKIApAQCAtNTY1OSw3ICs1NjU5LDcgQEAg
UmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0ZUNsaXBSZQogICAgIAogICAgIGlmICgh
bV9jbGlwUmVjdHNDYWNoZSkKICAgICAgICAgbV9jbGlwUmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8
Q2xpcFJlY3RzQ2FjaGU+KCk7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNSb290W2NsaXBSZWN0c1R5cGVdID0gY2xp
cFJlY3RzQ29udGV4dC5yb290TGF5ZXI7CiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9zY3JvbGxi
YXJSZWxldmFuY3lbY2xpcFJlY3RzVHlwZV0gPSBjbGlwUmVjdHNDb250ZXh0Lm92ZXJsYXlTY3Jv
bGxiYXJTaXplUmVsZXZhbmN5OwogI2VuZGlmCkBAIC02MTcyLDcgKzYxNzIsNyBAQCBMYXlvdXRS
ZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvCiAgICAgCiAgICAgQVNTRVJUKGlzU3Rh
Y2tpbmdDb250ZXh0KCkgfHwgIXBvc2l0aXZlWk9yZGVyTGF5ZXJzKCkuc2l6ZSgpKTsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0
aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXImPigqdGhp
cykpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICBib29s
IG5vcm1hbEZsb3dMaXN0RGlydHkoKSBjb25zdCB7IHJldHVybiBtX25vcm1hbEZsb3dMaXN0RGly
dHk7IH0KICAgICBib29sIHpPcmRlckxpc3RzRGlydHkoKSBjb25zdCB7IHJldHVybiBtX3pPcmRl
ckxpc3RzRGlydHk7IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIGJvb2wgbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllckxpc3RNdXRhdGlvbkFsbG93ZWQ7IH0KICAgICB2b2lkIHNldExheWVyTGlzdE11dGF0aW9u
QWxsb3dlZChib29sIGZsYWcpIHsgbV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQgPSBmbGFnOyB9
CiAjZW5kaWYKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbnRh
aW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA6IDE7CiAgICAgYm9vbCBtX3VwZGF0aW5nTWFycXVl
ZVBvc2l0aW9uIDogMTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIGJvb2wgbV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQgOiAxOwogI2VuZGlmCiAKQEAg
LTEzNjksNyArMTM2OSw3IEBAIGlubGluZSBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnBhaW50
T3IKICAgICByZXR1cm4gbV9pc05vcm1hbEZsb3dPbmx5ID8gbV9wYXJlbnQgOiBzdGFja2luZ0Nv
bnRleHQoKTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
Y2xhc3MgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciB7CiBwdWJsaWM6CiAgICAgTGF5ZXJMaXN0
TXV0YXRpb25EZXRlY3RvcihSZW5kZXJMYXllciYgbGF5ZXIpCkBAIC0xMzg4LDcgKzEzODgsNyBA
QCBwcml2YXRlOgogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwogICAgIGJvb2wgbV9wcmV2aW91
c011dGF0aW9uQWxsb3dlZFN0YXRlOwogfTsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECiAKIHZvaWQgbWFrZU1hdHJpeFJlbmRlcmFibGUoVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBi
b29sIGhhczNEUmVuZGVyaW5nKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzc1LDcgKzIzNzUsNyBAQCBzdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxl
Tm9uCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBiZSBjYWxsZWQgd2l0aCBhIHN0YWxlIHot
b3JkZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCiAgICAgcGFyZW50LnVwZGF0ZUxheWVyTGlzdHNJ
Zk5lZWRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIocGFyZW50KTsKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5Myw3
ICs5OTMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvCiAKICAg
ICBiYWNraW5nU2hhcmluZ1N0YXRlLnVwZGF0ZUJlZm9yZURlc2NlbmRhbnRUcmF2ZXJzYWwobGF5
ZXIsIHdpbGxCZUNvbXBvc2l0ZWQpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIo
bGF5ZXIpOwogI2VuZGlmCiAKQEAgLTExNjIsNyArMTE2Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp0cmF2ZXJzZVVuY2gKIAogICAgIGJhY2tpbmdTaGFyaW5nU3RhdGUudXBkYXRl
QmVmb3JlRGVzY2VuZGFudFRyYXZlcnNhbChsYXllciwgbGF5ZXJJc0NvbXBvc2l0ZWQpOwogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0
YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCiAKQEAgLTEyNzks
NyArMTI3OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW4KIAog
ICAgIGJvb2wgcmVxdWlyZXNDaGlsZFJlYnVpbGQgPSBsYXllckJhY2tpbmcgJiYgbGF5ZXIubmVl
ZHNDb21wb3NpdGluZ0xheWVyQ29ubmVjdGlvbigpICYmICFsYXllci5oYXNDb21wb3NpdGluZ0Rl
c2NlbmRhbnQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKICNl
bmRpZgogCkBAIC0xOTMxLDcgKzE5MzEsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
YWRkRGVzY2VuZGFuCiAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcChvdmVybGFwTWFwLCBsYXllciwg
bGF5ZXJFeHRlbnQpOwogICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGNv
bnN0X2Nhc3Q8UmVuZGVyTGF5ZXImPihsYXllcikpOwogI2VuZGlmCiAKQEAgLTIyMTgsNyArMjIx
OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXAKICAgICBpZiAo
bGF5ZXIuaXNDb21wb3NpdGVkKCkgJiYgIWxheWVyLmJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBv
c2l0ZWRBbmNlc3RvcigpKQogICAgICAgICBsYXllci5zZXRCYWNraW5nTmVlZHNSZXBhaW50KCk7
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBMYXllckxp
c3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKIApAQCAt
NDEwOSw3ICs0MTA5LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVySGFzM0RD
bwogCiAgICAgY29uc3RfY2FzdDxSZW5kZXJMYXllciY+KGxheWVyKS51cGRhdGVMYXllckxpc3Rz
SWZOZWVkZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGNvbnN0X2Nhc3Q8
UmVuZGVyTGF5ZXImPihsYXllcikpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzksMTEgKzM5LDkgQEAgUmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0
YXRlKFJlbgogICAgIDogbV9jbGlwcGVkKGZhbHNlKQogICAgICwgbV9pc1BhZ2luYXRlZChpc1Bh
Z2luYXRlZCA9PSBJc1BhZ2luYXRlZDo6WWVzKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENo
YW5nZWQoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgLCBtX2xheW91dERlbHRhWFNhdHVyYXRlZChmYWxzZSkKICAgICAsIG1fbGF5b3V0RGVsdGFZ
U2F0dXJhdGVkKGZhbHNlKQotI2VuZGlmCi0jaWZuZGVmIE5ERUJVRwogICAgICwgbV9yZW5kZXJl
cigmcmVuZGVyZXIpCiAjZW5kaWYKIHsKQEAgLTY4LDExICs2Niw5IEBAIFJlbmRlckxheW91dFN0
YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZShjb24KICAgICA6IG1fY2xpcHBlZChmYWxzZSkKICAgICAs
IG1faXNQYWdpbmF0ZWQoZmFsc2UpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChm
YWxzZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1f
bGF5b3V0RGVsdGFYU2F0dXJhdGVkKGZhbHNlKQogICAgICwgbV9sYXlvdXREZWx0YVlTYXR1cmF0
ZWQoZmFsc2UpCi0jZW5kaWYKLSNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX3JlbmRlcmVyKCZyZW5k
ZXJlcikKICNlbmRpZgogewpAQCAtMTA5LDcgKzEwNSw3IEBAIHZvaWQgUmVuZGVyTGF5b3V0U3Rh
dGU6OmNvbXB1dGVPZmZzZXRzKGMKICAgICAgICAgbV9wYWludE9mZnNldCAtPSB0b0xheW91dFNp
emUocmVuZGVyZXIuc2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBtX2xheW91dERlbHRhID0gYW5j
ZXN0b3IubGF5b3V0RGVsdGEoKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2xheW91dERlbHRhWFNhdHVyYXRlZCA9IGFuY2VzdG9yLm1fbGF5b3V0RGVs
dGFYU2F0dXJhdGVkOwogICAgIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkID0gYW5jZXN0b3IubV9s
YXlvdXREZWx0YVlTYXR1cmF0ZWQ7CiAjZW5kaWYKQEAgLTI2MCwxMyArMjU2LDEzIEBAIHZvaWQg
UmVuZGVyTGF5b3V0U3RhdGU6OmVzdGFibGlzaExpbmVHcmkKIHZvaWQgUmVuZGVyTGF5b3V0U3Rh
dGU6OmFkZExheW91dERlbHRhKExheW91dFNpemUgZGVsdGEpCiB7CiAgICAgbV9sYXlvdXREZWx0
YSArPSBkZWx0YTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBtX2xheW91dERlbHRhWFNhdHVyYXRlZCB8PSBtX2xheW91dERlbHRhLndpZHRoKCkgPT0gTGF5
b3V0VW5pdDo6bWF4KCkgfHwgbV9sYXlvdXREZWx0YS53aWR0aCgpID09IExheW91dFVuaXQ6Om1p
bigpOwogICAgIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkIHw9IG1fbGF5b3V0RGVsdGEuaGVpZ2h0
KCkgPT0gTGF5b3V0VW5pdDo6bWF4KCkgfHwgbV9sYXlvdXREZWx0YS5oZWlnaHQoKSA9PSBMYXlv
dXRVbml0OjptaW4oKTsKICNlbmRpZgogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiBib29sIFJlbmRlckxheW91dFN0YXRlOjpsYXlvdXREZWx0YU1hdGNoZXMo
TGF5b3V0U2l6ZSBkZWx0YSkgY29uc3QKIHsKICAgICByZXR1cm4gKGRlbHRhLndpZHRoKCkgPT0g
bV9sYXlvdXREZWx0YS53aWR0aCgpIHx8IG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkKSAmJiAoZGVs
dGEuaGVpZ2h0KCkgPT0gbV9sYXlvdXREZWx0YS5oZWlnaHQoKSB8fCBtX2xheW91dERlbHRhWVNh
dHVyYXRlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0
U3RhdGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheW91dFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGlj
OgogICAgICAgICA6IG1fY2xpcHBlZChmYWxzZSkKICAgICAgICAgLCBtX2lzUGFnaW5hdGVkKGZh
bHNlKQogICAgICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fbGF5b3V0RGVs
dGFYU2F0dXJhdGVkKGZhbHNlKQogICAgICAgICAsIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkKGZh
bHNlKQogI2VuZGlmCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbmVlZHNC
bG9ja0RpcmVjdGlvbkxvY2F0aW9uU2V0QmVmb3JlTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lR3JpZCB8fCAobV9pc1BhZ2luYXRlZCAmJiBtX3BhZ2VMb2dpY2FsSGVpZ2h0KTsgfQogCi0j
aWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CiAjZW5kaWYKICAgICBMYXlvdXRS
ZWN0IGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQpAQCAtODQsNyArODQs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZExheW91dERlbHRhKExheW91dFNpemUpOwogICAg
IExheW91dFNpemUgbGF5b3V0RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2xheW91dERlbHRhOyB9
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBsYXlv
dXREZWx0YU1hdGNoZXMoTGF5b3V0U2l6ZSkgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTAyLDcgKzEw
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUGFnaW5hdGVkIDogMTsKICAgICAvLyBJZiBv
dXIgcGFnZSBoZWlnaHQgaGFzIGNoYW5nZWQsIHRoaXMgd2lsbCBmb3JjZSBhbGwgYmxvY2tzIHRv
IHJlbGF5b3V0LgogICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQgOiAxOwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9sYXlvdXRE
ZWx0YVhTYXR1cmF0ZWQgOiAxOwogICAgIGJvb2wgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQgOiAx
OwogI2VuZGlmCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRTaXplIG1f
cGFnZU9mZnNldDsKICAgICBMYXlvdXRTaXplIG1fbGluZUdyaWRPZmZzZXQ7CiAgICAgTGF5b3V0
U2l6ZSBtX2xpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbjsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBSZW5kZXJFbGVtZW50KiBtX3JlbmRlcmVyIHsgbnVsbHB0ciB9Owog
I2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCBSZW5kZXJPYmpl
Y3Q6OlNldExheW91dE5lZWRlZEZvcmJpZGRlblNjCiAKIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVy
T2JqZWN0IHsKICAgICB2aXJ0dWFsIH5TYW1lU2l6ZUFzUmVuZGVyT2JqZWN0KCkgPSBkZWZhdWx0
OyAvLyBBbGxvY2F0ZSB2dGFibGUgcG9pbnRlci4KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
V1RGX0FTU0VSVF9FTkFCTEVECiAgICAgYm9vbCB3ZWFrUHRyRmFjdG9yV2FzQ29uc3RydWN0ZWRP
bk1haW5UaHJlYWQ7CiAjZW5kaWYKICAgICB2b2lkKiBwb2ludGVyc1s1XTsKLSNpZm5kZWYgTkRF
QlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBtX2RlYnVnQml0ZmllbGRzIDog
MjsKICNlbmRpZgogICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzOwpAQCAtMTI3LDcgKzEyNyw3IEBA
IFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUmIG5vZGUpCiAgICAgLCBtX3BhcmVudChu
dWxscHRyKQogICAgICwgbV9wcmV2aW91cyhudWxscHRyKQogICAgICwgbV9uZXh0KG51bGxwdHIp
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2hhc0FYT2JqZWN0
KGZhbHNlKQogICAgICwgbV9zZXROZWVkc0xheW91dEZvcmJpZGRlbihmYWxzZSkKICNlbmRpZgpA
QCAtMTQzLDggKzE0Myw4IEBAIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUmIG5vZGUp
CiBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QoKQogewogICAgIHZpZXcoKS5kaWREZXN0cm95
UmVuZGVyZXIoKTsKLSNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFtX2hhc0FYT2JqZWN0KTsK
KyNpZm5kZWYgTkRFQlVHCiAgICAgcmVuZGVyT2JqZWN0Q291bnRlci5kZWNyZW1lbnQoKTsKICNl
bmRpZgogICAgIEFTU0VSVCghaGFzUmFyZURhdGEoKSk7CkBAIC00OTQsNyArNDk0LDcgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmNsZWFyTmVlZHNMYXlvdXQoKQogICAgIHNldE5lZWRzUG9zaXRpb25l
ZE1vdmVtZW50TGF5b3V0Qml0KGZhbHNlKTsKICAgICBpZiAoaXM8UmVuZGVyRWxlbWVudD4oKnRo
aXMpKQogICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50PigqdGhpcykuc2V0QW5jZXN0b3JM
aW5lQm94RGlydHkoZmFsc2UpOwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKICNlbmRpZgogfQpA
QCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nr
c0YKICAgICAgICAgc2NoZWR1bGVSZWxheW91dEZvclN1YnRyZWUoKmFuY2VzdG9yKTsKIH0KIAot
I2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogdm9pZCBSZW5kZXJPYmplY3Q6OmNo
ZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKQogewogICAgIEFTU0VSVCghbmVl
ZHNMYXlvdXQoKSk7CkBAIC01NzUsNyArNTc1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNoZWNr
QmxvY2tQb3NpdGlvbmVkTwogICAgIGlmIChpczxSZW5kZXJCbG9jaz4oKnRoaXMpKQogICAgICAg
ICBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnRoaXMpLmNoZWNrUG9zaXRpb25lZE9iamVjdHNOZWVk
TGF5b3V0KCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB2b2lkIFJl
bmRlck9iamVjdDo6c2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGJvb2wgc2hvdWxkQmVE
aXJ0eSwgTWFya2luZ0JlaGF2aW9yIG1hcmtQYXJlbnRzKQogewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyAr
MTY1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXNlRGFya0FwcGVhcmFu
Y2UoKSBjb25zdDsKICAgICBPcHRpb25TZXQ8U3R5bGVDb2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xv
ck9wdGlvbnMoKSBjb25zdDsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIHZvaWQgc2V0SGFzQVhPYmplY3QoYm9vbCBmbGFnKSB7IG1faGFzQVhPYmplY3QgPSBmbGFn
OyB9CiAgICAgYm9vbCBoYXNBWE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQVhPYmplY3Q7
IH0KIApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVuZGVyT2JqZWN0KiBt
X3JlbmRlck9iamVjdDsKICAgICAgICAgYm9vbCBtX3ByZWV4aXN0aW5nRm9yYmlkZGVuOwogICAg
IH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgLy8gT2J0YWlucyB0
aGUgbmVhcmVzdCBlbmNsb3NpbmcgYmxvY2sgKGluY2x1ZGluZyB0aGlzIGJsb2NrKSB0aGF0IGNv
bnRyaWJ1dGVzIGEgZmlyc3QtbGluZSBzdHlsZSB0byBvdXIgaW5saW5lCiAgICAgLy8gY2hpbGRy
ZW4uCkBAIC04MTMsNyArODEzLDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSNp
Zm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzU2V0TmVlZHNMYXlv
dXRGb3JiaWRkZW4oKSBjb25zdCB7IHJldHVybiBtX3NldE5lZWRzTGF5b3V0Rm9yYmlkZGVuOyB9
CiAgICAgdm9pZCBzZXROZWVkc0xheW91dElzRm9yYmlkZGVuKGJvb2wgZmxhZykgeyBtX3NldE5l
ZWRzTGF5b3V0Rm9yYmlkZGVuID0gZmxhZzsgfQogI2VuZGlmCkBAIC04MzMsNyArODMzLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVs
ZHMuaGFzUmFyZURhdGEoKTsgfQogICAgIHZvaWQgc2V0SGFzUmFyZURhdGEoYm9vbCBiKSB7IG1f
Yml0ZmllbGRzLnNldEhhc1JhcmVEYXRhKGIpOyB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlv
dXQoKTsKICNlbmRpZgogCkBAIC04NDMsNyArODQzLDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJP
YmplY3QqIG1fcHJldmlvdXM7CiAgICAgUmVuZGVyT2JqZWN0KiBtX25leHQ7CiAKLSNpZm5kZWYg
TkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1faGFzQVhPYmplY3QgICAgICAg
ICAgICAgOiAxOwogICAgIGJvb2wgbV9zZXROZWVkc0xheW91dEZvcmJpZGRlbiA6IDE7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbmRlclF1b3RlOjpzdHlsZURp
ZENoYW5nZShTdHlsZURpCiAKIGNvbnN0IHVuc2lnbmVkIG1heERpc3RpbmN0UXVvdGVDaGFyYWN0
ZXJzID0gMTY7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAog
c3RhdGljIHZvaWQgY2hlY2tOdW1iZXJPZkRpc3RpbmN0UXVvdGVDaGFyYWN0ZXJzKFVDaGFyIGNo
YXJhY3RlcikKIHsKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tOdW1iZXJPZkRp
c3RpbmN0UXVvdGVDaAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi0jZW5kaWYKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBzdHJ1Y3QgUXVvdGVzRm9yTGFuZ3VhZ2UgewogICAg
IGNvbnN0IGNoYXIqIGxhbmd1YWdlOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHN0YXRpYyBjb25zdCBR
dW90ZXNGb3JMYW5ndWFnZSogcXVvdGVzRm8KIAogICAgIGNvbnN0IHVuc2lnbmVkIG1heExhbmd1
YWdlTGVuZ3RoID0gODsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIC8vIE9uZSB0aW1lIGNoZWNrIHRoYXQgdGhlIHRhYmxlIG1lZXRzIHRoZSBjb25zdHJh
aW50cyB0aGF0IHRoZSBjb2RlIGJlbG93IHJlbGllcyBvbi4KIAogICAgIHN0YXRpYyBib29sIGRp
ZE9uZVRpbWVDaGVjayA9IGZhbHNlOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHN0YXRpYyBjb25zdCBR
dW90ZXNGb3JMYW5ndWFnZSogcXVvdGVzRm8KICAgICAgICAgICAgIGNoZWNrTnVtYmVyT2ZEaXN0
aW5jdFF1b3RlQ2hhcmFjdGVycyhxdW90ZVRhYmxlW2ldLmNsb3NlMik7CiAgICAgICAgIH0KICAg
ICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gbGFuZ3VhZ2UubGVuZ3RoKCk7CiAgICAgaWYgKCFsZW5ndGggfHwgbGVuZ3RoID4gbWF4
TGFuZ3VhZ2VMZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0NlbGxBZnRlcihjb25z
dCBSZW5kZXJUYWJsZUNlbGwmKTsKIAogICAgIHVzaW5nIFJlbmRlckJsb2NrRmxvdzo6bm9kZUF0
UG9pbnQ7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc0Zp
cnN0T3JMYXN0Q2VsbEluUm93KCkgY29uc3QgeyByZXR1cm4gIXRhYmxlKCktPmNlbGxBZnRlcih0
aGlzKSB8fCAhdGFibGUoKS0+Y2VsbEJlZm9yZSh0aGlzKTsgfQogI2VuZGlmCiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0Nyw3ICs2NDcsNyBAQCB2b2lkIFJlbmRl
clRhYmxlU2VjdGlvbjo6Y29tcHV0ZU92ZXJmbG93CiAgICAgdW5zaWduZWQgdG90YWxDZWxsc0Nv
dW50ID0gbkVmZkNvbHMgKiB0b3RhbFJvd3M7CiAgICAgdW5zaWduZWQgbWF4QWxsb3dlZE92ZXJm
bG93aW5nQ2VsbHNDb3VudCA9IHRvdGFsQ2VsbHNDb3VudCA8IGdNaW5UYWJsZVNpemVUb1VzZUZh
c3RQYWludFBhdGhXaXRoT3ZlcmZsb3dpbmdDZWxsID8gMCA6IGdNYXhBbGxvd2VkT3ZlcmZsb3dp
bmdDZWxsUmF0aW9Gb3JGYXN0UGFpbnRQYXRoICogdG90YWxDZWxsc0NvdW50OwogCi0jaWZuZGVm
IE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBoYXNPdmVyZmxvd2luZ0NlbGwg
PSBmYWxzZTsKICNlbmRpZgogICAgIC8vIE5vdyB0aGF0IG91ciBoZWlnaHQgaGFzIGJlZW4gZGV0
ZXJtaW5lZCwgYWRkIGluIG92ZXJmbG93IGZyb20gY2VsbHMuCkBAIC02NjAsNyArNjYwLDcgQEAg
dm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmNvbXB1dGVPdmVyZmxvdwogICAgICAgICAgICAgaWYg
KHIgPCB0b3RhbFJvd3MgLSAxICYmIGNlbGwgPT0gcHJpbWFyeUNlbGxBdChyICsgMSwgYykpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGls
ZChjZWxsKTsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAg
IGhhc092ZXJmbG93aW5nQ2VsbCB8PSBjZWxsLT5oYXNWaXN1YWxPdmVyZmxvdygpOwogI2VuZGlm
CiAgICAgICAgICAgICBpZiAoY2VsbC0+aGFzVmlzdWFsT3ZlcmZsb3coKSAmJiAhbV9mb3JjZVNs
b3dQYWludFBhdGhXaXRoT3ZlcmZsb3dpbmdDZWxsKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2Miw3ICs1NjIsNyBAQCBib29sIFJlbmRlclRleHRMaW5lQm94ZXM6
OmRpcnR5UmFuZ2UoUmVuCiAKIGlubGluZSB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmNoZWNr
Q29uc2lzdGVuY3koKSBjb25zdAogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogI2lmZGVmIENIRUNLX0NPTlNJU1RFTkNZCiAgICAgY29uc3QgSW5saW5lVGV4dEJv
eCogcHJldiA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvKiBjaGlsZCA9IG1fZmlyc3Q7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0VGV4dEJveCgpKSB7CkBAIC01NzIsMTAgKzU3MiwxMCBAQCBp
bmxpbmUgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpjaGVja0NvCiAgICAgfQogICAgIEFTU0VS
VChwcmV2ID09IG1fbGFzdCk7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIFJlbmRl
clRleHRMaW5lQm94ZXM6On5SZW5kZXJUZXh0TGluZUJveGVzKCkKIHsKICAgICBBU1NFUlQoIW1f
Zmlyc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExp
bmVCb3hlcy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dExpbmVCb3hlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3Qg
UmVuZGVyVGV4dCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0
aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7CiAgICAgVmVjdG9yPEludFJlY3Q+IGFi
c29sdXRlUmVjdHNGb3JSYW5nZShjb25zdCBSZW5kZXJUZXh0JiwgdW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIH5SZW5k
ZXJUZXh0TGluZUJveGVzKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MjcsNyArNjI3LDcgQEAgaW5saW5lIHZvaWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVy
VGV4dCYgdAogCiAgICAgQVNTRVJUKHBvcyAtIGxhc3RTcGFjZSAtIHByZWZpeExlbmd0aCA+PSBt
aW5pbXVtU3VmZml4TGVuZ3RoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+IGZhbGxiYWNrRm9udHM7CiAgICAgZmxv
YXQgcHJlZml4V2lkdGggPSBoeXBoZW5XaWR0aCArIHRleHRXaWR0aCh0ZXh0LCBsYXN0U3BhY2Us
IHByZWZpeExlbmd0aCwgZm9udCwgeFBvcywgaXNGaXhlZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3Bh
Y2UsIGZhbGxiYWNrRm9udHMpICsgbGFzdFNwYWNlV29yZFNwYWNpbmc7CiAgICAgQVNTRVJUKHhQ
b3MgKyBwcmVmaXhXaWR0aCA8PSBhdmFpbGFibGVXaWR0aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
OCw3ICsxNDgsNyBAQCBwcml2YXRlOgogICAgIEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lLCBHcmlkU3BhblR5cGUgdHlwZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKICAgICB7
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIEFTU0VS
VChzdGFydExpbmUgPCBlbmRMaW5lKTsKICAgICAgICAgaWYgKHR5cGUgPT0gVHJhbnNsYXRlZERl
ZmluaXRlKSB7CiAgICAgICAgICAgICBBU1NFUlQoc3RhcnRMaW5lID49IDApOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVu
ZGVyU3R5bGUgewogICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7CiAgICAgICAgIHVuc2ln
bmVkIG1fYml0ZmllbGRzWzJdOwogICAgIH0gbV9ub25Jbmhlcml0ZWRGbGFnczsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorI2lmIEFTU0VSVF9F
TkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgZGVsZXRpb25D
aGVjazsKICNlbmRpZgogfTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6
OlJlbmRlclN0eWxlKFJlbmRlclN0CiAKIFJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQogewot
I2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisjaWYg
QVNTRVJUX0VOQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgbV9k
ZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVB
bm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwg
RGlzcGxheVR5cGUpOwogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVTdHlsZUluaGVyaXRp
bmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBzZXVkb1N0eWxlKTsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisjaWYgQVNT
RVJUX0VOQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgYm9vbCBkZWxl
dGlvbkhhc0JlZ3VuKCkgY29uc3QgeyByZXR1cm4gbV9kZWxldGlvbkhhc0JlZ3VuOyB9CiAjZW5k
aWYKIApAQCAtMTkwNSw3ICsxOTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIERhdGFSZWY8U1ZHUmVu
ZGVyU3R5bGU+IG1fc3ZnU3R5bGU7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShT
RUNVUklUWV9BU1NFUlRJT05TKQorI2lmIEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklU
WV9BU1NFUlRJT05TKQogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNl
bmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlQnVpbGRlclJ1YnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNSdWJ5QWZ0ZXJCbG9jayhjb25zCiAgICAgICAgICYmIGRvd25jYXN0PFJlbmRlckJsb2NrPigq
b2JqZWN0KS5maXJzdENoaWxkKCktPnN0eWxlKCkuc3R5bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkFm
dGVyOwogfQogCi0jaWZuZGVmIEFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5Q2hpbGRGb3JOb3JtYWxSZW1vdmFsKGNvbnN0IFJlbmRl
ck9iamVjdCYgb2JqZWN0KQogewogICAgIHJldHVybiBvYmplY3QuaXNSdWJ5UnVuKCkKQEAgLTg0
LDcgKzg0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzUnVieUNoaWxkRm9yTm9ybWFsUgogICAg
IHx8IG9iamVjdC5pc1JlbmRlck11bHRpQ29sdW1uU2V0KCkKICAgICB8fCBpc0Fub255bW91c1J1
YnlJbmxpbmVCbG9jaygmb2JqZWN0KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyQmxvY2sqIHJ1YnlCZWZvcmVCbG9jayhjb25zdCBS
ZW5kZXJFbGVtZW50KiBydWJ5KQogewpAQCAtMzg2LDkgKzM4Niw3IEBAIFJlbmRlclB0cjxSZW5k
ZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGUKICAgICAvLyBJZiB0aGUgY2hpbGQncyBwYXJlbnQg
aXMgKnRoaXMgKG11c3QgYmUgYSBydWJ5IHJ1biBvciBnZW5lcmF0ZWQgY29udGVudCBvciBhbm9u
eW1vdXMgYmxvY2spLAogICAgIC8vIGp1c3QgdXNlIHRoZSBub3JtYWwgcmVtb3ZlIG1ldGhvZC4K
ICAgICBpZiAoY2hpbGQucGFyZW50KCkgPT0gJnBhcmVudCkgewotI2lmbmRlZiBBU1NFUlRfRElT
QUJMRUQKICAgICAgICAgQVNTRVJUKGlzUnVieUNoaWxkRm9yTm9ybWFsUmVtb3ZhbChjaGlsZCkp
OwotI2VuZGlmCiAgICAgICAgIHJldHVybiBtX2J1aWxkZXIuZGV0YWNoRnJvbVJlbmRlckVsZW1l
bnQocGFyZW50LCBjaGlsZCk7CiAgICAgfQogICAgIC8vIElmIHRoZSBjaGlsZCdzIHBhcmVudCBp
cyBhbiBhbm95bW91cyBibG9jayAobXVzdCBiZSBnZW5lcmF0ZWQgOmJlZm9yZS86YWZ0ZXIgY29u
dGVudCkKQEAgLTQxMCw5ICs0MDgsNyBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJU
cmVlQnVpbGRlCiAgICAgLy8gSWYgdGhlIGNoaWxkJ3MgcGFyZW50IGlzICp0aGlzIChtdXN0IGJl
IGEgcnVieSBydW4gb3IgZ2VuZXJhdGVkIGNvbnRlbnQgb3IgYW5vbnltb3VzIGJsb2NrKSwKICAg
ICAvLyBqdXN0IHVzZSB0aGUgbm9ybWFsIHJlbW92ZSBtZXRob2QuCiAgICAgaWYgKGNoaWxkLnBh
cmVudCgpID09ICZwYXJlbnQpIHsKLSNpZm5kZWYgQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIEFT
U0VSVChpc1J1YnlDaGlsZEZvck5vcm1hbFJlbW92YWwoY2hpbGQpKTsKLSNlbmRpZgogICAgICAg
ICByZXR1cm4gbV9idWlsZGVyLmJsb2NrQnVpbGRlcigpLmRldGFjaChwYXJlbnQsIGNoaWxkKTsK
ICAgICB9CiAgICAgLy8gSWYgdGhlIGNoaWxkJ3MgcGFyZW50IGlzIGFuIGFub3ltb3VzIGJsb2Nr
IChtdXN0IGJlIGdlbmVyYXRlZCA6YmVmb3JlLzphZnRlciBjb250ZW50KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3Np
dGlvbi5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHZvaWQgUmVuZGVyVHJlZVBvc2l0aW9uOjpjb21wdXRlTmV4dFNpYmwKIHsKICAgICBB
U1NFUlQoIW5vZGUucmVuZGVyZXIoKSk7CiAgICAgaWYgKG1faGFzVmFsaWROZXh0U2libGluZykg
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBjb25z
dCB1bnNpZ25lZCBvTlNxdWFyZWRBdm9pZGFuY2VMaW1pdCA9IDIwOwogICAgICAgICBib29sIHNr
aXBBc3NlcnQgPSBtX3BhcmVudC5pc1JlbmRlclZpZXcoKSB8fCArK21fYXNzZXJ0aW9uTGltaXRD
b3VudGVyID4gb05TcXVhcmVkQXZvaWRhbmNlTGltaXQ7CiAgICAgICAgIEFTU0VSVChza2lwQXNz
ZXJ0IHx8IG5leHRTaWJsaW5nUmVuZGVyZXIobm9kZSkgPT0gbV9uZXh0U2libGluZyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVBvc2l0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVQb3NpdGlvbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZVBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJFbGVtZW50JiBtX3BhcmVudDsKICAgICBXZWFr
UHRyPFJlbmRlck9iamVjdD4gbV9uZXh0U2libGluZyB7IG51bGxwdHIgfTsKICAgICBib29sIG1f
aGFzVmFsaWROZXh0U2libGluZyB7IGZhbHNlIH07Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgbV9hc3NlcnRpb25MaW1pdENvdW50ZXIgeyAw
IH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxMSArMTAy
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICA6IG1fY29udmVydGVyKG90aGVyLm1fY29udmVy
dGVyKQogICAgICAgICAgICAgLCBtX2Jhc2VPZk9mZnNldChvdGhlci5tX2Jhc2VPZk9mZnNldCkK
ICAgICAgICAgICAgICwgbV9sb2NhdGlvbihvdGhlci5tX2xvY2F0aW9uKQotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgLCBtX2FjdGl2ZShvdGhl
ci5tX2FjdGl2ZSkKICNlbmRpZgogICAgICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICBvdGhlci5tX2FjdGl2ZSA9IGZhbHNlOwogI2Vu
ZGlmCiAgICAgICAgIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
c2l6ZV90IGRlbHRhID0gbV9jb252ZXJ0ZXIubV9yZXN1bHQuc2l6ZSgpIC0gbV9iYXNlT2ZPZmZz
ZXQ7CiAgICAgICAgICAgICBBU1NFUlQoZGVsdGEgPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQx
Nl90Pjo6bWF4KCkpOwogICAgICAgICAgICAgbV9jb252ZXJ0ZXIub3ZlcndyaXRlMTYobV9sb2Nh
dGlvbiwgZGVsdGEpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICAgICAgICAgbV9hY3RpdmUgPSBmYWxzZTsKICNlbmRpZgogICAgICAgICB9CkBAIC0xMzEs
NyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU1ZHVG9PVEZGb250Q29udmVydGVyJiBtX2Nv
bnZlcnRlcjsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fYmFzZU9mT2Zmc2V0OwogICAgICAgICBj
b25zdCBzaXplX3QgbV9sb2NhdGlvbjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgYm9vbCBtX2FjdGl2ZSA9IHsgdHJ1ZSB9OwogI2VuZGlmCiAgICAg
fTsKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5k
Q0ZGVGFiCiAgICAgYXBwZW5kMzIoMSArIHNpemVPZlRvcEluZGV4KTsgLy8gMS1pbmRleCBvZmZz
ZXQganVzdCBwYXN0IGVuZCBvZiBESUNUIGRhdGEKIAogICAgIC8vIERJQ1QgaW5mb3JtYXRpb24K
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCB0
b3BEaWN0U3RhcnQgPSBtX3Jlc3VsdC5zaXplKCk7CiAjZW5kaWYKICAgICBtX3Jlc3VsdC5hcHBl
bmQob3BlcmFuZDMyQml0KTsKQEAgLTcxNywxMyArNzE3LDEzIEBAIHZvaWQgU1ZHVG9PVEZGb250
Q29udmVydGVyOjphcHBlbmRDRkZUYWIKIAogR2x5cGggU1ZHVG9PVEZGb250Q29udmVydGVyOjpm
aXJzdEdseXBoKGNvbnN0IFZlY3RvcjxHbHlwaCwgMT4mIHYsIFVDaGFyMzIgY29kZXBvaW50KSBj
b25zdAogewotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgIFVO
VVNFRF9QQVJBTShjb2RlcG9pbnQpOwogI2VuZGlmCiAgICAgQVNTRVJUKCF2LmlzRW1wdHkoKSk7
CiAgICAgaWYgKHYuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRvIGNvZGVQb2ludHMgPSBTdHJpbmdW
aWV3KG1fZ2x5cGhzW3ZbMF1dLmNvZGVwb2ludHMpLmNvZGVQb2ludHMoKTsKICAgICBhdXRvIGNv
ZGVQb2ludHNJdGVyYXRvciA9IGNvZGVQb2ludHMuYmVnaW4oKTsKICAgICBBU1NFUlQoY29kZVBv
aW50c0l0ZXJhdG9yICE9IGNvZGVQb2ludHMuZW5kKCkpOwpAQCAtMTEwOCw3ICsxMTA4LDcgQEAg
dm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZEtFUk5UYQogICAgIGFwcGVuZDE2KDAp
OyAvLyBWZXJzaW9uCiAgICAgYXBwZW5kMTYoMik7IC8vIE51bWJlciBvZiBzdWJ0YWJsZXMKIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGF1dG8gc3VidGFi
bGVzT2Zmc2V0ID0gbV9yZXN1bHQuc2l6ZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJhbnNmb3JtRGlz
dGFuCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFNWR1RyYW5zZm9ybVZhbHVlOjpT
VkdfVFJBTlNGT1JNX01BVFJJWDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jaWYg
QVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJPVUdI
OwogI2VuZGlmCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktO
T1dOOgpAQCAtOTIsNyArOTIsNyBAQCBTVkdUcmFuc2Zvcm1EaXN0YW5jZSBTVkdUcmFuc2Zvcm1E
aXN0YW5jCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFNWR1RyYW5zZm9ybVZhbHVl
OjpTVkdfVFJBTlNGT1JNX01BVFJJWDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
aWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJP
VUdIOwogI2VuZGlmCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9V
TktOT1dOOgpAQCAtMTI1LDcgKzEyNSw3IEBAIFNWR1RyYW5zZm9ybVZhbHVlIFNWR1RyYW5zZm9y
bURpc3RhbmNlOjoKICAgICBzd2l0Y2ggKGZpcnN0LnR5cGUoKSkgewogICAgIGNhc2UgU1ZHVHJh
bnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fTUFUUklYOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBjYXNlIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdf
VFJBTlNGT1JNX1VOS05PV046CkBAIC0xNjcsNyArMTY3LDcgQEAgU1ZHVHJhbnNmb3JtVmFsdWUg
U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OgogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBT
VkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVg6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAog
ICAgICAgICBGQUxMVEhST1VHSDsKICNlbmRpZgogICAgIGNhc2UgU1ZHVHJhbnNmb3JtVmFsdWU6
OlNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKQEAgLTIxMSw3ICsyMTEsNyBAQCBmbG9hdCBTVkdUcmFu
c2Zvcm1EaXN0YW5jZTo6ZGlzdGFuY2UoKSBjCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBj
YXNlIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFC
TEVECiAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNyArMjU0LDcg
QEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIGlmICghU1VD
Q0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRvIG5hdGl2ZUltYWdlU2l6ZSA9IG5hdGl2
ZUltYWdlLT5HZXRQaXhlbFNpemUoKTsKICAgICBBU1NFUlQobmF0aXZlSW1hZ2VTaXplLmhlaWdo
dCA9IHJlY3QoKS5zaXplKCkuaGVpZ2h0KCkpOwogICAgIEFTU0VSVChuYXRpdmVJbWFnZVNpemUu
d2lkdGggPSByZWN0KCkuc2l6ZSgpLndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDEsNyArMjQxLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3NXcmFw
cGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9pbnRlcm5hbFNldHRpbmdzKEludGVybmFsU2V0
dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9CiAgICAgdmlydHVhbCB+SW50ZXJuYWxTZXR0aW5nc1dy
YXBwZXIoKSB7IG1faW50ZXJuYWxTZXR0aW5ncy0+aG9zdERlc3Ryb3llZCgpOyB9Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc1JlZkNvdW50ZWRX
cmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAgICAgSW50
ZXJuYWxTZXR0aW5ncyogaW50ZXJuYWxTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJu
YWxTZXR0aW5ncy5nZXQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRPcldvcmtlcklkZW50aWZp
ZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKICAgICBSZWZQdHI8V29ya2VyU2NyaXB0TG9hZGVyPiBt
X3NjcmlwdExvYWRlcjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIFJlZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9
OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAKICAgICB+UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQog
ICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOwogICAgICAgICBB
U1NFUlQocGFpbnREZWZpbml0aW9uTWFwKCkuaXNFbXB0eSgpKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoU3RlcC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFN0ZXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBTdGVwOjpldmFsdWF0ZShOb2RlJiBjb250ZXh0LCBOb2RlUwogICAgIH0KIH0KIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIGlubGluZSBOb2RlOjpO
b2RlVHlwZSBwcmltYXJ5Tm9kZVR5cGUoU3RlcDo6QXhpcyBheGlzKQogewogICAgIHN3aXRjaCAo
YXhpcykgewpAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRpYyBpbmxpbmUgTm9kZTo6Tm9kZVR5cGUg
cHJpbWFyeU5vZGUKICAgICAgICAgICAgIHJldHVybiBOb2RlOjpFTEVNRU5UX05PREU7CiAgICAg
fQogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogLy8gRXZhbHVhdGUgTm9k
ZVRlc3Qgd2l0aG91dCBjb25zaWRlcmluZyBtZXJnZWQgcHJlZGljYXRlcy4KIGlubGluZSBib29s
IG5vZGVNYXRjaGVzQmFzaWNUZXN0KE5vZGUmIG5vZGUsIFN0ZXA6OkF4aXMgYXhpcywgY29uc3Qg
U3RlcDo6Tm9kZVRlc3QmIG5vZGVUZXN0KQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMjAtMDEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IEVuYWJsZSBydW5uaW5nIGEgcmVsZWFzZSBidWlsZCB3aXRoIGRlYnVnIEFTU0VSVHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmludmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c2V0Q2Fw
YWNpdHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW06CisgICAgICAgICh0b05TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChJUEM6OkNv
bm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2Fn
ZVJlY2VpdmVyLmg6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlcjo6d2lsbEJlQWRkZWRU
b01lc3NhZ2VSZWNlaXZlck1hcCk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNlaXZlcjo6d2ls
bEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXApOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06CisgICAgICAgIChJUEM6OnJlYWRGcm9tTWFjaFBv
cnQpOgorICAgICAgICAqIFBsYXRmb3JtL21hYy9NYWNoVXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KHNldE1hY2hFeGNlcHRpb25Qb3J0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSUNsaWVudC5o
OgorICAgICAgICAoQVBJOjpDbGllbnQ6OkNsaWVudCk6CisgICAgICAgICogU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1
bWVudENvZGVyc0NvY29hLmg6CisgICAgICAgICogU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJs
ZVJlYWRPbmx5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNvcnBvcmF0ZVVwZGF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
TGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0
YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkU3RhdGU6OlRyYW5zYWN0aW9uOjpUb2tl
bjo6VG9rZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpub3RpZnlBbmREZXN0cm95U3RyZWFtKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJ1bk1vZGFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGVja0RvY3VtZW50c0NhcHR1cmVTdGF0ZUNvbnNp
c3RlbmN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBkYXRlUHJvY2Vzc05hbWUpOgorCiAyMDIw
LTAxLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IER1bXBSZW5kZXJUcmVlIGRvZXNuJ3QgYWx3YXlzIGNhbGwgdXBkYXRlUmVuZGVyaW5nKCkgd2hl
biBhIHRlc3QgY29tcGxldGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsCiAg
ICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAjZW5kaWYKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzSW52YWxpZGF0ZWQgPSB0cnVlOwog
I2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBQcmVmZXRjaENhY2hlIG1fcHJlZmV0Y2hDYWNoZTsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9pc0ludmFsaWRh
dGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFJlZlB0cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBt
X2NhY2hlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05ODcsNyArOTg3LDcgQEAgdm9pZCBTdG9yYWdlOjpzZXRDYXBh
Y2l0eShzaXplX3QgY2FwYWNpdAogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBjb25zdCBzaXpl
X3QgYXNzdW1lZEF2ZXJhZ2VSZWNvcmRTaXplID0gNTAgPDwgMTA7CiAgICAgc2l6ZV90IG1heGlt
dW1SZWNvcmRDb3VudCA9IGNhcGFjaXR5IC8gYXNzdW1lZEF2ZXJhZ2VSZWNvcmRTaXplOwogICAg
IC8vIH4xMCBiaXRzIHBlciBlbGVtZW50IGFyZSByZXF1aXJlZCBmb3IgPDElIGZhbHNlIHBvc2l0
aXZlIHJhdGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIE5TVVJMU2Vzc2lvblJlc3Bv
bnNlRGlzcG9zaXRpb24gdAogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBjYXNlIFdl
YkNvcmU6OlBvbGljeUFjdGlvbjo6U3RvcEFsbExvYWRzOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
SWdub3JlOgpAQCAtOTI2LDcgKzkyNiw3IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNz
aW9uICopc2Vzc2kKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBib29sIHNlc3Npb25zQ3JlYXRlZCA9IGZhbHNl
OwogI2VuZGlmCiAKQEAgLTEwMjYsNyArMTAyNiw3IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXNzaW9uc0NyZWF0ZWQgPSB0cnVlOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDcgKzUyMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKIAogICAgIC8vIERvbid0IGV2ZW4gc3RhcnQgd2FpdGlu
ZyBpZiB3ZSBoYXZlIEludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyBhbmQgdGhl
cmUncyBhIHN5bmMgbWVzc2FnZSBhbHJlYWR5IGluIHRoZSBxdWV1ZS4KICAgICBpZiAoaGFzSW5j
b21pbmdTeW5jaHJvbm91c01lc3NhZ2UgJiYgd2FpdEZvck9wdGlvbnMuY29udGFpbnMoV2FpdEZv
ck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgewotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TG9jaz4gbG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0ZXgpOwogICAgICAgICAvLyBXZSBkb24n
dCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRzIHdhaXRpbmcgZm9yIG1lc3NhZ2VzLgog
ICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3NhZ2UpOwpJbmRleDogU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxCZUFkZGVkVG9N
ZXNzYWdlUmVjZWl2ZXJNYXAoKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXBDb3VudCsrOwogI2VuZGlm
CiAgICAgfQpAQCAtNjMsMTIgKzYzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQmVSZW1v
dmVkRnJvbU1lc3NhZ2VSZWNlaXZlck1hcCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9tZXNz
YWdlUmVjZWl2ZXJNYXBDb3VudCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQtLTsKICNlbmRpZgogICAg
IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVuc2ln
bmVkIG1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQgeyAwIH07CiAjZW5kaWYKIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29h
Lm1tCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2Nv
YS9Db25uZWN0aW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3OSw3ICs0NzksNyBAQCBz
dGF0aWMgbWFjaF9tc2dfaGVhZGVyX3QqIHJlYWRGcm9tTWFjaFBvCiAgICAgfQogCiAgICAgaWYg
KGtyICE9IE1BQ0hfTVNHX1NVQ0NFU1MpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgV2ViS2l0OjpzZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3Bl
Y2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJVbmhhbmRsZWQgZXJyb3IgY29kZSAleCBmcm9tIG1hY2hfbXNnLCByZWNlaXZl
IHBvcnQgaXMgJXgiLCBrciwgbWFjaFBvcnRdKTsKICNlbmRpZgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL01hY2hVdGlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vbWFjL01hY2hVdGls
aXRpZXMuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21h
Yy9NYWNoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IHNldE1hY2hFeGNlcHRpb25Qb3J0KG1hY2hfcG9ydF90IGV4CiAgICAgQVNTRVJUKE1BQ0hfUE9S
VF9WQUxJRChleGNlcHRpb25Qb3J0KSk7CiAKICAgICAvLyBBc3NlcnQgdGhhdCB3ZSBkb250IHRy
eSB0byBjYWxsIHNldE1hY2hFeGNlcHRpb25Qb3J0IG1vcmUgdGhhbiBvbmNlIHBlciBwcm9jZXNz
LgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHN0YXRpYyBt
YWNoX3BvcnRfdCB0YXNrRXhjZXB0aW9uUG9ydCA9IE1BQ0hfUE9SVF9OVUxMOwogICAgIEFTU0VS
VCh0YXNrRXhjZXB0aW9uUG9ydCA9PSBNQUNIX1BPUlRfTlVMTCk7CiAgICAgdGFza0V4Y2VwdGlv
blBvcnQgPSBleGNlcHRpb25Qb3J0OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVk
U3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogc3RhdGljIGlubGluZSBib29sIGlzUG93ZXJPZjIodW5zaWduZWQgdikK
IHsKICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly93d3cuY3MudXRrLmVkdS9+dm9zZS9jLXN0dWZm
L2JpdGhhY2tzLmh0bWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJQ2xpZW50LmgJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGllbnRJ
bnRlcmZhY2U+IGNsYXNzCiBwdWJsaWM6CiAgICAgQ2xpZW50KCkKICAgICB7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGF1dG8gaW50ZXJmYWNlU2l6
ZXMgPSBJbnRlcmZhY2VTaXplczxDbGllbnRWZXJzaW9ucz46OnNpemVzKCk7CiAgICAgICAgIEFT
U0VSVChzdGQ6OmlzX3NvcnRlZChpbnRlcmZhY2VTaXplcy5iZWdpbigpLCBpbnRlcmZhY2VTaXpl
cy5lbmQoKSkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgLSAoaWQpaW5pdAogICAgIHJldHVybiBzZWxm
OwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAtICh2b2lk
KWRlYWxsb2MKIHsKICAgICBBU1NFUlQoX2N1cnJlbnREaWN0aW9uYXJ5ID09IF9yb290RGljdGlv
bmFyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0Nv
Y29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRD
b2RlcnNDb2NvYS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBJc09iakNPYgogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgPSBJc09iakNPYmplY3Q8VD4+IE9wdGlvbmFsPFJldGFpblB0cjxU
Pj4gZGVjb2RlKERlY29kZXImLCBOU0FycmF5PENsYXNzPiAqYWxsb3dlZENsYXNzZXMgPSBAWyBb
VCBjbGFzc10gXSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IElzT2JqQ09iamVj
dDxUPj4gT3B0aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNvZGUoRGVjb2RlciYsIENsYXNzIGFsbG93
ZWRDbGFzcyk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIAogc3RhdGlj
IGlubGluZSBib29sIGlzT2JqZWN0Q2xhc3NBbGxvd2VkKGlkIG9iamVjdCwgTlNBcnJheTxDbGFz
cz4gKmFsbG93ZWRDbGFzc2VzKQogewpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNPYmplY3RDbGFzc0FsbG93ZWQoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZT4KIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIFQgKm9iamVjdCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNyArNTcsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6aW5jb3Jwb3JhdGVVcGRhdGUoY29u
CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEludFNpemUgdXBkYXRlU2l6ZSA9IHVwZGF0ZUlu
Zm8udXBkYXRlUmVjdEJvdW5kcy5zaXplKCk7CiAgICAgdXBkYXRlU2l6ZS5zY2FsZShtX2Rldmlj
ZVNjYWxlRmFjdG9yKTsKICAgICBBU1NFUlQoYml0bWFwLT5zaXplKCkgPT0gdXBkYXRlU2l6ZSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9u
YWw8Q2FsbGJhY2tGdW5jdGlvbj4gbV9jYWxsYmFjazsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fb3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpj
dXJyZW50KCkgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bh
Z2VMb2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
TG9hZFN0YXRlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BhZ2VMb2FkU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsMTQgKzk3LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgY2xhc3MgVG9rZW4gewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBU
b2tlbihUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAgICAgOiBtX3BhZ2VMb2FkU3RhdGUoKnRyYW5z
YWN0aW9uLm1fcGFnZUxvYWRTdGF0ZSkKICNlbmRpZgogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLm1fcGFnZUxvYWRTdGF0ZS0+bV9tYXlIYXZlVW5jb21taXR0ZWRD
aGFuZ2VzID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgUGFnZUxvYWRTdGF0ZSYgbV9wYWdlTG9hZFN0
YXRlOwogI2VuZGlmCiAgICAgICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNCw3ICs1MTQsNyBAQCBX
ZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdl
KG1faWRlbnRpZmllcikgIT0gdGhpcyk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgZm9yIChXZWJQYWdlUHJveHkqIHBhZ2UgOiBtX3Byb2Nlc3MtPnBhZ2Vz
KCkpCiAgICAgICAgIEFTU0VSVChwYWdlICE9IHRoaXMpOwogI2VuZGlmCkBAIC03MzY4LDcgKzcz
NjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZUFmdGVyUHJvY2VzCiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRklYTUU6IEl0J3Mgd2VpcmQg
dGhhdCByZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKCkgaXMgY2FsbGVkIGV2ZW4gdGhvdWdo
IHRoZSBwcm9jZXNzIGlzIGxhdW5jaGluZy4KICAgICBpZiAodGVybWluYXRpb25SZWFzb24gIT0g
UHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKICAgICAgICAgQVNTRVJU
KG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpMYXVuY2hpbmcg
fHwgbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0
ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NM
YXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6Omxh
dW5jaFByb2Nlc3MoKQogICAgICAgICBpZiAoIXByb2Nlc3NMYXVuY2hlci0+aXNMYXVuY2hpbmco
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgICAgICBtYWNoX3BvcnRfdXJlZnNfdCBzZW5kUmlnaHRDb3VudCA9IDA7
CiAgICAgICAgIG1hY2hfcG9ydF9nZXRfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQ
b3J0LCBNQUNIX1BPUlRfUklHSFRfU0VORCwgJnNlbmRSaWdodENvdW50KTsKICAgICAgICAgQVNT
RVJUKHNlbmRSaWdodENvdW50ID49IDEpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgUHJvY2Vz
c0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5
cGUocmVwbHkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOwogICAgICAgICAgICAgQVNTRVJUKCFz
dHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhyZXBseSwgIm1lc3NhZ2UtbmFtZSIpLCAi
cHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1hY2hfcG9ydF91cmVmc190IHNlbmRSaWdo
dENvdW50ID0gMDsKICAgICAgICAgICAgIG1hY2hfcG9ydF9nZXRfcmVmcyhtYWNoX3Rhc2tfc2Vs
ZigpLCBsaXN0ZW5pbmdQb3J0LCBNQUNIX1BPUlRfUklHSFRfU0VORCwgJnNlbmRSaWdodENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVChzZW5kUmlnaHRDb3VudCA+PSAxKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTkxMiw3ICsxOTEyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpncmFudFVzZXJNZWRpYURldmljZVNh
bgogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tEb2N1bWVudHNDYXB0dXJlU3RhdGVDb25zaXN0
ZW5jeShjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9uSURzKQogewotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNDYXB0dXJpbmdBdWRpbyA9
IFdURjo6YW55T2YoRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgpLnZhbHVlcygpLCBbXShhdXRv
KiBkb2N1bWVudCkgewogICAgICAgICByZXR1cm4gZG9jdW1lbnQtPm1lZGlhU3RhdGUoKSAmIE1l
ZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZU1hc2s7CiAgICAgfSk7CkBAIC0xOTI0LDcgKzE5MjQs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tEb2N1bWVudHNDYXB0dXJlCiAgICAgICAgIEFT
U0VSVChleHRlbnNpb25JRHMuZmluZE1hdGNoaW5nKFtdKGF1dG8mIGlkKSB7IHJldHVybiBpZC5j
b250YWlucygibWljcm9waG9uZSIpOyB9KSA9PSBub3RGb3VuZCk7CiAgICAgaWYgKGlzQ2FwdHVy
aW5nVmlkZW8pCiAgICAgICAgIEFTU0VSVChleHRlbnNpb25JRHMuZmluZE1hdGNoaW5nKFtdKGF1
dG8mIGlkKSB7IHJldHVybiBpZC5jb250YWlucygiY2FtZXJhIik7IH0pID09IG5vdEZvdW5kKTsK
LSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6
cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGV4dGVuc2lvbklEcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM3LDExICsxMzcsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbgogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBwb2xp
Y3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyOwogICAgIGlmIChuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSA9IHRydWU7CiAj
ZW5kaWYKICAgICAgICAgcG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgbV9pc1Byb2Nlc3NpbmdOZXR3
b3JrUmVzcG9uc2UgPSBmYWxzZTsKICNlbmRpZgogICAgICAgICAgICAgLy8gSWYgbV9jb3JlTG9h
ZGVyIGJlY29tZXMgbnVsbCBhcyBhIHJlc3VsdCBvZiB0aGUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNh
bGxiYWNrLCB3ZSBjYW4ndCB1c2UgdGhlIHNlbmQgZnVuY3Rpb24oKS4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9sbGVyIG1faW50ZXJjZXB0Q29udHJv
bGxlcjsKICAgICBzaXplX3QgbV9udW1CeXRlc1JlY2VpdmVkIHsgMCB9OwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSB7IGZhbHNlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgTmV0c2NhcGVQbHVnaW5TdHJlYW06Ok5ldHNj
YXBlUGx1Z2luU3RyZQogICAgICwgbV9vZmZzZXQoMCkKICAgICAsIG1fZmlsZUhhbmRsZShGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFs
c2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX3Vy
bE5vdGlmeUhhc0JlZW5DYWxsZWQoZmFsc2UpCiAjZW5kaWYgICAgCiAgICAgLCBtX2RlbGl2ZXJ5
RGF0YVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YVRvUGx1Z2luKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06Om5vdGlmeUFuZERlc3QKICAgICBpZiAobV9zZW5kTm90aWZpY2F0aW9uKSB7CiAg
ICAgICAgIG1fcGx1Z2luLT5OUFBfVVJMTm90aWZ5KG1fcmVxdWVzdFVSTFN0cmluZy51dGY4KCku
ZGF0YSgpLCByZWFzb24sIG1fbm90aWZpY2F0aW9uRGF0YSk7CiAgICAgCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fdXJsTm90aWZ5SGFzQmVlbkNh
bGxlZCA9IHRydWU7CiAjZW5kaWYgICAgCiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgLy8gV2hldGhlciBOUFBfTmV3U3RyZWFt
IGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBjYWxsZWQuCiAgICAgYm9vbCBtX2lzU3RhcnRlZDsKIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV91cmxO
b3RpZnlIYXNCZWVuQ2FsbGVkOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAxNyw3ICs1MDE3LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5Nb2RhbCgpCiAKICAgICBtX2lzUnVu
bmluZ01vZGFsID0gdHJ1ZTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bk1v
ZGFsKCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJl
ZjxXZWJQYWdlPiBwcm90ZWN0b3IoKnRoaXMpOwogI2VuZGlmCiAgICAgUnVuTG9vcDo6cnVuKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0JKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxOCw3ICszMTgsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKCkKICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgInVwZGF0ZVByb2Nlc3NOYW1lOiBGYWls
ZWQgdG8gc2V0IHRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcywgZXJy
b3IgY29kZTogJWxkIiwgc3RhdGljX2Nhc3Q8bG9uZz4oZXJyb3IpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgX0xTU2V0QXBwbGljYXRpb25JbmZvcm1h
dGlvbkl0ZW0oKSB0byByZXR1cm4gMCBhbmQgeWV0IGZhaWwgdG8gc2V0IHRoZSBkaXNwbGF5IG5h
bWUgc28gd2UgbWFrZSBzdXJlIHRoZSBkaXNwbGF5IG5hbWUgaGFzIGFjdHVhbGx5IGJlZW4gc2V0
LgogICAgICAgICBTdHJpbmcgYWN0dWFsQXBwbGljYXRpb25OYW1lID0gYWRvcHRDRigoQ0ZTdHJp
bmdSZWYpX0xTQ29weUFwcGxpY2F0aW9uSW5mb3JtYXRpb25JdGVtKGtMU0RlZmF1bHRTZXNzaW9u
SUQsIF9MU0dldEN1cnJlbnRBcHBsaWNhdGlvbkFTTigpLCBfa0xTRGlzcGxheU5hbWVLZXkpKS5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKCFhY3R1YWxBcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIw
LTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUg
cnVubmluZyBhIHJlbGVhc2UgYnVpbGQgd2l0aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVh
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpjbG9zZSk6CisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKwogMjAyMC0wMS0wMyAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc29tZSBzaGFyZWQgc2No
ZW1lcyB0byB0aGUgV2ViS2l0Lnhjd29ya3NwYWNlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDkgKzUwLDYgQEAgaW5saW5lIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFy
ZWFJbXBsKAogICAgICwgbV9zZWN1cml0eU9yaWdpbihvcmlnaW4pCiAgICAgLCBtX3N0b3JhZ2VN
YXAoU3RvcmFnZU1hcDo6Y3JlYXRlKHF1b3RhKSkKICAgICAsIG1fc3RvcmFnZVN5bmNNYW5hZ2Vy
KFdURk1vdmUoc3luY01hbmFnZXIpKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faXNTaHV0ZG93
bihmYWxzZSkKLSNlbmRpZgogICAgICwgbV9hY2Nlc3NDb3VudCgwKQogICAgICwgbV9jbG9zZURh
dGFiYXNlVGltZXIoKnRoaXMsICZTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VUaW1lckZp
cmVkKQogewpAQCAtODcsNyArODQsNyBAQCBTdG9yYWdlQXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1w
bChjb25zdCBTCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKGFyZWEubV9zZWN1cml0eU9yaWdpbikK
ICAgICAsIG1fc3RvcmFnZU1hcChhcmVhLm1fc3RvcmFnZU1hcCkKICAgICAsIG1fc3RvcmFnZVN5
bmNNYW5hZ2VyKGFyZWEubV9zdG9yYWdlU3luY01hbmFnZXIpCi0jaWZuZGVmIE5ERUJVRworI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2lzU2h1dGRvd24oYXJlYS5tX2lzU2h1dGRvd24pCiAj
ZW5kaWYKICAgICAsIG1fYWNjZXNzQ291bnQoMCkKQEAgLTIwNiw3ICsyMDMsNyBAQCB2b2lkIFN0
b3JhZ2VBcmVhSW1wbDo6Y2xvc2UoKQogICAgIGlmIChtX3N0b3JhZ2VBcmVhU3luYykKICAgICAg
ICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlRmluYWxTeW5jKCk7CiAKLSNpZm5kZWYgTkRF
QlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzU2h1dGRvd24gPSB0cnVlOwogI2VuZGlm
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZUFyZWFJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDggKzkwLDggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBtX3N0b3JhZ2VBcmVhU3luYzsKICAgICBSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiBtX3N0b3JhZ2VTeW5jTWFuYWdlcjsKIAot
I2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1faXNTaHV0ZG93bjsKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgIGJvb2wgbV9pc1NodXRkb3duIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIHVuc2lnbmVk
IG1fYWNjZXNzQ291bnQ7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9jbG9zZURhdGFiYXNlVGltZXI7
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMC0wMS0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRW5hYmxlIHJ1bm5pbmcgYSByZWxlYXNlIGJ1aWxkIHdpdGggZGVidWcgQVNTRVJUcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc3Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9y
eS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSByZW1vdmVJdGVt
Rm9yVVJMU3RyaW5nOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisKIDIwMjAt
MDEtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGEgc291Y2Ugb2YgV2ViS2l0MSB0ZXN0IGZsYWtpbmVzcwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgLSAoQk9PTClyZW1vdmVJdGVtRm9yVVJMU3RyaW5n
OihOU1N0cmluZwogCiAgICAgW19lbnRyaWVzQnlVUkwgcmVtb3ZlT2JqZWN0Rm9yS2V5OlVSTFN0
cmluZ107CiAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAg
ICAgW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOmVudHJ5XTsKICNlbHNlCiAgICAgQk9P
TCBpdGVtV2FzSW5EYXRlQ2FjaGVzID0gW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOmVu
dHJ5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUwOSw3IEBAIC0gKHZvaWQpX2Ns
ZWFyU2VsZWN0aW9uCiAgICAgICAgIFtkb2N1bWVudFZpZXcgZGVzZWxlY3RBbGxdOwogfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAtIChCT09MKV9hdE1vc3RP
bmVGcmFtZUhhc1NlbGVjdGlvbgogewogICAgIC8vIEZJWE1FOiA0MTg2MDUwIGlzIG9uZSBrbm93
biBjYXNlIHRoYXQgbWFrZXMgdGhpcyBkZWJ1ZyBjaGVjayBmYWlsLgpAQCAtNTI0LDcgKzUyNCw3
IEBAIC0gKEJPT0wpX2F0TW9zdE9uZUZyYW1lSGFzU2VsZWN0aW9uCiAgICAgfQogICAgIHJldHVy
biBZRVM7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAtIChXZWJGcmFt
ZSAqKV9maW5kRnJhbWVXaXRoU2VsZWN0aW9uCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMS0wNSAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHJ1bm5pbmcgYSByZWxl
YXNlIGJ1aWxkIHdpdGggZGVidWcgQVNTRVJUcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJl
bmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjpzd2FwQ2hhaW4pOgor
ICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdl
YktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oOgorICAgICAgICAqIFdlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6UmVsZWFzZSk6CisgICAgICAgICogV2ViVmlldy5o
OgorCiAyMDE5LTEyLTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWZhY3RvciB0byBzaW1wbGlmeSBicm9hZGNhc3RpbmcgdG8gYWxsIG1lZGlhIGVsZW1lbnRz
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5NDMsNyArMjk0Myw3IEBAIFVMT05HIFdlYlZpZXc6OlJlbGVhc2UoKQogCiAgICAgVUxPTkcg
bmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICghbmV3UmVmKSB7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9
IHRydWU7CiAjZW5kaWYKICAgICAgICAgZGVsZXRlKHRoaXMpOwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTcsNyArNjE3LDcgQEAgcHJvdGVjdGVk
OgogI2VuZGlmCiAKICAgICBVTE9ORyBtX3JlZkNvdW50IHsgMCB9OwotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuIHsg
ZmFsc2UgfTsKICNlbmRpZgogICAgIEhXTkQgbV9ob3N0V2luZG93IHsgbnVsbHB0ciB9OwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQz
RFJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NB
RDNEUmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAgQ0NvbVB0
cjxJRGlyZWN0M0RTd2FwQ2hhaW45PiBDQUQzRFJlbmRlcgogICAgIGlmICh1c2VEZWZhdWx0U3dh
cENoYWluKSB7CiAgICAgICAgIENDb21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gZGVmYXVsdFN3
YXBDaGFpbjsKICAgICAgICAgaWYgKFNVQ0NFRURFRChtX2QzZERldmljZS0+R2V0U3dhcENoYWlu
KDAsICZkZWZhdWx0U3dhcENoYWluKSkpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGp1c3QgaW5pdGlhbGl6ZWQgb3Ig
cmVzZXQgdGhlIGRldmljZSwgaXRzIGRlZmF1bHQgc3dhcCBjaGFpbiBzaG91bGQgYmUKICAgICAg
ICAgICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbmQgc2l6ZWQgdG8gbWF0Y2ggdGhpcyB3aW5kb3cu
CiAgICAgICAgICAgICBEM0RQUkVTRU5UX1BBUkFNRVRFUlMgcGFyYW1ldGVyczsKQEAgLTI1Miw3
ICsyNTIsNyBAQCBzdGF0aWMgYm9vbCBoYXJkd2FyZUNhcGFiaWxpdGllc0luZGljYXRlCiAKIGJv
b2wgQ0FEM0RSZW5kZXJlcjo6aW5pdGlhbGl6ZShDV2luZG93IHdpbmRvdywgY29uc3QgQ0dTaXpl
JiBzaXplKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGlmICghbV9kZXZpY2VUaHJlYWRJRCkKICAgICAgICAgbV9kZXZpY2VUaHJlYWRJRCA9IDo6R2V0
Q3VycmVudFRocmVhZElkKCk7CiAgICAgLy8gTVNETiBzYXlzIHRoYXQgSURpcmVjdDNEOTo6Q3Jl
YXRlRGV2aWNlIG11c3QgImJlIGNhbGxlZCBmcm9tIHRoZSBzYW1lIHRocmVhZCB0aGF0IGhhbmRs
ZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlv
bnMvQ0FEM0RSZW5kZXJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25z
L0NBRDNEUmVuZGVyZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZh
dGU6CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0REZXZpY2U5PiBtX2QzZERldmljZTsKICAgICBDQVJl
bmRlck9HTENvbnRleHQqIG1fcmVuZGVyT0dMQ29udGV4dCB7IG51bGxwdHIgfTsKICAgICBDQ29t
UHRyPElEaXJlY3QzRFBpeGVsU2hhZGVyOT4gbV9waXhlbFNoYWRlcjsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBEV09SRCBtX2RldmljZVRocmVhZElEIHsg
MCB9OwogI2VuZGlmCiAgICAgYm9vbCBtX2luaXRpYWxpemVkIHsgZmFsc2UgfTsKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDIwLTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
bmFibGUgcnVubmluZyBhIHJlbGVhc2UgYnVpbGQgd2l0aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvT2JqQ0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bT2JqQ0NvbnRyb2xsZXIgYWNjZXNz
U3RvcmVkV2ViU2NyaXB0T2JqZWN0XSk6CisKIDIwMjAtMDEtMDUgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRHVtcFJlbmRlclRyZWUgZG9lc24ndCBh
bHdheXMgY2FsbCB1cGRhdGVSZW5kZXJpbmcoKSB3aGVuIGEgdGVzdCBjb21wbGV0ZXMKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubQkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIC0gKEJPT0wpdGVzdFdyYXBwZXJSb3VuZFRyaXBw
aW5nOihXZWJTY3IKIAogLSAodm9pZClhY2Nlc3NTdG9yZWRXZWJTY3JpcHRPYmplY3QKIHsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBCT09MIGlzV2luZG93
T2JqZWN0ID0gW3N0b3JlZFdlYlNjcmlwdE9iamVjdCBpc0tpbmRPZkNsYXNzOltET01BYnN0cmFj
dFZpZXcgY2xhc3NdXTsKICAgICBKU09iamVjdFJlZiBqc09iamVjdCA9IFtzdG9yZWRXZWJTY3Jp
cHRPYmplY3QgSlNPYmplY3RdOwogICAgIEFTU0VSVCgoanNPYmplY3QgJiYgaXNXaW5kb3dPYmpl
Y3QpIHx8ICghanNPYmplY3QgJiYgIWlzV2luZG93T2JqZWN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386798</attachid>
            <date>2020-01-05 13:42:34 -0800</date>
            <delta_ts>2020-01-05 23:53:02 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-205776.patch</filename>
            <type>text/plain</type>
            <size>383617</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTA1ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgcnVubmluZyBh
IHJlbGVhc2UgYnVpbGQgd2l0aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBKZXRTdHJlYW0yL3dhc20vSGFzaFNldC5jcHA6
CisgICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogU3Rp
dGNoTWFya2VyL3d0Zi9EYXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVEYXRl
cyk6CisgICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKiBT
dGl0Y2hNYXJrZXIvd3RmL0hhc2hlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFk
ZENoYXJhY3RlcnMpOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvTmV2ZXJEZXN0cm95ZWQu
aDoKKyAgICAgICAgKFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOjpjb25zdHJ1Y3QpOgorICAgICAg
ICAqIFN0aXRjaE1hcmtlci93dGYvU3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tC
b3VuZHM6OmNoZWNrQ29uc2lzdGVuY3kgY29uc3QpOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93
dGYvVmFsdWVDaGVjay5oOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvVmVjdG9yLmg6Cisg
ICAgICAgIChXVEY6Om1pbkNhcGFjaXR5Pjo6Y2hlY2tDb25zaXN0ZW5jeSk6CisgICAgICAgICog
U3RpdGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIFN0
aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmg6CisgICAgICAgICogU3RpdGNo
TWFya2VyL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oOgorICAgICAgICAoV1RGOjpoYXNQcmVmaXhX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKToKKyAgICAgICAgKiBTdGl0Y2hNYXJr
ZXIvd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvdGV4
dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1VuaXF1ZWRT
dHJpbmdJbXBsLmg6CisKIDIwMTktMTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBTdHlsZUJlbmNoIHN1YnRlc3QgZm9yIGR5bmFtaWMgbWVkaWEg
cXVlcnkgcGVyZm9ybWFuY2UKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93YXNt
L0hhc2hTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvSmV0U3RyZWFtMi93
YXNtL0hhc2hTZXQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBBU1NFUlRfRElT
QUJMRUQgMQorI2RlZmluZSBBU1NFUlRfRU5BQkxFRCAwCiAKICNkZWZpbmUgRFVNUF9IQVNIVEFC
TEVfU1RBVFMgMAogI2RlZmluZSBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFCTEUgMApAQCAt
MTAzMyw3ICsxMDMzLDcgQEAgc3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJsaWMgR2VuZXJp
YwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4g
VmFsdWVUeXBlKiBsb29rdXAoY29uc3QgVCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBpbmxpbmVMb29rdXAoY29uc3Qg
VCYpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0
aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7IH0KQEAgLTEwODUsNyArMTA4NSw3IEBA
IHN0cnVjdCBDdXN0b21IYXNoVHJhaXRzIDogcHVibGljIEdlbmVyaWMKICAgICAgICAgaXRlcmF0
b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBpdGVyYXRv
cih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9
CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJhdG9yKFZhbHVl
VHlwZSogcG9zKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFi
bGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lz
dGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0aWMgdm9pZCBjaGVj
a1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgeyB9CkBAIC0xMTgyLDcgKzExODIsNyBAQCBz
dHJ1Y3QgQ3VzdG9tSGFzaFRyYWl0cyA6IHB1YmxpYyBHZW5lcmljCiAgICAgICAgIHJldHVybiBr
ZXk7CiAgICAgfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRy
YWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUg
S2V5VHJhaXRzPgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPgpAQCAtMTk1MSw3ICsxOTUxLDcgQEAgc3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJs
aWMgR2VuZXJpYwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHZvaWQgSGFzaFRh
YmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFp
dHM+OjpjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBjb25zdApAQCAtMTk5Myw3ICsxOTkzLDcgQEAg
c3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJsaWMgR2VuZXJpYwogICAgICAgICBBU1NFUlQo
bV90YWJsZVNpemUgPT0gbV90YWJsZVNpemVNYXNrICsgMSk7CiAgICAgfQogCi0jZW5kaWYgLy8g
QVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogI2lmIENIRUNLX0hB
U0hUQUJMRV9JVEVSQVRPUlMKIApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIv
d3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1h
cmtlci93dGYvQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Mywz
OSArNjMsMzYgQEAgZXh0ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVCYXJyaWVyKHZvaWQpOwogI2Vu
ZGlmCiAjZW5kaWYKIAorI2lmbmRlZiBBU1NFUlRfRU5BQkxFRAogI2lmZGVmIE5ERUJVRwotLyog
RGlzYWJsZSBBU1NFUlQqIG1hY3JvcyBpbiByZWxlYXNlIG1vZGUuICovCi0jZGVmaW5lIEFTU0VS
VElPTlNfRElTQUJMRURfREVGQVVMVCAxCisjZGVmaW5lIEFTU0VSVF9FTkFCTEVEIDAKICNlbHNl
Ci0jZGVmaW5lIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVCAwCisjZGVmaW5lIEFTU0VSVF9F
TkFCTEVEIDEKICNlbmRpZgotCi0jaWZuZGVmIEJBQ0tUUkFDRV9ESVNBQkxFRAotI2RlZmluZSBC
QUNLVFJBQ0VfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCiAjZW5kaWYKIAot
I2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKLSNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIEFTU0VSVElP
TlNfRElTQUJMRURfREVGQVVMVAorI2lmbmRlZiBCQUNLVFJBQ0VfRElTQUJMRUQKKyNkZWZpbmUg
QkFDS1RSQUNFX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNpZm5kZWYgQVNT
RVJUX01TR19ESVNBQkxFRAotI2RlZmluZSBBU1NFUlRfTVNHX0RJU0FCTEVEIEFTU0VSVElPTlNf
RElTQUJMRURfREVGQVVMVAorI2RlZmluZSBBU1NFUlRfTVNHX0RJU0FCTEVEICFBU1NFUlRfRU5B
QkxFRAogI2VuZGlmCiAKICNpZm5kZWYgQVNTRVJUX0FSR19ESVNBQkxFRAotI2RlZmluZSBBU1NF
UlRfQVJHX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBBU1NF
UlRfQVJHX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNpZm5kZWYgRkFUQUxf
RElTQUJMRUQKLSNkZWZpbmUgRkFUQUxfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZB
VUxUCisjZGVmaW5lIEZBVEFMX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNp
Zm5kZWYgRVJST1JfRElTQUJMRUQKLSNkZWZpbmUgRVJST1JfRElTQUJMRUQgQVNTRVJUSU9OU19E
SVNBQkxFRF9ERUZBVUxUCisjZGVmaW5lIEVSUk9SX0RJU0FCTEVEICFBU1NFUlRfRU5BQkxFRAog
I2VuZGlmCiAKICNpZm5kZWYgTE9HX0RJU0FCTEVECi0jZGVmaW5lIExPR19ESVNBQkxFRCBBU1NF
UlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgTE9HX0RJU0FCTEVEICFBU1NFUlRfRU5B
QkxFRAogI2VuZGlmCiAKICNpZm5kZWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTI2Nyw3ICsy
NjQsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTCiAjdW5kZWYg
QVNTRVJUCiAjZW5kaWYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxF
RAogCiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24pICgodm9pZCkwKQogI2RlZmluZSBBU1NFUlRf
QVQoYXNzZXJ0aW9uLCBmaWxlLCBsaW5lLCBmdW5jdGlvbikgKCh2b2lkKTApCkBAIC00NDYsNyAr
NDQzLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBUwogCiAvKiBS
RUxFQVNFX0FTU0VSVCAqLwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFC
TEVECiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCiAgICAgaWYgKFVO
TElLRUxZKCEoYXNzZXJ0aW9uKSkpIFwKICAgICAgICAgQ1JBU0goKTsgXApJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0RhdGVNYXRoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvRGF0ZU1hdGguY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvRGF0ZU1hdGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNyArNTUzLDcgQEAgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1
bGF0ZUxvY2FsVGltZU9mZnNldAogCiB2b2lkIGluaXRpYWxpemVEYXRlcygpCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc3RhdGljIGJvb2wgYWxyZWFk
eUluaXRpYWxpemVkOwogICAgIEFTU0VSVCghYWxyZWFkeUluaXRpYWxpemVkKTsKICAgICBhbHJl
YWR5SW5pdGlhbGl6ZWQgPSB0cnVlOwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJr
ZXIvd3RmL0hhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNo
TWFya2VyL3d0Zi9IYXNoVGFibGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgUGVyZm9ybWFuY2VU
ZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTYs
NyArNDE2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
c2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5cGUqIGxvb2t1cChjb25zdCBUJik7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1
ZVR5cGUqIGlubGluZUxvb2t1cChjb25zdCBUJik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSBj
b25zdDsKICNlbHNlCiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgp
IHsgfQpAQCAtNDY4LDcgKzQ2OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBpdGVyYXRv
ciBtYWtlS25vd25Hb29kSXRlcmF0b3IoVmFsdWVUeXBlKiBwb3MpIHsgcmV0dXJuIGl0ZXJhdG9y
KHRoaXMsIHBvcywgbV90YWJsZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0K
ICAgICAgICAgY29uc3RfaXRlcmF0b3IgbWFrZUtub3duR29vZENvbnN0SXRlcmF0b3IoVmFsdWVU
eXBlKiBwb3MpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRoaXMsIHBvcywgbV90YWJs
ZSArIG1fdGFibGVTaXplLCBIYXNoSXRlbUtub3duR29vZCk7IH0KIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0
ZW5jeUV4Y2VwdFNpemUoKSBjb25zdDsKICNlbHNlCiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KQEAgLTU2OCw3ICs1NjgsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGtleTsKICAgICB9CiAKLSNpZiBBU1NFUlRfRElT
QUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwg
dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9u
cywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CkBAIC0xMzM3LDcgKzEzMzcsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB2b2lkIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKQEAgLTEzNzksNyArMTM3OSw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPT0gbV90YWJs
ZVNpemVNYXNrICsgMSk7CiAgICAgfQogCi0jZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVECisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMKIApJ
bmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0hhc2hlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9IYXNoZXIuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0hhc2hlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
Q2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hhciBiKQogICAgIHsKICAgICAgICAgaWYgKG1faGFzUGVu
ZGluZ0NoYXJhY3RlcikgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CiAjZW5kaWYKICAg
ICAgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVy
LCBhKTsKICAgICAgICAgICAgIG1fcGVuZGluZ0NoYXJhY3RlciA9IGI7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFy
YWN0ZXIgPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvTmV2ZXJEZXN0cm95ZWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvTmV2ZXJEZXN0cm95ZWQuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL05ldmVy
RGVzdHJveWVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgQVNTRVJUKCFtX2lzQ29uc3RydWN0ZWQpOwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1faXNDb25zdHJ1Y3RlZCA9IHRydWU7
CiAjZW5kaWYKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0
IE1heWJlUmVsYXgoUHRyVHlwZSogcHRyKSB7IHB0ci0+cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50
KCk7IH0KICAgICB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgLy8gTGF6eU5ldmVyRGVzdHJveWVkIG9iamVjdHMgYXJlIGFsd2F5cyBzdGF0aWMsIHNv
IHRoaXMgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgdG8gZmFsc2UuCiAgICAgLy8gSXQgbXVzdCBu
b3QgYmUgaW5pdGlhbGl6ZWQgZHluYW1pY2FsbHk7IHRoYXQgd291bGQgbm90IGJlIHRocmVhZCBz
YWZlLgogICAgIGJvb2wgbV9pc0NvbnN0cnVjdGVkOwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9T
dGl0Y2hNYXJrZXIvd3RmL1N0YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL1N0YWNrQm91bmRzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9TdGFja0JvdW5kcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tDb25z
aXN0ZW5jeSgpIGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICB2b2lkKiBjdXJyZW50UG9zaXRpb24gPSAmY3VycmVudFBvc2l0aW9u
OwogICAgICAgICBBU1NFUlQobV9vcmlnaW4gIT0gbV9ib3VuZCk7CiAgICAgICAgIEFTU0VSVChp
c0dyb3dpbmdEb3dud2FyZCgpCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93
dGYvVmFsdWVDaGVjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFy
a2VyL3d0Zi9WYWx1ZUNoZWNrLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvU3RpdGNoTWFya2VyL3d0Zi9WYWx1ZUNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2sgewogICAgIHN0
YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgVCYpIHsgfQogfTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IFZhbHVlQ2hlY2s8UCo+IHsKICAgICB0eXBlZGVmIFAqIFRyYWl0VHlwZTsKICAgICBzdGF0
aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFAqIHApCkluZGV4OiBQZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OTQsNyArMTQ5NCw3IEBAIGlubGluZSBNYWxsb2NQdHI8VD4gVmVjdG9yPFQsIGlubGluZUNh
cGEKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyLCBzaXplX3QgbWluQ2FwYWNpdHk+CiBpbmxpbmUgdm9pZCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlciwgbWluQ2FwYWNpdHk+OjpjaGVja0Nv
bnNpc3RlbmN5KCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUoKTsgKytpKQogICAgICAgICBWYWx1ZUNo
ZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5KGF0KGkpKTsKICNlbmRpZgpAQCAtMTUyMSw3ICsxNTIx
LDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8VCwgaQogICAgIHJldHVy
biAhKGEgPT0gYik7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1ZUNoZWNrPFZlY3RvcjxUPj4gewog
ICAgIHR5cGVkZWYgVmVjdG9yPFQ+IFRyYWl0VHlwZTsKICAgICBzdGF0aWMgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KGNvbnN0IFZlY3RvcjxUPiYgdikKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3Rp
dGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYv
dGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM2LDcgKzUzNiw3
IEBAIFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBBdG9taWNTdHJpbmdJbXAKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
Ym9vbCBBdG9taWNTdHJpbmdJbXBsOjppc0luQXRvbWljU3RyaW5nVGFibGUoU3RyaW5nSW1wbCog
c3RyaW5nKQogewogICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKSW5kZXg6IFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9t
aWNTdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvU3Rp
dGNoTWFya2VyL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZGQoKnN0cmluZ1RhYmxlUHJv
dmlkZXIuYXRvbWljU3RyaW5nVGFibGUoKSwgKnN0cmluZyk7CiAgICAgfQogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBib29sIGlzSW5BdG9taWNTdHJpbmdUYWJsZShTdHJpbmdJbXBsKik7CiAjZW5kaWYK
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHN0YXRpYyBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gbG9va1VwU2xvd0Nhc2UoU3RyaW5nSW1w
bCYpOwogfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogLy8g
QXRvbWljU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NF
UlQKIC8vIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8v
IGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0NvbW1vbi5o
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYv
dGV4dC9TdHJpbmdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjA1LDcgKzYwNSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHVuc2lnbmUKIAogdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nQ2xhc3M+IGJvb2wgaW5saW5lIGhhc1ByZWZpeFdpdGhMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2VDb21tb24oY29uc3QgU3RyaW5nQ2xhc3MmIHN0cmluZywgY29uc3QgY2hhciogbG93
ZXJjYXNlTGV0dGVycywgdW5zaWduZWQgbGVuZ3RoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCgqbG93ZXJjYXNlTGV0dGVycyk7CiAgICAg
Zm9yIChjb25zdCBjaGFyKiBsZXR0ZXIgPSBsb3dlcmNhc2VMZXR0ZXJzOyAqbGV0dGVyOyArK2xl
dHRlcikKICAgICAgICAgQVNTRVJUKHRvQVNDSUlMb3dlclVuY2hlY2tlZCgqbGV0dGVyKSA9PSAq
bGV0dGVyKTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93
dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
ODc4LDcgKzg3OCw3IEBAIHVzaW5nIFN0YXRpY1N0cmluZ0ltcGwgPSBTdHJpbmdJbXBsOjpTdGEK
IAogc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gc2l6ZW9mKFN0YXRpY1N0cmlu
Z0ltcGwpLCAiIik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
IC8vIFN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJU
CiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5CiAvLyBh
cyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9TeW1ib2xJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL3RleHQvU3ltYm9sSW1wbC5oCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9T
eW1ib2xJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBpbmxpbmUgUmVn
aXN0ZXJlZFN5bWJvbEltcGwqIFN5bWJvbEltcGw6CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJl
Z2lzdGVyZWRTeW1ib2xJbXBsKj4odGhpcyk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKIC8vIFN5bWJvbEltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJp
bmdJbXBsIHdpbGwgQVNTRVJUCiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVj
a0NvbnNpc3RlbmN5CiAvLyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2Mu
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9VbmlxdWVkU3Ry
aW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0
Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJvdGVjdGVkOgogICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKENyZWF0ZVN5bWJvbFRhZykgOiBTdHJpbmdJbXBsKENyZWF0ZVN5bWJvbCkgeyB9CiB9Owog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAvLyBVbmlxdWVkU3Ry
aW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQKIC8vIGlu
IHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8vIGFzIHRoZXkg
YXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0OCBAQAorMjAyMC0wMS0wNSAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHJ1bm5pbmcgYSByZWxlYXNl
IGJ1aWxkIHdpdGggZGVidWcgQVNTRVJUcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBjb3JlIGludGVudCBmb3IgdGhpcyBwYXRjaCBpcyB0byBl
bmFibGUgdXMgdG8gcnVuIHRlc3RzIHdpdGggZGVidWcgQVNTRVJUcworICAgICAgICBlbmFibGVk
IGJ1dCBzdGlsbCBoYXZlIHRoZSB0ZXN0cyBub3QgdGFrZSB0b28gbG9uZyB0byBydW4uCisKKyAg
ICAgICAgICAgIEhlcmUgYXJlIHRoZSB0aW1lcyBmb3IgcnVubmluZyBhbGwgSlNDIHN0cmVzcyB0
ZXN0cyBvbiB2YXJpb3VzIGJ1aWxkIGNvbmZpZ3VyYXRpb25zCisgICAgICAgICAgICB3aXRoIGRl
YnVnIEFTU0VSVHMgZW5hYmxlZDoKKworICAgICAgICAgICAgMS4gUmVsZWFzZSBidWlsZDogfjQw
IG1pbnV0ZXMKKyAgICAgICAgICAgIDIuIERlYnVnIGJ1aWxkICh3aXRoIG5vIHRpbWVvdXRzKTog
fjYgaG91cnMgKGZyb20gbXkgc2tldGNoeSBtZW1vcnkpCisgICAgICAgICAgICAzLiBBU0FOIFJl
bGVhc2UgYnVpbGQgKHdpdGggNjAgZmFpbHVyZXMsIDIxIG9mIHdoaWNoIGFyZSB0aW1lb3V0cyk6
IH41IGhvdXJzCisKKyAgICAgICAgICAgIFdlIGhhZCBjb25zaWRlcmVkIHVzaW5nIHRoZSBBU0FO
IFJlbGVhc2UgYnVpbGQgYXMgdGhlIHZlaGljbGUgZm9yIGFjaGlldmluZyB0aGUKKyAgICAgICAg
ICAgIGdvYWwgb2YgcnVubmluZyB3aXRoIGRlYnVnIEFTU0VSVHMgb24gYSAiZmFzdCIgdGVzdCBy
dW4uICBCYXNlZCBvbiB0aGlzIGRhdGEsCisgICAgICAgICAgICB0aGUgQVNBTiBSZWxlYXNlIGJ1
aWxkIGlzIGp1c3QgYXMgYmFkIGFzIHRoZSBEZWJ1ZyBidWlsZCAodGVzdCBydW4gdGltZXMgYXJl
IG9uCisgICAgICAgICAgICBzYW1lIG9yZGVyIG9mIG1hZ25pdHVkZSwgYW5kIHdheSB0b28gc2xv
dykuICBIZW5jZSwgdGhlIEFTQU4gUmVsZWFzZSBidWlsZCBpcworICAgICAgICAgICAgbm90IGEg
dmlhYmxlIHNvbHV0aW9uLgorCisgICAgICAgICAgICBVbHRpbWF0ZWx5LCB3ZSdsbCBuZWVkIHRv
IHNldCB1cCBhbm90aGVyIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYmFzZWQgb24gdGhlCisgICAgICAg
ICAgICBSZWxlYXNlIGJ1aWxkIGluIG9yZGVyIHRvIGFjaGlldmUgdGhlIGdvYWwuICBXZSdsbCBk
byB0aGF0IGluIGFub3RoZXIgcGF0Y2guCisgICAgICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc3OS4KKworICAgICAgICAgICAgRm9yIG5vdywg
d2UnbGwgZW5hYmxlIGRlYnVnIEFTU0VSVHMgb24gQVNBTiBSZWxlYXNlIGJ1aWxkcyBqdXN0IHRv
IGVuc3VyZSB0aGF0CisgICAgICAgICAgICB0aGUgc3VwcG9ydCBmb3IgZW5hYmxpbmcgQVNTRVJU
cyBvbiByZWxlYXNlIGJ1aWxkcyBkb24ndCBiaXRyb3Qgb3ZlciB0aW1lLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVwbGFjZXMgQVNTRVJUX0RJU0FCTEVEIHdpdGggQVNTRVJUX0VOQUJMRUQuCisK
KyAgICAgICAgICAgIFRoaXMgaXMgdXNlZCBhcyBhIGZvcmNpbmcgZnVuY3Rpb24gdG8gZW5zdXJl
IHRoYXQgYWxsIHRoZSByZWxldmFudCBzdXBwb3J0aW5nCisgICAgICAgICAgICBjb2RlIHRoYXQg
bmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgZGVidWcgYXNzZXJ0cyBoYXZlIGJlZW4gdmlzaXRlZCBp
biBhIGNvZGUKKyAgICAgICAgICAgIHJldmlldyBhbmQgdXBkYXRlZCBhcyBuZWVkZWQuICBTcGVj
aWZpY2FsbHksIGEgbG90IG9mIHRoaXMgc3VwcG9ydCBjb2RlIHdhcworICAgICAgICAgICAgcHJl
dmlvdXNseSBndWFyZGVkIHdpdGggIiNpZm5kZWYgTkRFQlVHIi4gIFRoZXkgYXJlIG5vdyBmaXhl
ZCB0byBiZSBndWFyZGVkCisgICAgICAgICAgICBieSAiI2lmIEFTU0VSVF9FTkFCTEVEIi4KKwor
ICAgICAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyBkb2VzIGF3YXkgd2l0aCB0aGUgbmVlZCBmb3Ig
dGhlIGRvdWJsZSBuZWdhdGl2ZQorICAgICAgICAgICAgIUFTU0VSVF9ESVNBQkxFRCB0ZXN0IHRo
YXQgaXMgY29tbW9ubHkgdXNlZCBhbGwgb3ZlciB0aGUgY29kZSwgdGhlcmVieQorICAgICAgICAg
ICAgaW1wcm92aW5nIGNvZGUgcmVhZGFiaWxpdHkuCisKKyAgICAgICAgICAgIEluIEFzc2VydGlv
bnMuaCwgdGhlcmUgaXMgYWxzbyBCQUNLVFJBQ0VfRElTQUJMRUQsIEFTU0VSVF9NU0dfRElTQUJM
RUQsCisgICAgICAgICAgICBBU1NFUlRfQVJHX0RJU0FCTEVELCBGQVRBTF9ESVNBQkxFRCwgRVJS
T1JfRElTQUJMRUQsIExPR19ESVNBQkxFRCwgYW5kCisgICAgICAgICAgICBSRUxFQVNFX0xPR19E
SVNBQkxFRC4gIFdlIHNob3VsZCByZXBsYWNlIHRob3NlIHdpdGggLi4uX0VOQUJMRUQgZXF1aXZh
bGVudHMKKyAgICAgICAgICAgIGFzIHdlbGwuICBXZWxsIGRvIHRoYXQgaW4gYW5vdGhlciBwYXRj
aC4gIEZvciBub3csIHRoZXkgYXJlIGxlZnQgYXMgaXMgdG8KKyAgICAgICAgICAgIG1pbmltaXpl
IHRoZSBzaXplIG9mIHRoaXMgcGF0Y2guCisgICAgICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc4MC4KKworICAgICAgICBUaGlzIHBhdGNoIGFs
c28gaW50cm9kdWNlcyBKU0NfQVNTRVJUX0VOQUJMRUQgYW5kIFdURl9BU1NFUlRfRU5BQkxFRCBm
bGFncyB0byBiZQorICAgICAgICB1c2VkIGluIEpTQyBhbmQgV1RGIGNvZGUgcmVzcGVjdGl2ZWx5
IGluc3RlYWQgb2YgQVNTRVJUX0VOQUJMRUQuCisKKyAgICAgICAgVG8gZW5hYmxlIGRlYnVnIEFT
U0VSVHMgaW4gSlNDIGNvZGUgKGV2ZW4gaW4gcmVsZWFzZSBidWlsZHMpLCBvdmVycmlkZQorICAg
ICAgICBKU0NfQVNTRVJUX0VOQUJMRUQgdG8gdHJ1ZS4KKworICAgICAgICBTaW1pbGFybHksIHRv
IGVuYWJsZSBkZWJ1ZyBBU1NFUlRzIGluIFdURiBjb2RlIChldmVuIGluIHJlbGVhc2UgYnVpbGRz
KSwgb3ZlcnJpZGUKKyAgICAgICAgV1RGX0FTU0VSVF9FTkFCTEVEIHRvIHRydWUuCisKKyAgICAg
ICAgICAgIFRoZSByZWFzb24gd2UgbmVlZCBXVEZfQVNTRVJUX0VOQUJMRUQgYW5kIEpTQ19BU1NF
UlRfRU5BQkxFRCBpcyBiZWNhdXNlCisgICAgICAgICAgICBXZWJDb3JlIGFuZCBoaWdoZXIgbGV2
ZWwgc3RhY2tzIGFyZW4ndCByZWFkeSB0byBydW4gd2l0aCBkZWJ1ZyBBU1NFUlRzIG9uIHlldC4K
KyAgICAgICAgICAgIFRoZXJlIG1heSBiZSB0b28gbWFueSBmYWxzZSBwb3NpdGl2ZSB0ZXN0IGZh
aWx1cmVzLiAgQXMgc3VjaCwgd2Ugb25seSB3YW50CisgICAgICAgICAgICB0byBlbmFibGUgZGVi
dWcgQVNTRVJUcyBvbiBKU0MgYW5kIGJlbG93LgorCisgICAgICAgICAgICBUbyBhY2hpZXZlIHRo
aXMsIHdlIG5lZWQgdG8gYmUgZW5zdXJlIHRoYXQgZm9yIFdURiBhbmQgSlNDIGNvZGU6CisKKyAg
ICAgICAgICAgIDEuIEFueSBmaWVsZHMgdGhhdCBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBp
biBmb3IgQVNTRVJUcyBpcyBhbHNvIGVuYWJsZWQKKyAgICAgICAgICAgICAgIGV2ZW4gaW4gYnVp
bGRzIG9mIFdlYkNvcmUgKGFuZCBhYm92ZSkgdGhvdWdoIHRoZSBBU1NFUlRzIGFyZSBub3QgZW5h
YmxlZC4KKworICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB3ZSBjYW4gZ2V0IGEgbWlzbWF0Y2gg
aW4gdGhlIGxheW91dCBvZiBKU0Mgc3RydWN0cy9jbGFzc2VzCisgICAgICAgICAgICAgICB0aGF0
IGFyZSBhbHNvIHVzZWQgaW4gV2ViQ29yZSAoYW5kIGFib3ZlKS4KKworICAgICAgICAgICAgMi4g
QW55IGNvZGUgdGhhdCBzZXRzIC8gbW9kaWZpZXMgdGhlIHN0YXRlIG9mIHRob3NlIGZpZWxkcyB0
aGF0IGFyZQorICAgICAgICAgICAgICAgY29uZGl0aW9uYWxseSBjb21waWxlZCBpbiBmb3IgQVNT
RVJUcyBpcyBhbHNvIGVuYWJsZWQgaW4gYnVpbGRzIG9mIFdlYkNvcmUKKyAgICAgICAgICAgICAg
IChhbmQgYWJvdmUpIHRob3VnaCB0aGUgQVNTRVJUcyBhcmUgbm90IGVuYWJsZWQuCisKKyAgICAg
ICAgICAgICAgIE90aGVyd2lzZSwgSlNDIGFuZCBXVEYgYXNzZXJ0IHN1cHBvcnQgY29kZSB0aGF0
IGFyZSBpbmxpbmVkIGludG8gV2ViQ29yZQorICAgICAgICAgICAgICAgKGFuZCBhYm92ZSkgbWF5
IG5vdCBnZXQgZXhlcmNpc2VkLCBhbmQgQVNTRVJUcyB3aWxsIGZhaWwuCisKKyAgICAgICAgICAg
IEd1YXJkaW5nIGFsbCBXVEYgYW5kIEpTQyBhc3NlcnQgc3BlY2lmaWMgZmllbGRzIGFuZCBzdXBw
b3J0IGNvZGUgd2l0aAorICAgICAgICAgICAgV1RGX0FTU0VSVF9FTkFCTEVEIGFuZCBKU0NfQVNT
RVJUX0VOQUJMRUQgcmVzcGVjdGl2ZWx5LCBlbnN1cmVzIHRoYXQKKyAgICAgICAgICAgIGNvbmRp
dGlvbnMgKDEpIGFuZCAoMikgYWJvdmUgY2FuIGJlIG1ldC4KKworICAgICAgICAgICAgTm90ZSB0
aGF0IHRoZSBBU1NFUlQgbWFjcm9zIGFyZSBzdGlsbCBndWFyZGVkIGJ5IEFTU0VSVF9FTkFCTEVE
IChhbmQgbm90CisgICAgICAgICAgICBXVEZfQVNTRVJUX0VOQUJMRUQgYW5kIEpTQ19BU1NFUlRf
RU5BQkxFRCkuICBUaGlzIG1lYW5zIHRoYXQgd2UgY2FuIHNldAorICAgICAgICAgICAgV1RGX0FT
U0VSVF9FTkFCTEVEIGFuZCBKU0NfQVNTRVJUX0VOQUJMRUQgdG8gdHJ1ZSB3aGlsZSBsZWF2aW5n
IEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICBvZmYsIHdoaWNoIGVmZmVjdGl2ZWx5IGJ1aWxk
cyBpbiBhbGwgdGhlIHN1cHBvcnQgZm9yIHJ1bm5pbmcgd2l0aCBkZWJ1ZworICAgICAgICAgICAg
QVNTRVJUcyBidXQgbm90IGFjdHVhbGx5IGRvaW5nIGFueSBvZiB0aGUgQVNTRVJUcy4KKworICAg
ICAgICBJbiBXVEYgYW5kIEpTQydzIGNvbmZpZy5oLCB3ZSBhbHNvIGFkZGVkIGNoZWNrcyBpZiBX
VEZfQVNTRVJUX0VOQUJMRUQgYW5kCisgICAgICAgIEpTQ19BU1NFUlRfRU5BQkxFRCBhcmUgdHJ1
ZS4gIElmIHNvLCB3ZSBvdmVycmlkZSBBU1NFUlRfRU5BQkxFRCB0byBiZSB0cnVlIHRoZXJlLgor
CisgICAgICAgICAgICBXaXRoIHRoaXMsIHRoZSBBU1NFUlRzIGFyZSBlbmFibGVkIGluIFdURiBh
bmQgSlNDIC5jcHAgZmlsZXMuCisKKyAgICAgICAgICAgIFRoaXMgYWxzbyBtZWFucyB0aGF0IEFT
U0VSVHMgaW4gV1RGIGFuZCBKU0MgZnVuY3Rpb25zIHRoYXQgYXJlIGlubGluZWQgaW50bworICAg
ICAgICAgICAgV2ViQ29yZSAoYW5kIGFib3ZlKSB3aWxsIG5vdCBiZSBlbmFibGVkLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggZGlkIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKKworICAgICAgICAxLiBD
aGFuZ2VkIGEgZmV3IEFTU0VSVHMgdG8gQVNTRVJUX1VOVVNFRHMuICBUaGlzIGlzIG5lZWRlZCBi
ZWNhdXNlIFdlYkNvcmUKKyAgICAgICAgICAgY29kZSBtYXkgbm93IGJ1aWxkIGluIEFTU0VSVCBz
dXBwb3J0IGNvZGUgdGhhdCBkZWZpbmUgdmFyaWFibGVzLCBidXQgbm93CisgICAgICAgICAgIGFj
dHVhbGx5IGJ1aWxkIGluIHRoZSBBU1NFUlQgdGhhdCB1c2UgdGhvc2UgdmFyaWFibGVzLgorCisg
ICAgICAgIDIuIEluIGNhc2VzIHdoZXJlIHRoZSBjaGFuZ2UgaXMgbWluaW1hbCwgd2UgbW92ZSBz
b21lIGNvZGUgYXJvdW5kIHNvIHRoYXQgd2UgY2FuCisgICAgICAgICAgIHRlc3QgZm9yICIjaWYg
QVNTRVJUX0VOQUJMRUQiIGluc3RlYWQgb2YgIiNpZiAhQVNTRVJUX0VOQUJMRUQiLgorCisgICAg
ICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNNjRBc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6
CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRh
dGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAo
SlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpMb2NhbFdyaXRlcik6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpj
b3B5Q29tcGFjdEFuZExpbmtDb2RlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUHJvYmVTdGFjay5j
cHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6U3RhY2spOgorICAgICAgICAqIGFzc2Vt
Ymxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgICogYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHA6
CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM01lbW9yeVZh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZSk6Cisg
ICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAgICAgICAqIGIzL0IzVHlwZS5oOgorICAgICAg
ICAqIGIzL0IzVHlwZU1hcC5oOgorICAgICAgICAqIGIzL0IzV2lkdGguaDoKKyAgICAgICAgKiBi
My9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OnByZXBh
cmVGb3JHZW5lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVBbmRBbGxv
Y2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBbGxvY2F0ZVJl
Z2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmg6CisgICAgICAgICogYjMvYWlyL0FpckFs
bG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWly
QXJnLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgICogYjMvYWlyL0Fp
ckNvZGUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjplbWl0U2h1ZmZsZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbkV4
ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVF
eGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAg
KiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbFZhcmlhbnQu
Y3BwOgorICAgICAgICAoSlNDOjp2YXJpYW50TGlzdFdpdGhWYXJpYW50KToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVuc3VyZUNh
dGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrSGFzaC5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6OmR1bXAg
Y29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAg
ICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvUmVnaXN0ZXJJRC5oOgor
ICAgICAgICAoSlNDOjpSZWdpc3RlcklEOjpSZWdpc3RlcklEKToKKyAgICAgICAgKEpTQzo6UmVn
aXN0ZXJJRDo6c2V0SW5kZXgpOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAqIGRlYnVn
Z2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlbW92ZUJyZWFrcG9p
bnQpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyRXZhbEVuYWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6RGVidWdnZXJFdmFsRW5hYmxlcjo6RGVidWdnZXJFdmFsRW5hYmxlcik6CisgICAgICAg
IChKU0M6OkRlYnVnZ2VyRXZhbEVuYWJsZXI6On5EZWJ1Z2dlckV2YWxFbmFibGVyKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6b2JzZXJ2ZVRyYW5z
aXRpb25zKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVl
OjptZXJnZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0
ZW5jeSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNS
ZWdpc3RlcmVkIGNvbnN0KToKKyAgICAgICAgKiBkZmcvREZHQXJpdGhNb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6ZG9lc092ZXJmbG93KToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpk
aWRMaW5rKToKKyAgICAgICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkNGQVBoYXNlOjpwZXJmb3JtQmxvY2tDRkEpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24u
aDoKKyAgICAgICAgKEpTQzo6REZHOjp2YWxpZGF0aW9uRW5hYmxlZCk6CisgICAgICAgICogZGZn
L0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OmZpbmFs
aXplQ2F0Y2hFbnRyeXBvaW50cyk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50
cy5oOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRv
ZXNHQyk6CisgICAgICAgICogZGZnL0RGR0VkZ2UuaDoKKyAgICAgICAgKEpTQzo6REZHOjpFZGdl
OjptYWtlV29yZCk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0pJVENv
ZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmZpbmFsaXplT1NSRW50cnlwb2lu
dHMpOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTU0FDb252ZXJzaW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1Njb3JlQm9h
cmQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTY29yZUJvYXJkOjphc3NlcnRDbGVhcik6CisgICAg
ICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2xv
d1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVu
dEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJpbmFyeVN3
aXRjaFN0cmluZ1JlY3Vyc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVDZWxsKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphc3NlcnRJc1JlZ2lzdGVyZWQgY29u
c3QpOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAg
ICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjYWxsUHJlZmxpZ2h0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y2FsbENoZWNrKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y3Jhc2gpOgorICAgICAgICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpvcGVyYXRpb25NYXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBoZWFwL0Js
b2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmFzc2VydE5v
VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9HQ1NlZ21lbnRlZEFycmF5Lmg6CisgICAgICAgIChK
U0M6OkdDQXJyYXlTZWdtZW50OjpHQ0FycmF5U2VnbWVudCk6CisgICAgICAgICogaGVhcC9HQ1Nl
Z21lbnRlZEFycmF5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5PFQ+
OjpjbGVhcik6CisgICAgICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OmV4cGFuZCk6Cisg
ICAgICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJldmlvdXMpOgorICAg
ICAgICAqIGhlYXAvSGFuZGxlU2V0LmNwcDoKKyAgICAgICAgKiBoZWFwL0hhbmRsZVNldC5oOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6TWFya2VkQmxvY2s6OmFzc2VydFZhbGlkQ2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjphc3NlcnRNYXJrc05vdFN0YWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNw
YWNlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJlZ2luTWFya2luZyk6CisgICAg
ICAgIChKU0M6Ok1hcmtlZFNwYWNlOjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OmFzc2VydE5vVW5zd2VwdCk6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlv
bi5jcHA6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oOgorICAgICAgICAoSlND
OjpQcmVjaXNlQWxsb2NhdGlvbjo6YXNzZXJ0VmFsaWRDZWxsIGNvbnN0KToKKyAgICAgICAgKiBo
ZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OlNsb3RWaXNp
dG9yKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5
KToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb3RvY29sVHlwZXMuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkJp
bmRpbmdUcmFpdHM8SlNPTjo6QXJyYXlPZjxUPj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBl
KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJ
bXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9vYmplY3RfZGVj
bGFyYXRpb24pOgorICAgICAgICAoQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJh
dG9yKToKKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5f
Z2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9lbnVtKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAgICAg
IChKU0M6OkpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyOjpKSVRPcGVyYXRpb25Q
cm9sb2d1ZUNhbGxGcmFtZVRyYWNlcik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cHJlcGFyZUNhbGxPcGVyYXRpb24pOgorICAgICAg
ICAqIGppdC9CaW5hcnlTd2l0Y2guY3BwOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OkJp
bmFyeVN3aXRjaCk6CisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwU3R1YkFyZ3MpOgorICAgICAgICAqIGppdC9DYWxsRnJhbWVT
aHVmZmxlci5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjplbWl0RGVsdGFD
aGVjayk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjphc3NlcnRTdGFja1BvaW50
ZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX2xvb3BfaGludCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9n
ZXRfZnJvbV9zY29wZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlND
OjpsaW5rUG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cDoKKyAgICAgICAgKEpTQzo6ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKToKKyAgICAgICAgKiBsbGlu
dC9MTEludERhdGEuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2Vy
dGlvbnMpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAg
IChKU0M6OmlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46
OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAg
ICAgICAoSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6c2V0TmVlZHNPdmVyZmxvd0NoZWNrKToK
KyAgICAgICAgKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXI6OmNsZWFyTmVlZHNPdmVyZmxvd0No
ZWNrKToKKyAgICAgICAgKiBydW50aW1lL0J1dHRlcmZseS5oOgorICAgICAgICAoSlNDOjpDb250
aWd1b3VzRGF0YTo6Q29udGlndW91c0RhdGEpOgorICAgICAgICAoSlNDOjpDb250aWd1b3VzRGF0
YTo6RGF0YTo6RGF0YSk6CisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1wbC5oOgorICAgICAg
ICAoSlNDOjpIYXNoTWFwSW1wbDo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgIChK
U0M6Okhhc2hNYXBJbXBsOjphc3NlcnRCdWZmZXJJc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjptZXRob2RUYWJs
ZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YXNzZXJ0VHlw
ZUluZm9GbGFnSW52YXJpYW50cyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNG
aW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnZhbGlkYXRlUHV0T3duRGF0YVByb3Bl
cnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6YXNzZXJ0VmFyaWFibGVJc0lu
VGhpc09iamVjdCk6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAq
IHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5o
OgorICAgICAgICAoSlNDOjpzY3JpYmJsZUZyZWVDZWxscyk6CisgICAgICAgICogcnVudGltZS9P
cHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Y29tcHV0ZUNhblVzZUpJVCk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAo
SlNDOjpWTTo6Y2FuVXNlSklUKToKKyAgICAgICAgKiBydW50aW1lL1Zhck9mZnNldC5oOgorICAg
ICAgICAoSlNDOjpWYXJPZmZzZXQ6OmNoZWNrU2FuaXR5IGNvbnN0KToKKyAgICAgICAgKiBydW50
aW1lL1dlYWtNYXBJbXBsLmg6CisgICAgICAgIChKU0M6OldlYWtNYXBJbXBsOjpjaGVja0NvbnNp
c3RlbmN5IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw6OmFzc2VydEJ1ZmZlcklz
RW1wdHkgY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OnZhbGlkYXRlSW5zdCk6CisgICAgICAg
ICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNl
QW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI6OnZhbGlkYXRpb25GYWlsIGNvbnN0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkxMSW50R2VuZXJhdG9yOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiB3YXNtL1dhc21Q
bGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENh
bmNlbElmTGFzdCk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oOgorICAgICAg
ICAqIHdhc20vV2FzbVNlY3Rpb25zLmg6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KToK
KyAgICAgICAgKiB3YXNtL1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206Oldv
cmtsaXN0OjplbnF1ZXVlKToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0
aW9uOjpwcmV2aW91c0luc3RhbmNlT2Zmc2V0IGNvbnN0KToKKwogMjAyMC0wMS0wNSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgSmF2YVNjcmlwdDog
SW52YWxpZCBkYXRlIHBhcnNlIGZvciBJU08gODYwMSBzdHJpbmdzIHdoZW4gbm8gdGltZXpvbmUg
Z2l2ZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY29uZmlnLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtMTYsOSArMTYs
MjUgQEAKICAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKgogICovCiAKKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KKworI2lm
IEFTQU5fRU5BQkxFRAorI2lmbmRlZiBKU0NfQVNTRVJUX0VOQUJMRUQKKyNkZWZpbmUgSlNDX0FT
U0VSVF9FTkFCTEVEIDEKKyNlbmRpZgorI2VuZGlmCisKKy8vIFRoZSBidWlsZCBjb25maWcgbWF5
IG92ZXJyaWRlIEpTQ19BU1NFUlRfRU5BQkxFRCB0byBlbmFibGUgdGVzdGluZyB3aXRoCisvLyBk
ZWJ1ZyBBU1NFUlRzIGZvciBXVEYgY29kZSBvbiByZWxlYXNlIGJ1aWxkcyB3aXRob3V0IG5lY2Vz
c2FyaWx5IGVuYWJsaW5nCisvLyBkZWJ1ZyBBU1NFUlRzIGZvciBhbGwgY2xpZW50cyBvZiBKU0Mu
CisjaWYgZGVmaW5lZChKU0NfQVNTRVJUX0VOQUJMRUQpICYmIEpTQ19BU1NFUlRfRU5BQkxFRAor
I2lmbmRlZiBBU1NFUlRfRU5BQkxFRAorI2RlZmluZSBBU1NFUlRfRU5BQkxFRCAxCisjZW5kaWYK
KyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYm
IGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2RlZmluZSBBU1NFUlRfRElTQUJMRUQgMAorI2RlZmluZSBKU0NfQVNTRVJUX0VOQUJM
RUQgMQogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgVVNFKENGKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBwZXJmb3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6ZW9mKGludCkpOwogICAgICAg
ICAgICAgY2FjaGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOwogICAgICAgICB9Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIE1lbU9wU2l6ZSBzaXplOwogICAgICAgICAgICAgYm9vbCBWOwpAQCAtMjYzMiw3
ICsyNjMyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKG9wYyA9PSBNZW1PcF9MT0FE
KTsKICAgICAgICAgICAgIEFTU0VSVCghKGltbTEyICYgfjB4MWZmKSk7CiAgICAgICAgIH0KLSNl
bmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIH0KIAogICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKHZvaWQqIHdoZXJlKQpAQCAtMjY1Myw3
ICsyNjUzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgcGVyZm9ybUpJVE1lbWNweSh3aGVyZSwg
Jmluc24sIHNpemVvZihpbnQpKTsKICAgICAgICAgICAgIGNhY2hlRmx1c2god2hlcmUsIHNpemVv
ZihpbnQpKTsKICAgICAgICAgfQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBEYXRhc2l6ZSBzZjsKICAgICAg
ICAgICAgIEFkZE9wIG9wOwpAQCAtMjY2OSw3ICsyNjY5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgQVNTRVJUKCFzaGlmdCk7CiAgICAgICAgICAgICBBU1NFUlQoIShpbW0xMiAmIH4weGZmOCkp
OwogICAgICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoUG9pbnRlcih2b2lkKiB3aGVyZSwgdm9pZCogdmFs
dWVQdHIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNz
ZW1ibGVyQnVmZmVyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsy
NDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBidWZmZXIuZW5zdXJlU3Bh
Y2UocmVxdWlyZWRTcGFjZSk7CiAgICAgICAgICAgICAgICAgbV9zdG9yYWdlQnVmZmVyID0gYnVm
ZmVyLm1fc3RvcmFnZS5idWZmZXIoKTsKICAgICAgICAgICAgICAgICBtX2luZGV4ID0gYnVmZmVy
Lm1faW5kZXg7Ci0jaWYgIWRlZmluZWQoTkRFQlVHKQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAog
ICAgICAgICAgICAgICAgIG1faW5pdGlhbEluZGV4ID0gbV9pbmRleDsKICAgICAgICAgICAgICAg
ICBtX3JlcXVpcmVkU3BhY2UgPSByZXF1aXJlZFNwYWNlOwogI2VuZGlmCkBAIC0yNzYsNyArMjc2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBc3NlbWJsZXJCdWZmZXImIG1fYnVm
ZmVyOwogICAgICAgICAgICAgY2hhciogbV9zdG9yYWdlQnVmZmVyOwogICAgICAgICAgICAgdW5z
aWduZWQgbV9pbmRleDsKLSNpZiAhZGVmaW5lZChOREVCVUcpCisjaWYgSlNDX0FTU0VSVF9FTkFC
TEVECiAgICAgICAgICAgICB1bnNpZ25lZCBtX2luaXRpYWxJbmRleDsKICAgICAgICAgICAgIHVu
c2lnbmVkIG1fcmVxdWlyZWRTcGFjZTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExp
bmtDb2RlKAogICAgICAgICAgICAganVtcHNUb0xpbmtbaV0uc2V0RnJvbSh3cml0ZVB0cik7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewor
ICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwganVtcENvdW50OyArK2kpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFN
YWNyb0Fzc2VtYmxlcjo6Y2FuQ29tcGFjdChqdW1wc1RvTGlua1tpXS50eXBlKCkpKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3Rh
Y2suY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1Byb2JlU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgU3Rh
Y2s6OlN0YWNrKFN0YWNrJiYgb3RoZXIpCiAgICAgLCBtX3BhZ2VzKFdURk1vdmUob3RoZXIubV9w
YWdlcykpCiB7CiAgICAgbV9zYXZlZFN0YWNrUG9pbnRlciA9IG90aGVyLm1fc2F2ZWRTdGFja1Bv
aW50ZXI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAg
IG90aGVyLm1faXNWYWxpZCA9IGZhbHNlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1Byb2JlU3RhY2suaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNXcml0ZXNUb0ZsdXNo
KCk7CiAgICAgdm9pZCBmbHVzaFdyaXRlcygpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1faXNWYWxp
ZDsgfQogI2VuZGlmCiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcml2YXRlOgogICAgIFN0YWNrQm91
bmRzIG1fc3RhY2tCb3VuZHM7CiAgICAgSGFzaE1hcDx2b2lkKiwgc3RkOjp1bmlxdWVfcHRyPFBh
Z2U+PiBtX3BhZ2VzOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5B
QkxFRAogICAgIGJvb2wgbV9pc1ZhbGlkIHsgdHJ1ZSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZvbGRQYXRoQ29uc3RhbnRzLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25z
dGFudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIFZlY3RvcjxPdmVycmlkZT4mIGZvclZhbHVlID0KICAgICAgICAgICAgICAgICBvdmVy
cmlkZXMuYWRkKHZhbHVlLCBWZWN0b3I8T3ZlcnJpZGU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKIAot
ICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIGlmIChKU0Nf
QVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE92ZXJyaWRlJiBv
dGhlck92ZXJyaWRlIDogZm9yVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQob3RoZXJPdmVycmlkZSwgb3RoZXJPdmVycmlkZS5ibG9jayAhPSBvdmVycmlkZS5ibG9jayk7
CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRv
QWlyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
TG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAKICNpbmNsdWRl
IDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAotI2lmIEFTU0VS
VF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9X
QVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTM2ODgsNyArMzY4OCw3IEBAIHZvaWQgbG93ZXJU
b0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAK
LSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVU
VVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM01lbW9yeVZhbHVlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShNZW1vcnlWYWx1ZTo6TWUKICAgICAs
IG1fcmFuZ2UocmFuZ2UpCiAgICAgLCBtX2ZlbmNlUmFuZ2UoZmVuY2VSYW5nZSkKIHsKLSAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgc3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgTG9hZDoKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTA2LDcgKzEwNiw3IEBAIE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1
ZShNZW1vcnlWYWx1ZTo6TWUKIE1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1ZShNZW1vcnlWYWx1ZTo6
TWVtb3J5VmFsdWVMb2FkSW1wbGllZCwgS2luZCBraW5kLCBPcmlnaW4gb3JpZ2luLCBWYWx1ZSog
cG9pbnRlciwgTWVtb3J5VmFsdWU6Ok9mZnNldFR5cGUgb2Zmc2V0LCBIZWFwUmFuZ2UgcmFuZ2Us
IEhlYXBSYW5nZSBmZW5jZVJhbmdlKQogICAgIDogTWVtb3J5VmFsdWUoa2luZCwgSW50MzIsIG9y
aWdpbiwgcG9pbnRlciwgb2Zmc2V0LCByYW5nZSwgZmVuY2VSYW5nZSkKIHsKLSAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgeworICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAg
c3dpdGNoIChraW5kLm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgTG9hZDhaOgogICAgICAgICBj
YXNlIExvYWQ4UzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJ
R05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRpZgogCkBAIC0zNzUsNyArMzc1
LDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wYwogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJM
RUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19FTkQKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVHlwZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJCM0NvbW1vbi5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lm
IEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5f
VFlQRV9XQVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkIzCiAKIH0gLy8gbmFtZXNwYWNlIFdURgog
Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JF
VFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNUeXBlTWFwLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkIzVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCi0jaWYgQVNTRVJU
X0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dB
Uk5JTkdTX0JFR0lOCiAjZW5kaWYKIApAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19B
U1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dpZHRoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgIkIzQmFuay5oIgogI2luY2x1ZGUgIkIzVHlwZS5oIgogCi0j
aWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVS
Tl9UWVBFX1dBUk5JTkdTX0JFR0lOCiAjZW5kaWYKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6QjMKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVf
UkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlUmVnaXN0ZXJzQW5kU3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5k
U3RhY2tBbmRHZW5lcmF0ZUNvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNyArMjg2LDcg
QEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpwcmVwYQogICAgICAgICBkYXRh
LnNwaWxsU2xvdCA9IG1fY29kZS5hZGRTdGFja1Nsb3QoOCwgU3RhY2tTbG90S2luZDo6U3BpbGwp
OwogICAgICAgICBkYXRhLnJlZyA9IFJlZygpOwogICAgICAgICBtX21hcFt0bXBdID0gZGF0YTsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1f
YWxsVG1wc1t0bXAuYmFuaygpXS5hcHBlbmQodG1wKTsKICNlbmRpZgogICAgIH07CkBAIC0zMjQs
NyArMzI0LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpwcmVwYQogICAg
IGxvd2VyU3RhY2tBcmdzKG1fY29kZSk7CiAKICAgICAvLyBWZXJpZnkgbm9uZSBvZiB0aGVzZSBw
YXNzZXMgYWRkIGFueSB0bXBzLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICBmb3JFYWNoQmFuayhbJl0gKEJhbmsgYmFuaykgewogICAgICAgICBBU1NF
UlQobV9hbGxUbXBzW2JhbmtdLnNpemUoKSAtIG1fcmVnaXN0ZXJzW2JhbmtdLnNpemUoKSA9PSBt
X2NvZGUubnVtVG1wcyhiYW5rKSk7CiAgICAgfSk7CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBH
ZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpnZW5lcgogICAgICAgICB9CiAKICAgICAgICAg
Zm9yRWFjaEJhbmsoWyZdIChCYW5rIGJhbmspIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBldmVyeXRoaW5n
IGlzIHNwaWxsZWQgYXQgYmxvY2sgYm91bmRhcmllcy4gV2UgZG8gdGhpcyBhZnRlciB3ZSBwcm9j
ZXNzIGVhY2ggYmxvY2sKICAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IGhhdmUgdG8gd2FsayBh
bGwgVG1wcywgc2luY2UgI1RtcHMgPj4gI0F2YWlsYWJsZSByZWdzLiBJbnN0ZWFkLCB3ZSB3YWxr
IHRoZSByZWdpc3RlciBmaWxlIGF0CiAgICAgICAgICAgICAvLyBlYWNoIGJsb2NrIGJvdW5kYXJ5
IGFuZCBjbGVhciBlbnRyaWVzIGluIHRoaXMgbWFwLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJl
Z2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0Fu
ZEdlbmVyYXRlQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAKICAgICBUbXBNYXA8VG1wRGF0YT4gbV9tYXA7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgVmVjdG9yPFRtcD4gbV9hbGxUbXBzW251bUJhbmtz
XTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9j
YXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
bGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
Miw3ICsxNjIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc0JlZW5TaW1wbGlmaWVkKElu
ZGV4VHlwZSB0bXBJbmRleCkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIGlmICghIW1f
Y29hbGVzY2VkVG1wc1t0bXBJbmRleF0pCiAgICAgICAgICAgICAgICAgQVNTRVJUKGdldEFsaWFz
KHRtcEluZGV4KSAhPSB0bXBJbmRleCk7CiAgICAgICAgIH0KQEAgLTY0OCw3ICs2NDgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIGFkZGVkIHRvIHRoZSBzZWxlY3Qgc3RhY2ssIGl0J3Mgbm90IG9u
IGVpdGhlciBsaXN0LCBidXQgb25seSBvbiB0aGUgc2VsZWN0IHN0YWNrLgogICAgICAgICAvLyBP
bmNlIG9uIHRoZSBzZWxlY3Qgc3RhY2ssIGxvZ2ljYWxseSwgaXQncyBubyBsb25nZXIgaW4gdGhl
IGludGVyZmVyZW5jZSBncmFwaC4KICAgICAgICAgYXV0byBhc3NlcnRJbnZhcmlhbnRzID0gWyZd
ICgpIHsKLSAgICAgICAgICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgICAgICBpZiAo
IUpTQ19BU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBpZiAoIXNob3VsZFZhbGlkYXRlSVJBdEVhY2hQaGFzZSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTY4OSw3ICs2ODksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0gd2hpbGUgKGNoYW5nZWQpOwogCi0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9z
aW1wbGlmeVdvcmtsaXN0LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQobV9zcGlsbFdvcmts
aXN0LmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBJbmRleFR5cGUgZmlyc3ROb25SZWdJbmRleCA9
IG1fbGFzdFByZWNvbG9yZWRSZWdpc3RlckluZGV4ICsgMTsKQEAgLTcyNyw3ICs3MjcsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICAvLyBObyBjb2FsZXNjaW5nIHdpbGwgcmVtb3ZlIHRoZSBp
bnRlcmZlcmVuY2UuCiAgICAgICAgICAgICBtb3ZlSW5kZXggPSBVSU5UX01BWDsKIAotICAgICAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIGlmIChKU0NfQVNTRVJU
X0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBpZiAoaXNQcmVjb2xvcmVkKHYpKQogICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaXNQcmVjb2xvcmVkKHUpKTsKICAgICAgICAgICAgIH0KQEAg
LTkxMCw3ICs5MTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBpZiAodHJhY2VEZWJ1ZykK
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIk1vdmluZyB0bXAgIiwgdG1wSW5kZXgsICIgZnJv
bSBzcGlsbCBsaXN0IHRvIHNpbXBsaWZ5IGxpc3QgYmVjYXVzZSBpdCdzIGRlZ3JlZSBpcyBub3cg
bGVzcyB0aGFuIGsiKTsKIAotICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAg
ICAgICAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICAgICAgICAgIEFTU0VSVCht
X3Vuc3BpbGxhYmxlVG1wcy5jb250YWlucyh0bXBJbmRleCkgfHwgbV9zcGlsbFdvcmtsaXN0LmNv
bnRhaW5zKHRtcEluZGV4KSk7CiAgICAgICAgICAgICBtX3NwaWxsV29ya2xpc3QucXVpY2tDbGVh
cih0bXBJbmRleCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
QXJnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZQUklu
Zm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAh
SlNDX0FTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNl
bmRpZgogCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEFyZwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAor
I2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19FTkQK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJCM1dpZHRoLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhSlNDX0FT
U0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRpZgog
CkBAIC0xNDk0LDcgKzE0OTQsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6
QjM6OkFpCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYg
IUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsKIAogY2xhc3MgUHJvY2VkdXJlOwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUpTQ19B
U1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lOCiAjZW5kaWYK
IApAQCAtMzkyLDcgKzM5Miw3IEBAIHByaXZhdGU6CiAKIH0gfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkIzOjpBaXIKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQK
IElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19FTkQKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVtaXRTaHVmZmxlLmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMyArMTM5LDEzIEBAIFZlY3RvcjxJbnN0PiBlbWl0
U2h1ZmZsZSgKICAgICAgICAgfSk7CiAgICAgCiAgICAgLy8gRmlyc3QgdmFsaWRhdGUgdGhhdCB0
aGlzIGlzIHRoZSBraW5kIG9mIHNodWZmbGUgdGhhdCB3ZSBrbm93IGhvdyB0byBkZWFsIHdpdGgu
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGZvciAo
Y29uc3QgU2h1ZmZsZVBhaXImIHBhaXIgOiBwYWlycykgewogICAgICAgICBBU1NFUlQocGFpci5z
cmMoKS5pc0JhbmsoYmFuaykpOwogICAgICAgICBBU1NFUlQocGFpci5kc3QoKS5pc0JhbmsoYmFu
aykpOwogICAgICAgICBBU1NFUlQocGFpci5kc3QoKS5pc1RtcCgpIHx8IHBhaXIuZHN0KCkuaXNN
ZW1vcnkoKSk7CiAgICAgfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBK
U0NfQVNTRVJUX0VOQUJMRUQKIAogICAgIC8vIFRoZXJlIGFyZSB0d28gcG9zc2libGUga2luZHMg
b2Ygb3BlcmF0aW9ucyB0aGF0IHdlIHdpbGwgZG86CiAgICAgLy8KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDcgKzIwNSw3IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICBtZXRhZGF0YS5vdmVycmlk
ZU5hbWUobmFtZSk7CiAgICAgbWV0YWRhdGEuc2V0RW5kUG9zaXRpb24ocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSk7CiAKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCB8fCBPcHRpb25zOjp2YWxp
ZGF0ZUJ5dGVjb2RlKCkpIHsKKyAgICBpZiAoVU5MSUtFTFkoSlNDX0FTU0VSVF9FTkFCTEVEIHx8
IE9wdGlvbnM6OnZhbGlkYXRlQnl0ZWNvZGUoKSkpIHsKICAgICAgICAgSlNUZXh0UG9zaXRpb24g
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZUZyb21QYXJzZXI7CiAgICAgICAgIFBhcnNlckVycm9y
IGVycm9yOwogICAgICAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk4Myw3ICsxOTgzLDcgQEAgVHlwZWRBcnJheVR5cGUgQWNjZXNzQ2FzZTo6dG9U
eXBlZEFycmF5VAogICAgIH0KIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNT
RVJUX0VOQUJMRUQKIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShyZXF1aXJlc0ludDMy
UHJvcGVydHlDaGVjaygpICYmIHJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgpKSk7CkBAIC0x
OTkzLDcgKzE5OTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgpKTsK
ICAgICB9CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nl
c3NDYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fj
Y2Vzc0Nhc2UuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FjY2Vzc0Nhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDcgKzIzOSw3IEBAIHB1
YmxpYzoKICAgICBCb3g8SWRlbnRpZmllcj4gaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQogCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0dWJJbmZvJik7CiAj
ZWxzZQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KFN0cnVjdHVyZVN0
dWJJbmZvJikgeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsVmFyaWFudC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUs
NyBAQCBDYWxsVmFyaWFudExpc3QgdmFyaWFudExpc3RXaXRoVmFyaWFudChjCiAgICAgaWYgKCEh
dmFyaWFudFRvQWRkKQogICAgICAgICByZXN1bHQuYXBwZW5kKHZhcmlhbnRUb0FkZCk7CiAgICAg
Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVE
KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IGkgKyAxOyBqIDwgcmVzdWx0LnNpemUo
KTsgKytqKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSAhPSByZXN1bHRbal0pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3ODMsNyArMTc4Myw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb20KICAgICBPcENhdGNoIG9wID0gaW5zdHJ1Y3Rpb24t
PmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBvcC5tZXRhZGF0YSh0aGlzKTsK
ICAgICBpZiAoISFtZXRhZGF0YS5tX2J1ZmZlcikgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGF1dG8qIHJhcmVE
YXRhID0gbV9yYXJlRGF0YS5nZXQoKTsKQEAgLTE3OTUsNyArMTc5NSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjplbnN1cmVDYXRjaExpdmVuZXNzSXNDb20KICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBBU1NFUlQoZm91bmQpOwotI2VuZGlmCisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFC
TEVECiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgQ29kZUJsb2NrSGFzaDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3UKIHsKICAgICBzdGQ6OmFycmF5PGNoYXIsIDc+IGJ1ZmZlciA9IGludGVnZXJU
b1NpeENoYXJhY3Rlckhhc2hTdHJpbmcobV9oYXNoKTsKICAgICAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgQ29kZUJsb2NrSGFzaCByZWNvbXB1dGUo
YnVmZmVyLmRhdGEoKSk7CiAgICAgQVNTRVJUKHJlY29tcHV0ZSA9PSAqdGhpcyk7Ci0jZW5kaWYg
Ly8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIAog
ICAgIG91dC5wcmludChidWZmZXIuZGF0YSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgU3RydWN0dXJl
U3R1YkluZm86OnNldENhY2hlVHlwZShDYWMKICAgICBtX2NhY2hlVHlwZSA9IG5ld0NhY2hlVHlw
ZTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OmNoZWNrQ29uc2lzdGVuY3koKQogewogICAgIGlmICh0aGlz
VmFsdWVJc0luVGhpc0dQUigpKSB7CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6Y2hlY2tDb25zaXN0ZW5jeQogICAgICAgICBSRUxFQVNFX0FTU0VSVChoYXNDb25z
dGFudElkZW50aWZpZXIpOwogICAgIH0KIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRf
RU5BQkxFRAogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCB0aGlzVmFsdWVJc0luVGhpc0dQUigpIGNvbnN0IHsgcmV0dXJuIGFjY2Vzc1R5cGUgPT0gQWNj
ZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOyB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CiAjZWxzZQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgeyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0MSw4ICs5NDEsOCBAQCBSZWdp
c3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCCiAKIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChVTkxJS0VMWShtX2lkZW50ID09IGdl
bmVyYXRvci52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzc2VydFByaXZhdGVO
YW1lKCkpKSB7Ci0gICAgICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgaWYgKCFKU0NfQVNT
RVJUX0VOQUJMRUQpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1faWRlbnQgPT0gZ2VuZXJhdG9y
LnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXNzZXJ0UHJpdmF0ZU5hbWUoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNVbmRlZmluZWQoKSkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9SZWdpc3RlcklELmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0ZXJJRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKCkKICAgICAgICAgICAgIDogbV9yZWZDb3VudCgwKQogICAgICAgICAgICAgLCBt
X2lzVGVtcG9yYXJ5KGZhbHNlKQotI2lmbmRlZiBOREVCVUcKKyNpZiBKU0NfQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgICAgICwgbV9kaWRTZXRJbmRleChmYWxzZSkKICNlbmRpZgogICAgICAgICB7
CkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZkNv
dW50KDApCiAgICAgICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikK
ICAgICAgICAgICAgICwgbV9pc1RlbXBvcmFyeShmYWxzZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAsIG1fZGlkU2V0SW5kZXgodHJ1ZSkKICNl
bmRpZgogICAgICAgICB7CkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgOiBtX3JlZkNvdW50KDApCiAgICAgICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlcihpbmRleCkpCiAgICAgICAgICAgICAsIG1faXNUZW1wb3JhcnkoZmFsc2Up
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgLCBt
X2RpZFNldEluZGV4KHRydWUpCiAjZW5kaWYKICAgICAgICAgewpAQCAtNzEsNyArNzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIHNldEluZGV4KFZpcnR1YWxSZWdpc3RlciBp
bmRleCkKICAgICAgICAgewotI2lmbmRlZiBOREVCVUcKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQK
ICAgICAgICAgICAgIG1fZGlkU2V0SW5kZXggPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICBt
X3ZpcnR1YWxSZWdpc3RlciA9IGluZGV4OwpAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBpbnQgbV9yZWZDb3VudDsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
dmlydHVhbFJlZ2lzdGVyOwogICAgICAgICBib29sIG1faXNUZW1wb3Jhcnk7Ci0jaWZuZGVmIE5E
RUJVRworI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICBib29sIG1fZGlkU2V0SW5kZXg7
CiAjZW5kaWYKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMTQgKzQ1MSwxNCBA
QCB2b2lkIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pCiAgICAgdG9nZ2xlQnJl
YWtwb2ludCgqYnJlYWtwb2ludCwgQnJlYWtwb2ludERpc2FibGVkKTsKIAogICAgIEJyZWFrcG9p
bnRzTGlzdCYgYnJlYWtwb2ludHMgPSAqYnJlYWtzSXQtPnZhbHVlOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAg
ICAgZm9yIChCcmVha3BvaW50KiBjdXJyZW50ID0gYnJlYWtwb2ludHMuaGVhZCgpOyBjdXJyZW50
ICYmICFmb3VuZDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHQoKSkgewogICAgICAgICBpZiAoY3Vy
cmVudC0+aWQgPT0gYnJlYWtwb2ludC0+aWQpCiAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAg
ICAgfQogICAgIEFTU0VSVChmb3VuZCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VO
QUJMRUQKIAogICAgIG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50LnJlbW92ZShpZEl0KTsKICAg
ICBicmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXJFdmFsRW5hYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckV2YWxFbmFibGVyLmgJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckV2YWxF
bmFibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAg
RGVidWdnZXJFdmFsRW5hYmxlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2RlIG1v
ZGUgPSBNb2RlOjpFdmFsT25DdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICA6IG1fZ2xvYmFsT2Jq
ZWN0KGdsb2JhbE9iamVjdCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgICAgICwgbV9tb2RlKG1vZGUpCiAjZW5kaWYKICAgICAgICAgCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZXZhbFdhc0Rpc2FibGVkID0gIWdsb2Jh
bE9iamVjdC0+ZXZhbEVuYWJsZWQoKTsKICAgICAgICAgICAgIGlmIChtX2V2YWxXYXNEaXNhYmxl
ZCkKICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldEV2YWxFbmFibGVkKHRydWUsIGds
b2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIGlmIChtX21vZGUgPT0g
TW9kZTo6RXZhbE9uR2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5KQogICAgICAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+c2V0R2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5KGdsb2JhbE9iamVj
dCk7CiAjZW5kaWYKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ2xvYmFsT2JqZWN0OwogICAgICAgICAgICAgaWYg
KG1fZXZhbFdhc0Rpc2FibGVkKQogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0RXZh
bEVuYWJsZWQoZmFsc2UsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkp
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ICAgIGlmIChtX21vZGUgPT0gTW9kZTo6RXZhbE9uR2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5
KQogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0R2xvYmFsT2JqZWN0QXREZWJ1Z2dl
ckVudHJ5KG51bGxwdHIpOwogI2VuZGlmCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFsT2JqZWN0OwogICAgIGJvb2wgbV9ldmFs
V2FzRGlzYWJsZWQgeyBmYWxzZSB9OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNT
RVJUX0VOQUJMRUQKICAgICBEZWJ1Z2dlckV2YWxFbmFibGVyOjpNb2RlIG1fbW9kZTsKICNlbmRp
ZgogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDM3OCw3ICs0Mzc4LDcgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgIEFic3RyYWN0VmFsdWU6OlRyYW5zaXRpb25zT2JzZXJ2ZXIg
dHJhbnNpdGlvbnNPYnNlcnZlcih2ZWN0b3IpOwogICAgIGZvckFsbFZhbHVlcyhjbG9iYmVyTGlt
aXQsIHRyYW5zaXRpb25zT2JzZXJ2ZXIpOwogICAgIAotICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7CisgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAvLyBXZSBkb24ndCBu
ZWVkIHRvIGNsYWltIHRvIGJlIGluIGEgY2xvYmJlcmVkIHN0YXRlIGJlY2F1c2Ugbm9uZSBvZiB0
aGUgVHJhbnNpdGlvbjo6cHJldmlvdXMgc3RydWN0dXJlcyBhcmUgd2F0Y2hhYmxlLgogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2ZWN0b3Iuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgQVNT
RVJUKCF2ZWN0b3JbaV0ucHJldmlvdXMtPmRmZ1Nob3VsZFdhdGNoKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0
cmFjdFZhbHVlOjpub3JtYWxpegogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiB2b2lkIEFic3RyYWN0VmFsdWU6OmNo
ZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIGlmICghKG1fdHlwZSAmIFNwZWNDZWxsKSkg
ewpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWdpc3Rl
cmVkKEcKIHsKICAgICBtX3N0cnVjdHVyZS5hc3NlcnRJc1JlZ2lzdGVyZWQoZ3JhcGgpOwogfQot
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQK
IAogUmVzdWx0VHlwZSBBYnN0cmFjdFZhbHVlOjpyZXN1bHRUeXBlKCkgY29uc3QKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDcgKzI4Myw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICAgICAgaWYgKG90aGVyLmlzQ2xlYXIoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxF
RAogICAgICAgICBBYnN0cmFjdFZhbHVlIG9sZE1lID0gKnRoaXM7CiAjZW5kaWYKICAgICAgICAg
Ym9vbCByZXN1bHQgPSBmYWxzZTsKQEAgLTQzMSwxMiArNDMxLDEyIEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICAgICAgICAgIHx8ICFhcnJheU1vZGVzQXJlQ2xlYXJPclRvcChtX2FycmF5
TW9kZXMpOwogICAgIH0KICAgICAKLSNpZiBBU1NFUlRfRElTQUJMRUQKLSAgICB2b2lkIGNoZWNr
Q29uc2lzdGVuY3koKSBjb25zdCB7IH0KLSAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChHcmFw
aCYpIGNvbnN0IHsgfQotI2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKICAgICB2b2lkIGFzc2Vy
dElzUmVnaXN0ZXJlZChHcmFwaCYpIGNvbnN0OworI2Vsc2UKKyAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKSBjb25zdCB7IH0KKyAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChHcmFwaCYpIGNv
bnN0IHsgfQogI2VuZGlmCiAKICAgICBSZXN1bHRUeXBlIHJlc3VsdFR5cGUoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCBkb2VzT3ZlcmZsb3coQXJpdGg6
Ok1vZGUgbW9kCiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBBcml0aDo6Tm90U2V0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAh
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgY2Fz
ZSBBcml0aDo6VW5jaGVja2VkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
IEJhc2ljQmxvY2s6OkJhc2ljQmxvY2soQnl0ZWNvZGVJbmRleCBieXQKICAgICAsIGludGVyc2Vj
dGlvbk9mQ0ZBSGFzVmlzaXRlZCh0cnVlKQogICAgICwgaXNPU1JUYXJnZXQoZmFsc2UpCiAgICAg
LCBpc0NhdGNoRW50cnlwb2ludChmYWxzZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlND
X0FTU0VSVF9FTkFCTEVECiAgICAgLCBpc0xpbmtlZChmYWxzZSkKICNlbmRpZgogICAgICwgaXNS
ZWFjaGFibGUoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgCiAgICAgdm9pZCBkaWRMaW5r
KCkKICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAog
ICAgICAgICBpc0xpbmtlZCA9IHRydWU7CiAjZW5kaWYKICAgICB9CkBAIC0xOTcsNyArMTk3LDcg
QEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNP
U1JUYXJnZXQ7CiAgICAgYm9vbCBpc0NhdGNoRW50cnlwb2ludDsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzTGlua2VkOwogI2VuZGlm
CiAgICAgYm9vbCBpc1JlYWNoYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZBUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDcgKzIzNSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVECisgICAgICAgICAgICBpZiAo
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAgICAgJiYgbV9zdGF0ZS5kaWRDbG9iYmVy
T3JGb2xkZWQoKSAhPSB3cml0ZXNPdmVybGFwKG1fZ3JhcGgsIG5vZGUsIEpTQ2VsbF9zdHJ1Y3R1
cmVJRCkpCiAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsIHRvQ1N0cmlu
ZygiQUktY2xvYmJlcml6ZSBkaXNhZ3JlZW1lbnQ7IEFJIHNheXMgIiwgbV9zdGF0ZS5jbG9iYmVy
U3RhdGUoKSwgIiB3aGlsZSBjbG9iYmVyaXplIHNheXMgIiwgd3JpdGVTZXQobV9ncmFwaCwgbm9k
ZSkpLmRhdGEoKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b21tb24uaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgYm9vbCBz
aG91bGREdW1wR3JhcGhBdEVhY2hQaGFzZShDCiAKIGlubGluZSBib29sIHZhbGlkYXRpb25FbmFi
bGVkKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAg
ICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBPcHRpb25zOjp2YWxpZGF0ZUdyYXBo
KCkgfHwgT3B0aW9uczo6dmFsaWRhdGVHcmFwaEF0RWFjaFBoYXNlKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENvbW1vbkRhdGE6OmZpbmFsaXplQ2F0Y2hF
bnRyeXBvaW50CiAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hF
bnRyeXBvaW50cy5lbmQoKSwKICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEm
IGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsgcmV0dXJuIGEuYnl0ZWNvZGVJbmRl
eCA8IGIuYnl0ZWNvZGVJbmRleDsgfSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlND
X0FTU0VSVF9FTkFCTEVECiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSArIDEgPCBjYXRjaEVu
dHJ5cG9pbnRzLnNpemUoKTsgKytpKQogICAgICAgICBBU1NFUlQoY2F0Y2hFbnRyeXBvaW50c1tp
XS5ieXRlY29kZUluZGV4IDw9IGNhdGNoRW50cnlwb2ludHNbaSArIDFdLmJ5dGVjb2RlSW5kZXgp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRj
aHBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3
ICsxMTMsNyBAQCBzdHJ1Y3QgQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50QWRhcHRvCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFdhdGNocG9pbnRTZXRUeXBlLCB0eXBlbmFtZSBBZGFwdG9yID0gU2V0
UG9pbnRlckFkYXB0b3I8V2F0Y2hwb2ludFNldFR5cGU+PgogY2xhc3MgR2VuZXJpY0Rlc2lyZWRX
YXRjaHBvaW50cyB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxF
RAogICAgIHR5cGVkZWYgSGFzaE1hcDxXYXRjaHBvaW50U2V0VHlwZSwgYm9vbD4gU3RhdGVNYXA7
CiAjZW5kaWYKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIERhdGFWaWV3U2V0OgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgY2FzZSBBcnJheVBvcDoKICAgICBjYXNl
IFB1c2hXaXRoU2NvcGU6CkBAIC0zOTksMTEgKzM5OSwxMSBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBWYWx1ZVBvdzoKICAgICBjYXNlIFZhbHVlQml0
Tm90OgogICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0jZWxzZQotICAgIC8vIFNlZSBjb21tZW50IGF0
IHRoZSB0b3AgZm9yIHdoeSBiZSBkZWZhdWx0IGZvciBhbGwgbm9kZXMgc2hvdWxkIGJlIHRvCisj
ZWxzZSAvLyBub3QgSlNDX0FTU0VSVF9FTkFCTEVECisgICAgLy8gU2VlIGNvbW1lbnQgYXQgdGhl
IHRvcCBmb3Igd2h5IHRoZSBkZWZhdWx0IGZvciBhbGwgbm9kZXMgc2hvdWxkIGJlIHRvCiAgICAg
Ly8gcmV0dXJuIHRydWUuCiAgICAgZGVmYXVsdDoKLSNlbmRpZgorI2VuZGlmIC8vIG5vdCBKU0Nf
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIENhbGxTdHJp
bmdDb25zdHJ1Y3RvcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVCh1
c2VLaW5kID49IDAgJiYgdXNlS2luZCA8IExhc3RVc2VLaW5kKTsKICAgICAgICAgc3RhdGljX2Fz
c2VydCgoc3RhdGljX2Nhc3Q8dWludHB0cl90PihMYXN0VXNlS2luZCkgPDwgMikgPCAoc3RhdGlj
X2Nhc3Q8dWludHB0cl90PigxKSA8PCBzaGlmdCgpKSwgIldlIHJlbHkgb24gdGhpcyBiZWluZyB0
cnVlIHRvIG5vdCBjbG9iYmVyIHRoZSBub2RlIHBvaW50ZXIuIik7CiAgICAgICAgIHVpbnRwdHJf
dCByZXN1bHQgPSBzaGlmdGVkVmFsdWUgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90Pih1c2VLaW5k
KSA8PCAyKSB8IChERkc6OmRvZXNLaWxsKGtpbGxTdGF0dXMpIDw8IDEpIHwgc3RhdGljX2Nhc3Q8
dWludHB0cl90PihERkc6OmlzUHJvdmVkKHByb29mU3RhdHVzKSk7Ci0gICAgICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAg
ICAgICAgIHVuaW9uIFUgewogICAgICAgICAgICAgICAgIFUoKSB7IHdvcmQgPSAwOyB9CiAgICAg
ICAgICAgICAgICAgdWludHB0cl90IHdvcmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Mzgs
OSArMjQzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0K
LQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
Ly8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3Jn
ZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJn
dW1lbnREZWZpbml0ZWx5OgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50TWF5YmU6CkBAIC0yNTMw
LDEwICsyNTI4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW52YWxpZGF0aW9uUG9pbnQ6
CiAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5OgogICAgICAgICAgICAgYnJl
YWs7Ci0jZWxzZQorI2Vsc2UgLy8gbm90IEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKKyNlbmRpZiAvLyBub3QgSlNDX0FTU0VS
VF9FTkFCTEVECiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3
IEBAIHZvaWQgSklUQ29kZTo6ZmluYWxpemVPU1JFbnRyeXBvaW50cygpCiAgICAgfTsKICAgICBz
dGQ6OnNvcnQob3NyRW50cnkuYmVnaW4oKSwgb3NyRW50cnkuZW5kKCksIGNvbXBhcmF0b3IpOwog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGF1dG8g
dmVyaWZ5SXNTb3J0ZWQgPSBbJl0gKGF1dG8mIG9zclZlY3RvcikgewogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpICsgMSA8IG9zclZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IEFTU0VSVChvc3JWZWN0b3JbaV0ubV9ieXRlY29kZUluZGV4IDw9IG9zclZlY3RvcltpICsgMV0u
bV9ieXRlY29kZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2Jq
ZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk0LDcgKzQ5NCw3IEBAIHB1
YmxpYzoKICAgICAgICAgZm9yIChOb2RlKiBpZGVudGlmaWVyIDogdG9Fc2NhcGUpCiAgICAgICAg
ICAgICBlc2NhcGVBbGxvY2F0aW9uKGlkZW50aWZpZXIpOwogCi0gICAgICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2FsbG9jYXRpb25zKQogICAgICAgICAgICAg
ICAgIEFTU0VSVF9VTlVTRUQoZW50cnksIGVudHJ5LnZhbHVlLmlzRXNjYXBlZEFsbG9jYXRpb24o
KSB8fCBvdGhlci5tX2FsbG9jYXRpb25zLmNvbnRhaW5zKGVudHJ5LmtleSkpOwogICAgICAgICB9
CkBAIC01MTksNyArNTE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhc3NlcnRJc1ZhbGlkKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIGlmICgh
SlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFBv
aW50ZXJzIHNob3VsZCBwb2ludCB0byBhbiBhY3R1YWwgYWxsb2NhdGlvbgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252
ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgR2V0U3RhY2ss
IG5vZGUtPm9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1f
c3RhY2tBY2Nlc3NEYXRhLmFkZCh2YXJpYWJsZS0+b3BlcmFuZCgpLCB2YXJpYWJsZS0+Zmx1c2hG
b3JtYXQoKSkpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisg
ICAgICAgICAgICAgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2FyZ3VtZW50R2V0dGVycy5hZGQoY2hpbGROb2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9hcmd1bWVudE1hcHBpbmcuYWRkKG5vZGUsIGNoaWxkTm9kZSk7CiAgICAgICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJk
LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Nv
cmVCb2FyZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2b2lkIGFzc2VydENsZWFyKCkKICAgICB7Ci0gICAgICAgIGlmIChBU1NFUlRfRElTQUJM
RUQpCisgICAgICAgIGlmICghSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKICAgICAgICAgLy8gRm9yIGV2ZXJ5IGVudHJ5IGluIHRoZSB1c2VkIGxpc3Qg
dGhlIHVzZSBjb3VudCBvZiB0aGUgdmlydHVhbCByZWdpc3RlciBzaG91bGQgYmUgemVybywgb3Ig
bWF4LCBkdWUgdG8gaXQgYmVpbmcgYSBwcmVzZXJ2ZWQgbG9jYWwuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBqaXQt
Pm1fb3JpZ2luID0gbV9vcmlnaW47CiAgICAgICAgIGdlbmVyYXRlSW50ZXJuYWwoaml0KTsKICAg
ICAgICAgaml0LT5tX291dE9mTGluZVN0cmVhbUluZGV4ID0gV1RGOjpudWxsb3B0OwotICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkK
ICAgICAgICAgICAgIGppdC0+bV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1Nsb3dQYXRoR2VuZXJh
dG9yRmVsbFRocm91Z2gpOwogICAgIH0KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWwo
KSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMDgsNyArMTIwOCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6IHsKICAgICAgICAgR1BS
UmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQp
IHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrQ2VsbCA9IG1faml0LmJy
YW5jaElmQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0
aFJlYXNvbihERkdJc05vdENlbGwpOwogICAgICAgICAgICAgY2hlY2tDZWxsLmxpbmsoJm1faml0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4OCw3ICsxODg4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgIH0KICAgICAKICAg
ICAvLyBQZXJmb3JtIHRoZSBtb3N0IGJhc2ljIHZlcmlmaWNhdGlvbiB0aGF0IGNoaWxkcmVuIGhh
dmUgYmVlbiB1c2VkIGNvcnJlY3RseS4KLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAg
IGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbmZvIDogbV9n
ZW5lcmF0aW9uSW5mbykKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpbmZvLmFsaXZlKCkp
OwogICAgIH0KQEAgLTEwOTU4LDcgKzEwOTU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEJpbmFyeVN3aXRjaFN0cgogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0
aGUgaW5wdXQgc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFsbCBvZiB0aGUgY2FzZXMsCiAgICAgICAg
IC8vIHNvIHdlIGp1c3QgY2hlY2sgbGVuZ3RoIHRvIGp1bXAgdG8gdGhhdCBjYXNlLgogICAgICAg
ICAKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NF
UlRfRU5BQkxFRCkgewogICAgICAgICAgICAgQVNTRVJUKGNhc2VzW2JlZ2luXS5zdHJpbmctPmxl
bmd0aCgpID09IGNvbW1vbkNoYXJzKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJl
Z2luICsgMTsgaSA8IGVuZDsgKytpKQogICAgICAgICAgICAgICAgIEFTU0VSVChjYXNlc1tpXS5z
dHJpbmctPmxlbmd0aCgpID4gY29tbW9uQ2hhcnMpOwpAQCAtMTE5NzUsNyArMTE5NzUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0ZXJmCiAgICAgbV9qaXQuemVyb0V4
dGVuZDMyVG9QdHIoc2l6ZUdQUiwgc2NyYXRjaDEpOwogICAgIG1faml0LmxzaGlmdDMyKFRydXN0
ZWRJbW0zMigzKSwgc2NyYXRjaDEpOwogICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihzaXpl
b2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZGlkTm90T3ZlcmZsb3cgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBzY3JhdGNoMiwgc2l6ZUdQUik7CiAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKFVuY2hl
Y2tlZE92ZXJmbG93KTsKICAgICBkaWROb3RPdmVyZmxvdy5saW5rKCZtX2ppdCk7CkBAIC0xMzQ4
MiwxNCArMTM0ODIsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlTmV3
QQogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgaWYgKHNob3Vs
ZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBU
cnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpKTsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgZWxzZSB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGxlbmd0aElzV2l0aGluTGltaXRzOwogICAgICAg
ICBsZW5ndGhJc1dpdGhpbkxpbWl0cyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElP
Tl9MRU5HVEgpKTsKICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKFVuY2hlY2tlZE92ZXJm
bG93KTsKICAgICAgICAgbGVuZ3RoSXNXaXRoaW5MaW1pdHMubGluaygmbV9qaXQpOwogICAgIH0K
LSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogCiAgICAgLy8gV2UgY2FuIHVz
ZSByZXN1bHRHUFIgYXMgYSBzY3JhdGNoIHJpZ2h0IG5vdy4KICAgICBlbWl0QWxsb2NhdGVCdXR0
ZXJmbHkoc3RvcmFnZUdQUiwgc2l6ZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHJlc3Vs
dEdQUiwgc2xvd0Nhc2VzKTsKQEAgLTE0MDEwLDcgKzE0MDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5B
QkxFRCkgewogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNo
MzIoCiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGFs
bG9jYXRvckdQUiwgVHJ1c3RlZEltbTMyKDApKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0
aFJlYXNvbihERkdOZWdhdGl2ZVN0cmluZ0xlbmd0aCk7CkBAIC0xNDA1NCw3ICsxNDA1NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2QKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEpTQ19BU1NFUlRfRU5B
QkxFRCkgewogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBtX2ppdC5icmFuY2gzMigK
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6R3JlYXRlclRoYW5PckVxdWFsLCBhbGxvY2F0b3JH
UFIsIFRydXN0ZWRJbW0zMigwKSk7CiAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdO
ZWdhdGl2ZVN0cmluZ0xlbmd0aCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRf
RU5BQkxFRAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphc3NlcnRJc1JlZ2lzdGVyZWQo
R3JhcGgmIGdyYXBoKSBjb25zdAogewogICAgIGlmIChpc1RvcCgpKQpAQCAtNDEsNyArNDEsNyBA
QCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gc2l6ZSgpOyBpLS07KQogICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQo
YXQoaSkuZ2V0KCkpOwogfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBK
U0NfQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjbG9iYmVy
KCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTAsMTAgKzkwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV9zZXQubV9wb2ludGVyID0gdG9w
VmFsdWU7CiAgICAgfQogICAgIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgYXNzZXJ0
SXNSZWdpc3RlcmVkKEdyYXBoJikgY29uc3QgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5B
QkxFRAogICAgIHZvaWQgYXNzZXJ0SXNSZWdpc3RlcmVkKEdyYXBoJikgY29uc3Q7CisjZWxzZQor
ICAgIHZvaWQgYXNzZXJ0SXNSZWdpc3RlcmVkKEdyYXBoJikgY29uc3QgeyB9CiAjZW5kaWYKICAg
ICAKICAgICB2b2lkIGNsb2JiZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxLDcgKzQyMSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgICAgICAgICBpZiAoIUpTQ19BU1NFUlRf
RU5BQkxFRCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5kb1RvQ2hpbGRyZW4oCiAgICAgICAgICAgICAgICAgICAgIG5vZGUsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVn
aXN0ZXJBbGxvY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgaWYgKCFibG9jay0+aXNSZWFjaGFibGUpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAg
ICAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgICAgIC8vIEZv
cmNlIHVzYWdlIG9mIGhpZ2hlc3QtbnVtYmVyZWQgdmlydHVhbCByZWdpc3RlcnMuCiAgICAgICAg
ICAgICAgICAgc2NvcmVCb2FyZC5zb3J0RnJlZSgpOwogICAgICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEs
NyArMTUxLDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIGppdC5qdW1w
VG9FeGNlcHRpb25IYW5kbGVyKHZtKTsKICAgICAgICAgICAgIG5vRXhjZXB0aW9uLmxpbmsoJmpp
dCk7CiAKLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBp
ZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgaml0LmxvYWQ2NCh2bS5h
ZGRyZXNzT2ZFeGNlcHRpb24oKSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGpp
dC5qaXRBc3NlcnRJc051bGwoR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgbmFtZXNwYWNlIHsKIAogc3Rk
OjphdG9taWM8aW50PiBjb21waWxlQ291bnRlcjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQg
ZnRsVW5yZWFjaGFibGUoCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxv
Y2tJbmRleCwgdW5zaWduZWQgbm9kZUluZGV4KQogewpAQCAtMTMxLDcgKzEzMSw3IEBAIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgZnRsVW4KICAgICBkYXRhTG9nKCIuXG4iKTsK
ICAgICBDUkFTSCgpOwogfQotI2VuZGlmCisjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAK
IC8vIFVzaW5nIHRoaXMgaW5zdGVhZCBvZiB0eXBlQ2hlY2soKSBoZWxwcyB0byByZWR1Y2UgdGhl
IGxvYWQgb24gQjMsIGJ5IGNyZWF0aW5nCiAvLyBzaWduaWZpY2FudGx5IGxlc3MgZGVhZCBjb2Rl
LgpAQCAtMTc1NjYsNyArMTc1NjYsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5zdG9yZTMy
KAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksCiAg
ICAgICAgICAgICB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKSkpOwotI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSB8
fCAhQVNTRVJUX0RJU0FCTEVECisjaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8IEpT
Q19BU1NFUlRfRU5BQkxFRAogICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9v
dXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAjZW5kaWYKICAgICB9CkBAIC0xNzU5
OCw3ICsxNzU5OCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogICAgICAgICBpZiAoT3B0aW9uczo6dXNlRXhjZXB0aW9uRnV6eigpKSB7Ci0jaWYg
IVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8ICFBU1NFUlRfRElTQUJMRUQKKyNpZiAhVVNF
KEJVSUxUSU5fRlJBTUVfQUREUkVTUykgfHwgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICAg
ICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2Fs
bEZyYW1lKSk7CiAjZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmNhbGwoVm9pZCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
KTsKQEAgLTE4MTcwLDcgKzE4MTcwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IGJsb2NrLT5pbmRleDsKICAgICAgICAgdW5zaWduZWQgbm9kZUlu
ZGV4ID0gbm9kZSA/IG5vZGUtPmluZGV4KCkgOiBVSU5UX01BWDsKLSNpZiBBU1NFUlRfRElTQUJM
RUQKKyNpZiAhSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fb3V0LnBhdGNocG9pbnQoVm9p
ZCktPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKICAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CkBAIC0xODE4MSw3ICsx
ODE4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKG5vZGUtPm9wKCkpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNvbihGVExDcmFzaCk7CiAgICAgICAgICAgICB9KTsK
LSNlbHNlCisjZWxzZSAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9vdXQuY2FsbCgK
ICAgICAgICAgICAgIFZvaWQsCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihmdGxVbnJl
YWNoYWJsZSksCkBAIC0xODE4OSw3ICsxODE4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAv
LyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFsd2F5cyBnZXQgY29sbGVjdGVkLgogICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkp
LCBtX291dC5jb25zdEludDMyKGJsb2NrSW5kZXgpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnQzMihub2RlSW5kZXgpKTsKLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAog
ICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTEsNyArNDExLDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aQogICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGFycmF5SW5kZXgsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKICAgICAgICAgICAgIH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ICAgIC8vIFdlIGF2b2lkIHRoaXMgTyhuXjIpIGxvb3Agd2hlbiBhc3NlcnRzIGFyZSBkaXNhYmxl
ZCwgYnV0IHRoZSBjb25kaXRpb24gY2hlY2tlZCBoZXJlCiAgICAgICAgICAgICAvLyBtdXN0IGhv
bGQgdG8gZW5zdXJlIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIG9m
IGhvdyB3ZSBhbGxvY2F0ZSB0aGUgYXJyYXkuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHRh
cmdldEluZGV4ID0gMDsgdGFyZ2V0SW5kZXggPCBhcnJheVNpemU7ICsrdGFyZ2V0SW5kZXgpIHsK
QEAgLTQzNCw3ICs0MzQsNyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVChmb3VuZCk7CiAg
ICAgICAgICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfQogCkBAIC01NDAsNyArNTQwLDcgQEAgZXh0
ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgICAgICBKU0FycmF5KiBy
ZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIHN0cnVjdHVyZSwgYXJyYXlTaXplKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLy8gRW5zdXJlIHdlIHNlZSBpbmRpY2VzIGZv
ciBldmVyeXRoaW5nIGluIHRoZSByYW5nZTogWzAsIG51bVByb3BlcnRpZXMpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgICAg
IGJvb2wgZm91bmQgPSBmYWxzZTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBleHRlcm4gIkMiIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NF
UlQoZm91bmQpOwogICAgICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJM
RUQKIAogICAgICAgICBWZWN0b3I8SlNWYWx1ZSwgOD4gYXJndW1lbnRzOwogICAgICAgICBhcmd1
bWVudHMuZ3JvdyhudW1Qcm9wZXJ0aWVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk2LDcgKzI5Niw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNocmluaygpCiAKIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OmFzc2VydE5vVW5zd2VwdCgpCiB7Ci0gICAgaWYgKEFTU0VSVF9ESVNBQkxF
RCkKKyAgICBpZiAoIUpTQ19BU1NFUlRfRU5BQkxFRCkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGlmIChtX2JpdHMudW5zd2VwdCgpLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBHQ0FycmF5U2VnbWVudCA6IHB1YmxpYyBEb3Vi
bHlMaW5rCiBwdWJsaWM6CiAgICAgR0NBcnJheVNlZ21lbnQoKQogICAgICAgICA6IERvdWJseUxp
bmtlZExpc3ROb2RlPEdDQXJyYXlTZWdtZW50PFQ+PigpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fdG9wKDApCiAjZW5kaWYKICAgICB7
CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIEdDQXJyYXlTZWdtZW50KiBtX3ByZXY7
CiAgICAgR0NBcnJheVNlZ21lbnQqIG1fbmV4dDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgc2l6ZV90IG1fdG9wOwogI2VuZGlmCiB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5SW5s
aW5lcy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q1NlZ21lbnRlZEFycmF5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBA
IHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6Y2xlYXIoKQogICAgIH0KICAgICBtX3RvcCA9IDA7
CiAgICAgbV9udW1iZXJPZlNlZ21lbnRzID0gMTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgbV9zZWdtZW50cy5oZWFkKCktPm1fdG9wID0gMDsKICNl
bmRpZgogfQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OmV4cGFu
ZCgpCiAgICAgR0NBcnJheVNlZ21lbnQ8VD4qIG5leHRTZWdtZW50ID0gR0NBcnJheVNlZ21lbnQ8
VD46OmNyZWF0ZSgpOwogICAgIG1fbnVtYmVyT2ZTZWdtZW50cysrOwogICAgIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBuZXh0U2VnbWVudC0+bV90
b3AgPSAwOwogI2VuZGlmCiAKQEAgLTE3NCw5ICsxNzQsNyBAQCBpbmxpbmUgc2l6ZV90IEdDU2Vn
bWVudGVkQXJyYXk8VD46OnRvcCgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotI2lmIEFT
U0VSVF9ESVNBQkxFRAotaW5saW5lIHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6dmFsaWRhdGVQ
cmV2aW91cygpIHsgfQotI2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKIGlubGluZSB2b2lk
IEdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJldmlvdXMoKQogewogICAgIHVuc2lnbmVk
IGNvdW50ID0gMDsKQEAgLTE4NCw3ICsxODIsOSBAQCBpbmxpbmUgdm9pZCBHQ1NlZ21lbnRlZEFy
cmF5PFQ+Ojp2YWxpZGF0CiAgICAgICAgIGNvdW50Kys7CiAgICAgQVNTRVJUKG1fc2VnbWVudHMu
c2l6ZSgpID09IG1fbnVtYmVyT2ZTZWdtZW50cyk7CiB9Ci0jZW5kaWYKKyNlbHNlCitpbmxpbmUg
dm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+Ojp2YWxpZGF0ZVByZXZpb3VzKCkgeyB9CisjZW5kaWYg
Ly8gSlNDX0FTU0VSVF9FTkFCTEVECiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIHZv
aWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6YXBwZW5kKFQgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Miw3ICsxMDIsNyBAQCB1bnNpZ25lZCBIYW5kbGVTZXQ6OnByb3RlY3RlZEdsb2JhbE9iamVjCiAg
ICAgcmV0dXJuIGNvdW50OwogfQogCi0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pIHx8ICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikgfHwgSlNDX0FTU0VSVF9FTkFC
TEVECiBib29sIEhhbmRsZVNldDo6aXNMaXZlTm9kZShOb2RlKiBub2RlKQogewogICAgIGlmIChu
b2RlLT5wcmV2KCktPm5leHQoKSAhPSBub2RlKQpAQCAtMTEyLDYgKzExMiw2IEBAIGJvb2wgSGFu
ZGxlU2V0Ojppc0xpdmVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgIHJldHVybiB0cnVl
OwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEdDX1ZBTElEQVRJT04pIHx8IEpTQ19BU1NF
UlRfRU5BQkxFRAogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hhbmRsZVNldC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IYW5kbGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBw
cml2YXRlOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBncm93KCk7CiAgICAgCi0jaWYg
RU5BQkxFKEdDX1ZBTElEQVRJT04pIHx8ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBFTkFCTEUoR0Nf
VkFMSURBVElPTikgfHwgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc0xpdmVOb2RlKE5v
ZGUqKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyODksNyArMjI4OSw3IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2Nh
dGlvbkxpbWl0cygpCiAgICAgLy8gSXQncyB1cCB0byB0aGUgdXNlciB0byBlbnN1cmUgdGhhdCBl
eHRyYU1lbW9yeVNpemUoKSBlbmRzIHVwIGNvcnJlc3BvbmRpbmcgdG8gYWxsb2NhdGlvbi10aW1l
CiAgICAgLy8gZXh0cmEgbWVtb3J5IHJlcG9ydGluZy4KICAgICBjdXJyZW50SGVhcFNpemUgKz0g
ZXh0cmFNZW1vcnlTaXplKCk7Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAo
SlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVy
Zmxvdz4gY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZSA9IG1fdG90YWxCeXRlc1Zpc2l0ZWQ7CiAgICAg
ICAgIGNoZWNrZWRDdXJyZW50SGVhcFNpemUgKz0gZXh0cmFNZW1vcnlTaXplKCk7CiAgICAgICAg
IEFTU0VSVCghY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZS5oYXNPdmVyZmxvd2VkKCkgJiYgY2hlY2tl
ZEN1cnJlbnRIZWFwU2l6ZS51bnNhZmVHZXQoKSA9PSBjdXJyZW50SGVhcFNpemUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMSArOTYsNyBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIFdvcmtsaXN0OwogfQogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotI2RlZmluZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAxCi0jZWxz
ZQotI2RlZmluZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAwCi0jZW5kaWYKKyNkZWZp
bmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT04gSlNDX0FTU0VSVF9FTkFCTEVECiBjb25z
dGV4cHIgYm9vbCB2YWxpZGF0ZURGR0RvZXNHQyA9IEVOQUJMRV9ERkdfRE9FU19HQ19WQUxJREFU
SU9OOwogCiB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PEpTQ2VsbCo+IFByb3RlY3RDb3VudFNldDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDEyICsyNjUsMTIgQEAgdm9pZCBNYXJrZWRCbG9jazo6
cmVzZXRNYXJrcygpCiAgICAgZm9vdGVyKCkubV9tYXJraW5nVmVyc2lvbiA9IE1hcmtlZFNwYWNl
OjpudWxsVmVyc2lvbjsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKIHZvaWQgTWFya2VkQmxvY2s6OmFzc2VydE1hcmtzTm90U3RhbGUoKQogewogICAg
IEFTU0VSVChmb290ZXIoKS5tX21hcmtpbmdWZXJzaW9uID09IHZtKCkuaGVhcC5vYmplY3RTcGFj
ZSgpLm1hcmtpbmdWZXJzaW9uKCkpOwogfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNl
bmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIAogYm9vbCBNYXJrZWRCbG9jazo6YXJlTWFya3NT
dGFsZSgpCiB7CkBAIC0zNjEsMTMgKzM2MSwxMyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6
OmRpZFJlbW92ZUZyb21ECiAgICAgYmxvY2tGb290ZXIoKS5tX3N1YnNwYWNlID0gbnVsbHB0cjsK
IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKIHZvaWQg
TWFya2VkQmxvY2s6OmFzc2VydFZhbGlkQ2VsbChWTSYgdm0sIEhlYXBDZWxsKiBjZWxsKSBjb25z
dAogewogICAgIFJFTEVBU0VfQVNTRVJUKCZ2bSA9PSAmdGhpcy0+dm0oKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoY29uc3RfY2FzdDxNYXJrZWRCbG9jayo+KHRoaXMpLT5oYW5kbGUoKS5jZWxsQWxp
Z24oY2VsbCkgPT0gY2VsbCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJM
RUQKIAogdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUoUHJpbnRTdHJlYW0mIG91
dCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDEwICszNTIsMTAgQEAgcHVibGljOgogICAgIAogICAg
IGJvb2wgaGFzQW55TWFya2VkKCkgY29uc3Q7CiAgICAgdm9pZCBub3RlTWFya2VkKCk7Ci0jaWYg
QVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3NlcnRWYWxpZENlbGwoVk0mLCBIZWFwQ2VsbCop
IGNvbnN0IHsgfQotI2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGFzc2Vy
dFZhbGlkQ2VsbChWTSYsIEhlYXBDZWxsKikgY29uc3Q7CisjZWxzZQorICAgIHZvaWQgYXNzZXJ0
VmFsaWRDZWxsKFZNJiwgSGVhcENlbGwqKSBjb25zdCB7IH0KICNlbmRpZgogICAgICAgICAKICAg
ICBXZWFrU2V0JiB3ZWFrU2V0KCk7CkBAIC0zNjUsMTAgKzM2NSwxMCBAQCBwdWJsaWM6CiAgICAg
CiAgICAgRGVwZW5kZW5jeSBhYm91dFRvTWFyayhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7
CiAgICAgICAgIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgYXNzZXJ0TWFya3NOb3RT
dGFsZSgpIHsgfQotI2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFzc2VydE1hcmtzTm90U3RhbGUoKTsKKyNlbHNlCisgICAgdm9pZCBhc3Nl
cnRNYXJrc05vdFN0YWxlKCkgeyB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgdm9pZCByZXNldE1h
cmtzKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIE1hcmtlZFNw
YWNlOjpiZWdpbk1hcmtpbmcoKQogICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmxpcCgpOwogICAg
IH0KIAotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEpTQ19BU1NFUlRfRU5B
QkxFRCkgewogICAgICAgICBmb3JFYWNoQmxvY2soCiAgICAgICAgICAgICBbJl0gKE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5hcmVNYXJr
c1N0YWxlKCkpCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZW5kTWFya2lu
ZygpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcmVjaXNlQWxsb2NhdGlvbnNPZmZzZXRGb3JU
aGlzQ29sbGVjdGlvbjsgaSA8IG1fcHJlY2lzZUFsbG9jYXRpb25zLnNpemUoKTsgKytpKQogICAg
ICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc1tpXS0+Y2xlYXJOZXdseUFsbG9jYXRlZCgpOwogCi0g
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7
CiAgICAgICAgIGZvciAoUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gOiBtX3ByZWNpc2VB
bGxvY2F0aW9ucykKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWxsb2NhdGlvbiwgIWFsbG9j
YXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAgfQpAQCAtNTY5LDcgKzU2OSw3IEBAIHZv
aWQgTWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmFz
c2VydE5vVW5zd2VwdCgpCiB7Ci0gICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICBpZiAoIUpT
Q19BU1NFUlRfRU5BQkxFRCkKICAgICAgICAgcmV0dXJuOwogICAgIGZvckVhY2hEaXJlY3Rvcnko
CiAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3
IEBAIHZvaWQgUHJlY2lzZUFsbG9jYXRpb246OmR1bXAoUHJpbnRTdHJlYW0KICAgICBvdXQucHJp
bnQoUmF3UG9pbnRlcih0aGlzKSwgIjooY2VsbCBhdCAiLCBSYXdQb2ludGVyKGNlbGwoKSksICIg
d2l0aCBzaXplICIsIG1fY2VsbFNpemUsICIgYW5kIGF0dHJpYnV0ZXMgIiwgbV9hdHRyaWJ1dGVz
LCAiKSIpOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxF
RAogdm9pZCBQcmVjaXNlQWxsb2NhdGlvbjo6YXNzZXJ0VmFsaWRDZWxsKFZNJiB2bSwgSGVhcENl
bGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCZ2bSA9PSAmdGhpcy0+dm0oKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmgJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ByZWNpc2VBbGxv
Y2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MiwxMCArMTQyLDEwIEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIG5vdGVNYXJrZWQoKSB7IH0KICAgICAKLSNpZiBBU1NFUlRfRElTQUJMRUQK
LSAgICB2b2lkIGFzc2VydFZhbGlkQ2VsbChWTSYsIEhlYXBDZWxsKikgY29uc3QgeyB9Ci0jZWxz
ZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwg
SGVhcENlbGwqKSBjb25zdDsKKyNlbHNlCisgICAgdm9pZCBhc3NlcnRWYWxpZENlbGwoVk0mLCBI
ZWFwQ2VsbCopIGNvbnN0IHsgfQogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBzd2VlcCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihI
ZWFwJiBoZWFwLCBDU3QKICAgICAsIG1fbWFya2luZ1ZlcnNpb24oTWFya2VkU3BhY2U6OmluaXRp
YWxWZXJzaW9uKQogICAgICwgbV9oZWFwKGhlYXApCiAgICAgLCBtX2NvZGVOYW1lKGNvZGVOYW1l
KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAsIG1f
aXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQogICAgICwgbV9pc0RyYWlu
aW5nKGZhbHNlKQogI2VuZGlmCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6
YXBwZW5kSlNDZWxsT3JBdXhpbGlhcgogICAgIAogICAgIC8vIEluIGRlYnVnIG1vZGUsIHdlIHZh
bGlkYXRlIGJlZm9yZSBtYXJraW5nIHNpbmNlIHRoaXMgbWFrZXMgaXQgY2xlYXJlciB3aGF0IHRo
ZSBwcm9ibGVtCiAgICAgLy8gd2FzLiBJdCdzIGFsc28gc2xvd2VyLCBzbyB3ZSBkb24ndCBkbyBp
dCBub3JtYWxseS4KLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCAmJiBpc0pTQ2VsbEtpbmQoaGVh
cENlbGwtPmNlbGxLaW5kKCkpKQorICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQgJiYgaXNKU0Nl
bGxLaW5kKGhlYXBDZWxsLT5jZWxsS2luZCgpKSkKICAgICAgICAgdmFsaWRhdGVDZWxsKHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KGhlYXBDZWxsKSk7CiAgICAgCiAgICAgaWYgKEhlYXA6OnRlc3RBbmRT
ZXRNYXJrZWQobV9tYXJraW5nVmVyc2lvbiwgaGVhcENlbGwpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYs
NyArMjY2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBQdXQgcGFkZGluZyBoZXJlIHRvIG1pdGlnYXRl
IGZhbHNlIHNoYXJpbmcgYmV0d2VlbiBtdWx0aXBsZSBTbG90VmlzaXRvcnMuCiAgICAgY2hhciBw
YWRkaW5nWzY0XTsKIHB1YmxpYzoKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsK
ICAgICBib29sIG1faXNEcmFpbmluZzsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvdG9jb2xUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNiArNTcsMTYgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEJpbmRpbmdUcmFpdAogCiAgICAgc3RhdGljIHZvaWQg
YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKLSNp
ZiBBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSNlbHNlCisj
aWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsK
ICAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBhcnJheTsKICAgICAgICAgYm9vbCBjYXN0U3Vj
Y2VlZGVkID0gdmFsdWUtPmFzQXJyYXkoYXJyYXkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNh
c3RTdWNjZWVkZWQsIGNhc3RTdWNjZWVkZWQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXJyYXktPmxlbmd0aCgpOyBpKyspCiAgICAgICAgICAgICBCaW5kaW5nVHJhaXRzPFQ+
Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShhcnJheS0+Z2V0KGkpLmdldCgpKTsKLSNlbmRp
ZiAvLyAhQVNTRVJUX0RJU0FCTEVECisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0odmFsdWUp
OworI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9w
cm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjEzLDkgKzIx
Myw3IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmUKIAogICAgICAg
ICBsaW5lcy5hcHBlbmQoJ3ZvaWQgQmluZGluZ1RyYWl0czwlcz46OmFzc2VydFZhbHVlSGFzRXhw
ZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1ZSknICUgKENwcEdlbmVyYXRvci5jcHBfcHJvdG9j
b2xfdHlwZV9mb3JfdHlwZShvYmplY3RfZGVjbGFyYXRpb24udHlwZSkpKQogICAgICAgICBsaW5l
cy5hcHBlbmQoIiIiewotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVF9BUkcodmFsdWUs
IHZhbHVlKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7CiAgICAgYm9vbCBjYXN0
U3VjY2VlZGVkID0gdmFsdWUtPmFzT2JqZWN0KG9iamVjdCk7CkBAIC0yNTUsNyArMjUzLDkgQEAg
Y2xhc3MgQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICBpZiBzaG91
bGRfY291bnRfcHJvcGVydGllczoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmIChm
b3VuZFByb3BlcnRpZXNDb3VudCAhPSBvYmplY3QtPnNpemUoKSknKQogICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0
OiAlc1xcbiIsIG9iamVjdC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOycpCi0gICAg
ICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJyNlbHNlIC8vIEpTQ19BU1NFUlRfRU5BQkxFRCcpCisgICAgICAgIGxpbmVz
LmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7JykKKyAgICAgICAgbGluZXMuYXBwZW5k
KCcjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVEJykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9
JykKICAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKIApAQCAtMjYzLDkgKzI2Myw3IEBA
IGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmUKICAgICAgICAgbGluZXMg
PSBbXQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3ZvaWQgJXMoSlNPTjo6VmFsdWUqIHZhbHVlKScg
JSBDcHBHZW5lcmF0b3IuY3BwX2Fzc2VydGlvbl9tZXRob2RfZm9yX3R5cGVfbWVtYmVyKGVudW1f
bWVtYmVyLCBvYmplY3RfZGVjbGFyYXRpb24pKQogICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQot
ICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiBBU1NFUlRfRElTQUJMRUQnKQotICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBVTlVTRURfUEFSQU0odmFsdWUpOycpCi0gICAgICAgIGxpbmVzLmFwcGVu
ZCgnI2Vsc2UnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQn
KQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7JykK
ICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgU3RyaW5nIHJlc3VsdDsnKQogICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNTdHJpbmcocmVzdWx0
KTsnKQpAQCAtMjczLDcgKzI3MSw5IEBAIGNsYXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRh
dGlvbkdlbmUKIAogICAgICAgICBhc3NlcnRfY29uZGl0aW9uID0gJyB8fCAnLmpvaW4oWydyZXN1
bHQgPT0gIiVzIicgJSBlbnVtX3ZhbHVlIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fbWVtYmVyLnR5
cGUuZW51bV92YWx1ZXMoKV0pCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVCglcyk7
JyAlIGFzc2VydF9jb25kaXRpb24pCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFB
U1NFUlRfRElTQUJMRUQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbHNlIC8vIEpTQ19BU1NF
UlRfRU5BQkxFRCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcjZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVE
JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2lu
KGxpbmVzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJl
c3VsdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpz
b24tcmVzdWx0CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50
aW1lLWNhc3RzLmpzb24tcmVzdWx0CSh3b3JraW5nIGNvcHkpCkBAIC03MDksMjIgKzcwOSwyMCBA
QCBPcHRpb25hbDxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0CiAKIHZvaWQgQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpDYXN0ZWRBbmltYWxzPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogewotI2lmIEFTU0VSVF9E
SVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRf
RU5BQkxFRAogICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICBTdHJpbmcgcmVzdWx0
OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc1N0cmluZyhyZXN1bHQpOwogICAg
IEFTU0VSVChjYXN0U3VjY2VlZGVkKTsKICAgICBBU1NFUlQocmVzdWx0ID09ICJEdWNrcyIgfHwg
cmVzdWx0ID09ICJIZW5zIiB8fCByZXN1bHQgPT0gIkNyb3dzIiB8fCByZXN1bHQgPT0gIkZsYW1p
bmdvcyIpOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbHNlIC8vIEpTQ19BU1NFUlRf
RU5BQkxFRAorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5kaWYgLy8gSlNDX0FTU0VSVF9F
TkFCTEVECiB9CiAKIHZvaWQgQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0
OjpUeXBlTmVlZGluZ0Nhc3Q+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1
ZSogdmFsdWUpCiB7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKHZhbHVl
KTsKLSNlbHNlCisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwg
dmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RT
dWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTc1OCw3ICs3NTYsOSBAQCB2
b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6CiAgICAgaW50IGZvdW5kUHJv
cGVydGllc0NvdW50ID0gNTsKICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2JqZWN0
LT5zaXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0
OiAlc1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0jZW5kaWYg
Ly8gIUFTU0VSVF9ESVNBQkxFRAorI2Vsc2UgLy8gSlNDX0FTU0VSVF9FTkFCTEVECisgICAgVU5V
U0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIH0KIAogUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZWVkaW5nQ2FzdD4gQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+OjpydW50aW1l
Q2FzdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgdmFsdWUpCkBAIC03NzQsOSArNzc0LDcgQEAgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlR5cGVOZQogCiB2b2lkIEJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6UmVjdXJzaXZlT2JqZWN0MT46OmFzc2VydFZh
bHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2YWx1ZSkKIHsKLSNpZiBBU1NFUlRfRElT
QUJMRUQKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotI2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VO
QUJMRUQKICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgUmVmUHRyPEpTT046Ok9i
amVjdD4gb2JqZWN0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChv
YmplY3QpOwpAQCAtNzkyLDE0ICs3OTAsMTQgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OgogICAgIH0KICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2Jq
ZWN0LT5zaXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2Jq
ZWN0OiAlc1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0jZW5k
aWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2Vsc2UgLy8gSlNDX0FTU0VSVF9FTkFCTEVECisgICAg
VU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIH0KIAog
dm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9i
amVjdDI+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiB7
Ci0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSNlbHNlCisj
aWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAg
IFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2
YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTgxNSw3ICs4MTMsOSBAQCB2b2lkIEJpbmRpbmdU
cmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6CiAgICAgfQogICAgIGlmIChmb3VuZFByb3BlcnRp
ZXNDb3VudCAhPSBvYmplY3QtPnNpemUoKSkKICAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJv
cGVydGllcyBpbiBvYmplY3Q6ICVzXG4iLCBvYmplY3QtPnRvSlNPTlN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisjZWxzZSAvLyBKU0NfQVNTRVJU
X0VOQUJMRUQKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOworI2VuZGlmIC8vIEpTQ19BU1NFUlRf
RU5BQkxFRAogfQogCiB9IC8vIG5hbWVzcGFjZSBQcm90b2NvbApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ZyYW1lVHJhY2Vycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogY2xhc3MgSklUT3Bl
cmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgewogcHVibGljOgogICAgIEFMV0FZU19JTkxJ
TkUgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVE
CiAgICAgICAgIDogbV92bSh2bSkKICNlbmRpZgogICAgIHsKQEAgLTExNiw3ICsxMTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChyZWludGVycHJldF9jYXN0PHZvaWQqPihjYWxsRnJhbWUp
IDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odm0udG9wRW50cnlGcmFtZSkpOwogICAgICAgICBh
c3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKTsKICNpZiBVU0UoQlVJTFRJTl9GUkFNRV9BRERS
RVNTKQotICAgICAgICAvLyBJZiAhQVNTRVJUX0RJU0FCTEVEIGFuZCBVU0UoQlVJTFRJTl9GUkFN
RV9BRERSRVNTKSwgcHJlcGFyZUNhbGxPcGVyYXRpb24oKSB3aWxsIHB1dCB0aGUgZnJhbWUgcG9p
bnRlciBpbnRvIHZtLnRvcENhbGxGcmFtZS4KKyAgICAgICAgLy8gSWYgSlNDX0FTU0VSVF9FTkFC
TEVEIGFuZCBVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSwgcHJlcGFyZUNhbGxPcGVyYXRpb24o
KSB3aWxsIHB1dCB0aGUgZnJhbWUgcG9pbnRlciBpbnRvIHZtLnRvcENhbGxGcmFtZS4KICAgICAg
ICAgLy8gV2UgY2FuIGVuc3VyZSBoZXJlIHRoYXQgYSBjYWxsIHRvIHByZXBhcmVDYWxsT3BlcmF0
aW9uKCkgKG9yIGl0cyBlcXVpdmFsZW50KSBpcyBub3QgbWlzc2luZyBieSBjb21wYXJpbmcgdm0u
dG9wQ2FsbEZyYW1lIHRvCiAgICAgICAgIC8vIHRoZSByZXN1bHQgb2YgX19idWlsdGluX2ZyYW1l
X2FkZHJlc3Mgd2hpY2ggaXMgcGFzc2VkIGluIGFzIGNhbGxGcmFtZS4KICAgICAgICAgQVNTRVJU
KHZtLnRvcENhbGxGcmFtZSA9PSBjYWxsRnJhbWUpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICB+SklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIoKQogICAg
IHsKICAgICAgICAgLy8gRmlsbCB2bS50b3BDYWxsRnJhbWUgd2l0aCBpbnZhbGlkIHZhbHVlIHdo
ZW4gbGVhdmluZyBmcm9tIEpJVCBvcGVyYXRpb24gZnVuY3Rpb25zLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgSW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKFZNJiB2bSkKICAgICAsIG1fY2xvb3BTdGFjayh2bSkKICNlbmRpZgogewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgYXNzZXJ0T25jZUtleTsKICAgICBzdGQ6OmNhbGxfb25jZShhc3NlcnRPbmNl
S2V5LCBbXSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOVU1CRVJfT0ZfQllU
RUNPREVfSURTOyArK2kpIHsKQEAgLTM0Myw3ICszNDMsNyBAQCBJbnRlcnByZXRlcjo6SW50ZXJw
cmV0ZXIoVk0mIHZtKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZ2V0T3Bjb2RlSUQoZ2V0
T3Bjb2RlKG9wY29kZUlEKSkgPT0gb3Bjb2RlSUQpOwogICAgICAgICB9CiAgICAgfSk7Ci0jZW5k
aWYgLy8gVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkKKyNlbmRpZiAvLyBKU0NfQVNTRVJU
X0VOQUJMRUQKIH0KIAogSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCkBAIC0zNTEsNyArMzUx
LDcgQEAgSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB9CiAKICNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19PUENPREVTKQotI2lmICFVU0UoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCAh
QVNTRVJUX0RJU0FCTEVECisjaWYgIVVTRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8IEpT
Q19BU1NFUlRfRU5BQkxFRAogSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiYgSW50ZXJwcmV0ZXI6
Om9wY29kZUlEVGFibGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPE9w
Y29kZSwgT3Bjb2RlSUQ+PiBvcGNvZGVJRFRhYmxlOwpAQCAtMzY1LDEwICszNjUsMTAgQEAgSGFz
aE1hcDxPcGNvZGUsIE9wY29kZUlEPiYgSW50ZXJwcmV0ZXI6OgogCiAgICAgcmV0dXJuIG9wY29k
ZUlEVGFibGU7CiB9Ci0jZW5kaWYgLy8gIVVTRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8
ICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9J
RCkgfHwgSlNDX0FTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9f
T1BDT0RFUykKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQK
IGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7CiAjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fT1BDT0RFUykKQEAgLTM3OSw3ICszNzksNyBAQCBib29sIEludGVycHJl
dGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlCiAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIG9w
Y29kZSA8PSBvcF9lbmQ7CiAjZW5kaWYKIH0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisj
ZW5kaWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAKIGNsYXNzIEdldFN0YWNrVHJhY2VGdW5jdG9y
IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEw
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBpbmxpbmUgT3Bjb2RlSUQg
Z2V0T3Bjb2RlSUQoT3Bjb2RlKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKICNlbmRp
ZgogCkBAIC0xNDQsOSArMTQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAg
CiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSNpZiAhVVNFKExMSU5UX0VNQkVE
REVEX09QQ09ERV9JRCkgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmICFVU0UoTExJTlRfRU1CRURE
RURfT1BDT0RFX0lEKSB8fCBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgc3RhdGljIEhhc2hN
YXA8T3Bjb2RlLCBPcGNvZGVJRD4mIG9wY29kZUlEVGFibGUoKTsgLy8gTWFwcyBPcGNvZGUgPT4g
T3Bjb2RlSUQuCi0jZW5kaWYgLy8gIVVTRShMTElOVF9FTUJFRERFRF9PUENPREVfSUQpIHx8ICFB
U1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkg
fHwgSlNDX0FTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BD
T0RFUykKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAs
NyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6Y2xlYXJTYW1wbGluZ0ZsYWcoCiB9CiAjZW5kaWYK
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICNpZiBVU0Uo
SlNWQUxVRTY0KQogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoR1BSUmVn
IGdwcikKIHsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNz
ZXJ0QXJndW1lbnRDCiAgICAgb2subGluayh0aGlzKTsKIH0KIAotI2VuZGlmIC8vICFBU1NFUlRf
RElTQUJMRUQKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmppdFJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbihWTSYgdm0pCiB7CkBAIC0zMTUsNyAr
MzE1LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0cnVjdHVyZQogICAgIGNv
bnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBTdHJ1
Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1ZSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqaXQu
c3RvcmU2NChUcnVzdGVkSW1tNjQoc3RydWN0dXJlUHRyLT5pZEJsb2IoKSksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwotICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAg
ICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUgPSBqaXQuYnJhbmNoMzIoRXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkpKTsKICAgICAgICAgaml0LmFib3J0V2l0aFJlYXNv
bihBSFN0cnVjdHVyZUlESXNWYWxpZCk7CiAgICAgICAgIGNvcnJlY3RTdHJ1Y3R1cmUubGluaygm
aml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwcmVwYXJlQ2FsbE9wZXJhdGlvbihWTSYgdm0pCiAgICAgewogICAgICAgICBVTlVTRURf
UEFSQU0odm0pOwotI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSB8fCAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8IEpTQ19BU1NFUlRfRU5B
QkxFRAogICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLnRv
cENhbGxGcmFtZSk7CiAjZW5kaWYKICAgICB9CkBAIC0xMjc3LDcgKzEyNzcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZWJ1Z0NhbGwoVk0mLCBWX0RlYnVnT3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwg
dm9pZCogYXJndW1lbnQpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBKSVQgZ2VuZXJhdGUgZHlu
YW1pYywgZGVidWctb25seSBjaGVja3MgLSBha2luIHRvIEFTU0VSVHMuCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgaml0QXNzZXJ0SXNJbnQz
MihHUFJSZWcpOwogICAgIHZvaWQgaml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyk7CiAgICAgdm9p
ZCBqaXRBc3NlcnRJc0pTTnVtYmVyKEdQUlJlZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0JpbmFyeVN3aXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9CaW5hcnlTd2l0Y2guY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcg
KzYwLDcgQEAgQmluYXJ5U3dpdGNoOjpCaW5hcnlTd2l0Y2goR1BSUmVnIHZhbHVlLAogICAgIGlm
IChCaW5hcnlTd2l0Y2hJbnRlcm5hbDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiU29ydGVk
IGNhc2VzOiAiLCBsaXN0RHVtcChtX2Nhc2VzKSwgIlxuIik7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8
IG1fY2FzZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIEFTU0VSVChtX2Nhc2VzW2kgLSAxXSA8IG1f
Y2FzZXNbaV0sIGksIG1fY2FzZXMuc2l6ZSgpLCBtX2Nhc2VzW2ldLnZhbHVlLCBtX2Nhc2VzW2ld
LmluZGV4KTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVs
cGVycy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgTnVtYmVyT2ZSZWdpc3RlcnMsIHR5cGVuYW1lIFJlZ1R5cGU+
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwU3R1YkFyZ3Moc3RkOjphcnJheTxSZWdUeXBl
LCBOdW1iZXJPZlJlZ2lzdGVycz4gZGVzdGluYXRpb25zLCBzdGQ6OmFycmF5PFJlZ1R5cGUsIE51
bWJlck9mUmVnaXN0ZXJzPiBzb3VyY2VzKQogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAg
UmVnaXN0ZXJTZXQgc2V0OwogICAgICAgICAgICAgZm9yIChSZWdUeXBlIGRlc3QgOiBkZXN0aW5h
dGlvbnMpCiAgICAgICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKQEAgLTEwNCw3ICsxMDQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihz
b3VyY2VzW2ldLCBkZXN0aW5hdGlvbnNbaV0pKTsKICAgICAgICAgfQogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICBhdXRvIG51bVVuaXF1ZVNv
dXJjZXMgPSBbJl0gKCkgLT4gdW5zaWduZWQgewogICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0
OwogICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZs
ZXI6OnNwaWxsKENhY2hlZFJlY28KIAogdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdERlbHRh
Q2hlY2soKQogewotICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgaWYgKCFKU0NfQVNTRVJU
X0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdQUlJlZyBzY3JhdGNoR1BSIHsgZ2V0
RnJlZUdQUigpIH07CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6
cHJlcGFyZUFueSgpCiAgICAgLy8gc3RhY2ssIGFuZCB3cml0dGVuIGV2ZXJ5dGhpbmcgd2UgaGFk
IHRvIHRvIHRoZSBzdGFjay4KICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiICBD
YWxsZWUgZnJhbWUgaXMgZnVsbHkgc2V0IHVwXG4iKTsKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgZm9yIChWaXJ0dWFs
UmVnaXN0ZXIgcmVnID0gZmlyc3ROZXcoKTsgcmVnIDw9IGxhc3ROZXcoKTsgcmVnICs9IDEpCiAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlZywgIWdldE5ldyhyZWcpKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBKSVQ6OmVtaXROb3RpZnlXcml0ZShHUFJSZWcgcG9pbnRlcgogCiB2b2lkIEpJVDo6YXNz
ZXJ0U3RhY2tQb2ludGVyT2Zmc2V0KCkKIHsKLSAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAg
IGlmICghSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihzdGFja1BvaW50ZXJPZmZzZXRGb3IobV9jb2RlQmxvY2spICogc2l6
ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMCk7CkBAIC03NzAsNyArNzcw
LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waQogICAgICAgICBt
b3ZlKHJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBlbWl0
TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoYXJpdHlGaXh1cEdlbmVyYXRvcikucmV0YWdnZWRD
b2RlPE5vUHRyVGFnPigpKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgbV9ieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleCgpOyAvLyBS
ZXNldCB0aGlzLCBpbiBvcmRlciB0byBndWFyZCBpdHMgdXNlIHdpdGggQVNTRVJUcy4KICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNTksNyArMTA1OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9sb29wX2hpbnQoY29uc3QgSW4KIAogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9w
dGltaXplLCAmdm0oKSwgbV9ieXRlY29kZUluZGV4LmFzQml0cygpKTsKICAgICAgICAgSnVtcCBu
b09wdGltaXplZEVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7Ci0g
ICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VO
QUJMRUQpIHsKICAgICAgICAgICAgIEp1bXAgb2sgPSBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlLCByZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PGludHB0cl90PigxMDAwKSkpKTsKICAgICAgICAgICAgIGFib3J0V2l0aFJl
YXNvbihKSVRVbnJlYXNvbmFibGVMb29wSGludEp1bXBUYXJnZXQpOwogICAgICAgICAgICAgb2su
bGluayh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNv
bnN0IEkKICAgICAgICAgICAgIAogICAgICAgICAgICAgbW92ZShyZWdUMCwgYmFzZSk7CiAgICAg
ICAgICAgICBsb2FkMzIob3BlcmFuZFNsb3QsIG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoIUFT
U0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewog
ICAgICAgICAgICAgICAgIEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9y
RXF1YWwsIG9mZnNldCwgVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CiAgICAg
ICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVE9mZnNldElzTm90T3V0T2ZMaW5lKTsKICAg
ICAgICAgICAgICAgICBpc091dE9mTGluZS5saW5rKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MjEsNyArODIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Zy
b21fc2NvcGUoY29uc3QgSQogICAgICAgICAgICAgfSkpOwogCiAgICAgICAgICAgICBsb2FkMzIo
b3BlcmFuZFNsb3QsIG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkg
eworICAgICAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgICAg
IEp1bXAgaXNPdXRPZkxpbmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIG9mZnNldCwg
VHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgYWJv
cnRXaXRoUmVhc29uKEpJVE9mZnNldElzTm90T3V0T2ZMaW5lKTsKICAgICAgICAgICAgICAgICBp
c091dE9mTGluZS5saW5rKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ1LDcgKzExNDUsNyBAQCB2b2lkIGxpbmtQ
b2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICAgICAgbmV3Q2FzZVZh
bHVlID0gYml0d2lzZV9jYXN0PGludHB0cl90Pih2YXJpYW50LmludGVybmFsRnVuY3Rpb24oKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBp
ZiAoSlNDX0FTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBpZiAoY2FzZVZhbHVlcy5jb250
YWlucyhuZXdDYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRVJST1I6IEF0
dGVtcHQgdG8gYWRkIGR1cGxpY2F0ZSBjYXNlIHZhbHVlLlxuIik7CiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiRXhpc3RpbmcgY2FzZSB2YWx1ZXM6ICIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUg
VGFnVHlwZT4KIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMm
IGppdCwgR1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUgdGFnKQogewotICAgIGlmIChBU1NFUlRf
RElTQUJMRUQpCisgICAgaWYgKCFKU0NfQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsK
ICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgaXNOb25aZXJvID0gaml0LmJyYW5jaFRlc3RQdHIoQ0Nh
bGxIZWxwZXJzOjpOb25aZXJvLCBwb2ludGVyR1BSKTsKICAgICBqaXQuYWJvcnRXaXRoUmVhc29u
KFRHSW52YWxpZFBvaW50ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgdm9p
ZCBEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKCEocmVpbnRlcnBy
ZXRfY2FzdDxwdHJkaWZmX3Q+KChyZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxKU0NlbGw+
Kj4oMHg0MDAwKS0+c2xvdCgpKSkgLSAweDQwMDApKTsKIAogICAgIC8vIEZJWE1FOiBtYWtlIHRo
ZXNlIGFzc2VydGlvbnMgbGVzcyBob3JyaWJsZS4KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
SlNDX0FTU0VSVF9FTkFCTEVECiAgICAgVmVjdG9yPGludD4gdGVzdFZlY3RvcjsKICAgICB0ZXN0
VmVjdG9yLnJlc2l6ZSg0Mik7CiAgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDx1aW50MzJfdCo+KCZ0
ZXN0VmVjdG9yKVtzaXplb2Yodm9pZCopL3NpemVvZih1aW50MzJfdCkgKyAxXSA9PSA0Mik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIs
NyBAQAogI2RlZmluZSBPRkZMSU5FX0FTTV9BRERSRVNTNjQgMAogI2VuZGlmCiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAjZGVmaW5lIE9GRkxJTkVfQVNN
X0FTU0VSVF9FTkFCTEVEIDEKICNlbHNlCiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFC
TEVEIDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTA1LDcgKzkwNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGlubGluZSAKICAgICB9CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlND
X0FTU0VSVF9FTkFCTEVECiBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiB2bSwgY29u
c3QgSWRlbnRpZmllciogaWRlbnQpCiB7CiAgICAgaWYgKCFpZGVudCkKQEAgLTkyNCw3ICs5MjQs
NyBAQCBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiB2bSwgY29uCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEpTQ19B
U1NFUlRfRU5BQkxFRAogICAgIAogdGVtcGxhdGUgPD4KIHRlbXBsYXRlIDxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+Ojpw
YXJzZUlkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgT3B0aW9uU2V0PExleGVyRmxh
Z3M+IGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMzLDExICszMzMsMTEgQEAgQUxX
QVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPgogICAgIHJldHVybiAmbV9hcmVu
YS0+bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihtX3ZtLCBjaGFyYWN0ZXJzLCBsZW5ndGgp
OwogfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNTYWZlQnVp
bHRpbklkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gdHJ1ZTsgfQot
I2Vsc2UKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKIGJvb2wgaXNTYWZlQnVpbHRpbklkZW50aWZp
ZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7Ci0jZW5kaWYKKyNlbHNlCitBTFdBWVNfSU5MSU5F
IGJvb2wgaXNTYWZlQnVpbHRpbklkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKikgeyBy
ZXR1cm4gdHJ1ZTsgfQorI2VuZGlmIC8vIEpTQ19BU1NFUlRfRU5BQkxFRAogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVj
dElkZW50aWZpZXIoSlNUb2tlbiogdG9rZW5SZWNvcmQsIE9wdGlvblNldDxMZXhlckZsYWdzPiBs
ZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCkBAIC0zNzUsNyArMzc1LDcgQEAgQUxXQVlTX0lO
TElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RQogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVu
dGlmaWVyIGlmIG5lZWRlZAogICAgIGlmIChsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6
OkRvbnRCdWlsZEtleXdvcmRzKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgJiYgIW1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbgogI2VuZGlmCiAg
ICAgICAgICkKQEAgLTM5MCw3ICszOTAsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXhFCiAgICAgQVNTRVJUKHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID49IHRv
a2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAgdG9rZW5SZWNvcmQtPm1fc3RhcnRQ
b3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgdG9rZW5SZWNvcmQtPm1fZW5kUG9zaXRpb24g
PSBjdXJyZW50UG9zaXRpb24oKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VS
VF9FTkFCTEVECiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBp
ZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ0xpc3QuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTUgKzE2NSwxNSBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gJnNsb3RGb3IoMCk7CiAgICAgfQogCi0jaWYgQVNTRVJU
X0RJU0FCTEVECi0gICAgdm9pZCBzZXROZWVkc092ZXJmbG93Q2hlY2soKSB7IH0KLSAgICB2b2lk
IGNsZWFyTmVlZHNPdmVyZmxvd0NoZWNrKCkgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5B
QkxFRAogICAgIHZvaWQgc2V0TmVlZHNPdmVyZmxvd0NoZWNrKCkgeyBtX25lZWRzT3ZlcmZsb3dD
aGVjayA9IHRydWU7IH0KICAgICB2b2lkIGNsZWFyTmVlZHNPdmVyZmxvd0NoZWNrKCkgeyBtX25l
ZWRzT3ZlcmZsb3dDaGVjayA9IGZhbHNlOyB9CiAKICAgICBib29sIG1fbmVlZHNPdmVyZmxvd0No
ZWNrIHsgZmFsc2UgfTsKLSNlbmRpZgorI2Vsc2UKKyAgICB2b2lkIHNldE5lZWRzT3ZlcmZsb3dD
aGVjaygpIHsgfQorICAgIHZvaWQgY2xlYXJOZWVkc092ZXJmbG93Q2hlY2soKSB7IH0KKyNlbmRp
ZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBpbnQgbV9zaXplOwogICAgIGludCBtX2NhcGFj
aXR5OwogICAgIEVuY29kZWRKU1ZhbHVlIG1faW5saW5lQnVmZmVyW2lubGluZUNhcGFjaXR5XTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5oCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgQ29udGlndW91c0RhdGEgewog
ICAgIENvbnRpZ3VvdXNEYXRhKCkgPSBkZWZhdWx0OwogICAgIENvbnRpZ3VvdXNEYXRhKFQqIGRh
dGEsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIDogbV9kYXRhKGRhdGEpCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKICNlbmRpZgogICAgIHsKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IENvbnRpZ3VvdXNEYXRh
IHsKICAgICBzdHJ1Y3QgRGF0YSB7CiAgICAgICAgIERhdGEoVCYgbG9jYXRpb24sIEluZGV4aW5n
VHlwZSBpbmRleGluZ01vZGUpCiAgICAgICAgICAgICA6IG1fZGF0YShsb2NhdGlvbikKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAsIG1f
aXNXcml0YWJsZSghaXNDb3B5T25Xcml0ZShpbmRleGluZ01vZGUpKQogI2VuZGlmCiAgICAgICAg
IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgQ29udGlndW91c0RhdGEgewogCiAKICAgICAg
ICAgVCYgbV9kYXRhOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgYm9vbCBtX2lzV3JpdGFibGU7CiAjZW5kaWYKICAgICB9OwpAQCAtMTE0LDEz
ICsxMTQsMTMgQEAgc3RydWN0IENvbnRpZ3VvdXNEYXRhIHsKICAgICBUJiBhdFVuc2FmZShzaXpl
X3QgaW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9sZW5ndGgpOyByZXR1cm4gbV9kYXRhW2luZGV4
XTsgfQogCiAgICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBzaXplX3QgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KICNlbmRpZgogCiBwcml2YXRlOgogICAgIFQqIG1f
ZGF0YSB7IG51bGxwdHIgfTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgc2l6ZV90IG1fbGVuZ3RoIHsgMCB9OwogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MDMsNyArNzAzLDcgQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAg
ICAgICAgIEhhc2hNYXBCdWNrZXRUeXBlKiBpdGVyID0gbV9oZWFkLT5uZXh0KCk7CiAgICAgICAg
ICAgICBIYXNoTWFwQnVja2V0VHlwZSogZW5kID0gbV90YWlsLmdldCgpOwogICAgICAgICAgICAg
dWludDMyX3Qgc2l6ZSA9IDA7CkBAIC03MjksNyArNzI5LDcgQEAgcHJpdmF0ZToKIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBhc3NlcnRCdWZmZXJJc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChKU0NfQVNTRVJUX0VOQUJM
RUQpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcGFjaXR5OyBp
KyspCiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzRW1wdHkoYnVmZmVyKClbaV0pKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKAogaW5saW5lIGNvbnN0IE1ldGhvZFRh
YmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKFZNJiB2bSkgY29uc3QKIHsKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmUtPnN0cnVjdHVyZSh2bSkpCiAgICAgICAgIEFTU0VSVChyb290U3RydWN0dXJl
ID09IHJvb3RTdHJ1Y3R1cmUtPnN0cnVjdHVyZSh2bSkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwOSw3ICs5MDksNyBAQCBKU0Z1bmN0aW9uOjpQcm9wZXJ0eVN0YXR1cyBK
U0Z1bmN0aW9uOjpyCiAgICAgcmV0dXJuIFByb3BlcnR5U3RhdHVzOjpSZWlmaWVkOwogfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogdm9pZCBKU0Z1bmN0
aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCkKIHsKICAgICAvLyBJZiB5b3UgY2hh
bmdlIHRoaXMsIHlvdSdsbCBuZWVkIHRvIHVwZGF0ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8u
CkBAIC05MTksNiArOTE5LDYgQEAgdm9pZCBKU0Z1bmN0aW9uOjphc3NlcnRUeXBlSW5mb0ZsYWdJ
bnZhcgogICAgIGVsc2UKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5mbyAhPSBKU0JvdW5kRnVu
Y3Rpb246OmluZm8oKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwxMCArMjEwLDEw
IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5TmFtZUlmTmVlZGVkKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U3RhdHVzIHJl
aWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUpOwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3NlcnRUeXBlSW5mb0ZsYWdJ
bnZhcmlhbnRzKCkgeyB9Ci0jZWxzZQorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHZvaWQg
YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpOworI2Vsc2UKKyAgICB2b2lkIGFzc2VydFR5
cGVJbmZvRmxhZ0ludmFyaWFudHMoKSB7IH0KICNlbmRpZgogCiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhh
c08KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blBy
b3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpOwogfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLmlzQm9vbGVhbigpKTsKQEAgLTMyNSw3ICszMjUsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlCiAgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9NRVNTQUdFKGZhbHNlLCAiSlMgYXNzZXJ0aW9uIGZhaWxlZCBhdCBsaW5lICV1IGluOlxu
JXNcbiIsIGxpbmUsIGNvZGVCbG9jay0+c291cmNlQ29kZUZvclRvb2xzKCkuZGF0YSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQotI2VuZGlmCisjZW5k
aWYgLy8gSlNDX0FTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC0xMTY4
LDcgKzExNjgsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCks
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRl
ZmluZWRLZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
YXNzZXJ0UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAxLCBTdHJp
bmcoKSwgYXNzZXJ0Q2FsbCksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICNl
bmRpZgogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxMSw3ICs1MTEs
NyBAQCBwdWJsaWM6CiAgICAgQ29uc29sZUNsaWVudCogbV9jb25zb2xlQ2xpZW50IHsgbnVsbHB0
ciB9OwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBtX3N0YWNrVHJhY2VMaW1pdDsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBjb25zdCBKU0dsb2Jh
bE9iamVjdCogbV9nbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50cnkgeyBudWxscHRyIH07CiAjZW5k
aWYKIApAQCAtOTYzLDcgKzk2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93ZWJBc3NlbWJseURp
c2FibGVkRXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOwogICAgIH0KIAotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBjb25zdCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxP
YmplY3RBdERlYnVnZ2VyRW50cnk7IH0KICAgICB2b2lkIHNldEdsb2JhbE9iamVjdEF0RGVidWdn
ZXJFbnRyeShjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSB7IG1fZ2xvYmFsT2Jq
ZWN0QXREZWJ1Z2dlckVudHJ5ID0gZ2xvYmFsT2JqZWN0OyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWwKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+
KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgYm9v
bCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tp
bmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2
b2lkIEpTT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsCiAgICAgCiAgICAgdGhpc09i
amVjdC0+dmlzaXRCdXR0ZXJmbHkodmlzaXRvcik7CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwog
I2VuZGlmCiB9CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbAogewogICAgIEpTRmluYWxPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNGaW5hbE9iamVjdCo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhp
c09iamVjdCwgaW5mbygpKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9F
TkFCTEVECiAgICAgYm9vbCB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlz
aXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1f
aXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gZmFsc2U7CiAjZW5kaWYKQEAgLTUw
NCw3ICs1MDQsNyBAQCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsCiAg
ICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlc0hpZGRlbih0aGlzT2JqZWN0LT5pbmxpbmVT
dG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKICAgICB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVm
YXVsdE1hcmtWaW9sYXRpb24gPSB3YXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uOwog
I2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdElubGluZXMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3RJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw4ICs0Nzcs
OCBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0SW5kZXhRdWlja2x5Rm9yCiAgICAgCiBpbmxp
bmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewotI2lmICFBU1NFUlRfRElT
QUJMRUQKLSAgICBBU1NFUlQodmFsdWUpOworI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAorICAgIEFT
U0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUp
IHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIHVuc2lnbmVk
IGF0dHJpYnV0ZXM7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKHZtKS0+
Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpAQCAtNDg4LDExICs0ODgsMTEgQEAg
aW5saW5lIHZvaWQgSlNPYmplY3Q6OnZhbGlkYXRlUHV0T3duRGF0YQogICAgICAgICBpZiAoYXV0
byBlbnRyeSA9IGZpbmRQcm9wZXJ0eUhhc2hFbnRyeSh2bSwgcHJvcGVydHlOYW1lKSkKICAgICAg
ICAgICAgIEFTU0VSVCghKGVudHJ5LT52YWx1ZS0+YXR0cmlidXRlcygpICYgKFByb3BlcnR5QXR0
cmlidXRlOjpBY2Nlc3NvciB8IFByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpKTsKICAgICB9Ci0jZWxzZQorI2Vsc2UgLy8gbm90
IEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgVU5VU0VEX1BB
UkFNKHByb3BlcnR5TmFtZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSNlbmRpZgorI2Vu
ZGlmIC8vIG5vdCBKU0NfQVNTRVJUX0VOQUJMRUQKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBhc3NlcnRWYXJpYWJs
ZUlzSW5UaGlzT2JqZWN0KFdyaXRlQmFycmllcjxVbmtub3duPiogdmFyaWFibGVQb2ludGVyKQog
ICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAgIGlmIChKU0NfQVNT
RVJUX0VOQUJMRUQpCiAgICAgICAgICAgICBmaW5kVmFyaWFibGVJbmRleCh2YXJpYWJsZVBvaW50
ZXIpOwogICAgICAgICByZXR1cm4gdmFyaWFibGVQb2ludGVyOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBjb25zdGV4cHIg
Y29uc3QgVG9rZW5UeXBlIFRva2VuVHkKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KIEFM
V0FZU19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4
KExpdGVyYWxQYXJzZXJUb2tlbjxDaGFyVHlwZT4mIHRva2VuKQogewotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBtX2N1cnJlbnRUb2tlbklEKys7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIFRva2VuVHlwZSBuZXh0KCk7CiAgICAgICAgIAotI2lm
IEFTU0VSVF9ESVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdHlwZWRl
ZiBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+KiBMaXRlcmFsUGFyc2VyVG9rZW5Q
dHI7CiAKICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2VuUHRyIGN1cnJlbnRUb2tlbigpCkBAIC0x
NjcsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIExp
dGVyYWxQYXJzZXJUb2tlblB0cigqdGhpcyk7CiAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8v
IEpTQ19BU1NFUlRfRU5BQkxFRAogICAgICAgICAKICAgICAgICAgU3RyaW5nIGdldEVycm9yTWVz
c2FnZSgpIHsgcmV0dXJuIG1fbGV4RXJyb3JNZXNzYWdlOyB9CiAgICAgICAgIApAQCAtMTgzLDcg
KzE4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENoYXJUeXBlKiBtX3B0cjsKICAgICAg
ICAgY29uc3QgQ2hhclR5cGUqIG1fZW5kOwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1fYnVpbGRl
cjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgICAg
IHVuc2lnbmVkIG1fY3VycmVudFRva2VuSUQgeyAwIH07CiAjZW5kaWYKICAgICB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDEsNyArNTAxLDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTXVs
KEpTR2xvYmFsT2JqZQogCiBpbmxpbmUgYm9vbCBzY3JpYmJsZUZyZWVDZWxscygpCiB7Ci0gICAg
cmV0dXJuICFBU1NFUlRfRElTQUJMRUQgfHwgT3B0aW9uczo6c2NyaWJibGVGcmVlQ2VsbHMoKTsK
KyAgICByZXR1cm4gSlNDX0FTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNl
bGxzKCk7CiB9CiAKICNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
MHhiYWRiZWVmMCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDggKzIyMSw4IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KEJvb2wsIGIzQWx3YXlz
RmFpbHNCZWZvcmVDb21waWxlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29s
LCBiM0Fsd2F5c0ZhaWxzQmVmb3JlTGluaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoQm9vbCwgZnRsQ3Jhc2hlcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgLyogZm9vbC1wcm9v
ZiB3YXkgb2YgY2hlY2tpbmcgdGhhdCB5b3UgZW5kZWQgdXAgaW4gdGhlIEZUTC4gOy0pICovXAot
ICAgIHYoQm9vbCwgY2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1BhdGgsICFBU1NFUlRfRElTQUJM
RUQsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoQm9vbCwgZW5hYmxlSklURGVidWdBc3NlcnRp
b25zLCAhQVNTRVJUX0RJU0FCTEVELCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIGNs
b2JiZXJBbGxSZWdzSW5GVExJQ1Nsb3dQYXRoLCBKU0NfQVNTRVJUX0VOQUJMRUQsIE5vcm1hbCwg
bnVsbHB0cikgXAorICAgIHYoQm9vbCwgZW5hYmxlSklURGVidWdBc3NlcnRpb25zLCBKU0NfQVNT
RVJUX0VOQUJMRUQsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlQWNjZXNzSW5s
aW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoVW5zaWduZWQsIG1heEFjY2Vz
c1ZhcmlhbnRMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VQ
b2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTksNyArMjE5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKEpJVCkKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiBib29sIFZNOjpzX2NhblVz
ZUpJVElzU2V0ID0gZmFsc2U7CiAjZW5kaWYKIGJvb2wgVk06OnNfY2FuVXNlSklUID0gZmFsc2U7
CkBAIC0yNzEsNyArMjcxLDcgQEAgYm9vbCBWTTo6Y2FuVXNlQXNzZW1ibGVyKCkKIHZvaWQgVk06
OmNvbXB1dGVDYW5Vc2VKSVQoKQogewogI2lmIEVOQUJMRShKSVQpCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAogICAgIFJFTEVBU0VfQVNTRVJUKCFzX2NhblVz
ZUpJVElzU2V0KTsKICAgICBzX2NhblVzZUpJVElzU2V0ID0gdHJ1ZTsKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDgsOSArODA4
LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgY2FuVXNlSklUKCkK
ICAgICB7CiAjaWYgRU5BQkxFKEpJVCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKHNfY2FuVXNlSklUSXNTZXQpOwotI2VuZGlmCisgICAgICAgIEFTU0VSVChz
X2NhblVzZUpJVElzU2V0KTsKICAgICAgICAgcmV0dXJuIHNfY2FuVXNlSklUOwogI2Vsc2UKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIzOSw3ICsxMjM3LDcgQEAgcHJpdmF0ZToKICAgICB1
aW50cHRyX3QgbV9jdXJyZW50V2Vha1JlZlZlcnNpb24geyAwIH07CiAKICNpZiBFTkFCTEUoSklU
KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzX2NhblVzZUpJVElzU2V0OwogI2VuZGlmCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc19jYW5Vc2VKSVQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WYXJPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WYXJPZmZzZXQuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zmc2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2OSw3ICsxNjksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjaGVja1Nhbml0eSgp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICBpZiAo
IUpTQ19BU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
ICAgIHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1dlYWtNYXBJbXBsLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw3ICs0NDQs
NyBAQCBwcml2YXRlOgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3ko
KSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAg
aWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSA9IDA7
CiAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSB0aGlzLT5idWZmZXIoKTsKICAgICAgICAgICAg
IGZvciAodWludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fY2FwYWNpdHk7ICsraW5kZXgpIHsK
QEAgLTQ2OSw3ICs0NjksNyBAQCBwcml2YXRlOgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGFz
c2VydEJ1ZmZlcklzRW1wdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY2FwYWNpdHk7IGkrKykKICAgICAgICAgICAgICAg
ICBBU1NFUlQoKGJ1ZmZlcigpICsgaSktPmlzRW1wdHkoKSk7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDcgKzMzMSw3IEBAIHByaXZhdGU6
CiAgICAgQjM6OlR5cGUgdG9CM1Jlc3VsdFR5cGUoQmxvY2tTaWduYXR1cmUgcmV0dXJuVHlwZSk7
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHZhbGlkYXRlSW5zdChJbnN0JiBpbnN0KQogICAgIHsK
LSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEpTQ19BU1NFUlRf
RU5BQkxFRCkgewogICAgICAgICAgICAgaWYgKCFpbnN0LmlzVmFsaWRGb3JtKCkpIHsKICAgICAg
ICAgICAgICAgICBkYXRhTG9nTG4oIkluc3QgdmFsaWRhdGlvbiBmYWlsZWQ6Iik7CiAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKGluc3QsICJcbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTkzLDcgKzE5OTMsNyBAQCBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8
SW50ZXJuYWxGdW5jdGlvCiAgICAgaXJHZW5lcmF0b3IuaW5zZXJ0Q29uc3RhbnRzKCk7CiAKICAg
ICBwcm9jZWR1cmUucmVzZXRSZWFjaGFiaWxpdHkoKTsKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkKKyAgICBpZiAoSlNDX0FTU0VSVF9FTkFCTEVEKQogICAgICAgICB2YWxpZGF0ZShwcm9jZWR1
cmUsICJBZnRlciBwYXJzaW5nOlxuIik7CiAKICAgICBkYXRhTG9nSWYoV2FzbUIzSVJHZW5lcmF0
b3JJbnRlcm5hbDo6dmVyYm9zZSwgIlByZSBTU0E6ICIsIHByb2NlZHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIE5F
VkVSX0lOTElORSBVbmV4cGVjdGVkUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiB2YWxpZGF0aW9u
RmFpbChjb25zdCBBcmdzJi4uLiBhcmdzKSBjb25zdAogICAgIHsKICAgICAgICAgdXNpbmcgbmFt
ZXNwYWNlIEZhaWx1cmVIZWxwZXI7IC8vIFNlZSBBREwgY29tbWVudCBpbiBXYXNtUGFyc2VyLmgu
Ci0gICAgICAgIGlmIChVTkxJS0VMWSghQVNTRVJUX0RJU0FCTEVEICYmIE9wdGlvbnM6OmNyYXNo
T25GYWlsZWRXZWJBc3NlbWJseVZhbGlkYXRlKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoSlND
X0FTU0VSVF9FTkFCTEVEICYmIE9wdGlvbnM6OmNyYXNoT25GYWlsZWRXZWJBc3NlbWJseVZhbGlk
YXRlKCkpKQogICAgICAgICAgICAgV1RGQnJlYWtwb2ludFRyYXAoKTsKIAogICAgICAgICBTdHJp
bmdQcmludFN0cmVhbSBvdXQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0MSw3ICszNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KCkKICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEpTQ19BU1NFUlRfRU5BQkxFRAog
ICAgICAgICAvLyBUaGUgcnVsZXMgZm9yIGxvY2FscyBhbmQgY29uc3RhbnRzIGluIHRoZSBzdGFj
ayBhcmU6CiAgICAgICAgIC8vIDEpIExvY2FscyBoYXZlIHRvIGJlIG1hdGVyaWFsaXplZCB3aGVu
ZXZlciBhIGNvbnRyb2wgZW50cnkgaXMgcHVzaGVkIHRvIHRoZSBjb250cm9sIHN0YWNrIChpLmUu
IGV2ZXJ5IHRpbWUgd2Ugc3BsaXRTdGFjaykKICAgICAgICAgLy8gICAgTk9URTogVGhpcyBpcyBh
IHRyYWRlLW9mZiBzbyB0aGF0IHNldF9sb2NhbCBkb2VzIG5vdCBoYXZlIHRvIHdhbGsgdXAgdGhl
IGNvbnRyb2wgc3RhY2sgbG9va2luZyBmb3IgZGVsYXllZCBnZXRfbG9jYWxzCkBAIC0zNTcsNyAr
MzU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhtX3BhcnNlci0+
ZXhwcmVzc2lvblN0YWNrKCksIFsmXShWaXJ0dWFsUmVnaXN0ZXIgZXhwcmVzc2lvbiwgVmlydHVh
bFJlZ2lzdGVyIHNsb3QpIHsKICAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uID09IHNsb3Qg
fHwgZXhwcmVzc2lvbi5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi5pc0FyZ3VtZW50KCkgfHwg
ZXhwcmVzc2lvbi50b0xvY2FsKCkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKICAgICAgICAg
fSk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBKU0NfQVNTRVJUX0VOQUJMRUQKICAgICB9CiAKICAgICB2
b2lkIG1hdGVyaWFsaXplQ29uc3RhbnRzQW5kTG9jYWxzKFN0YWNrJiBleHByZXNzaW9uU3RhY2sp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBQbGFuOjp0cnlSZW1vdmVDb250ZXh0QW5k
Q2FuY2VsSWZMYQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAKLSAgICBpZiAo
IUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAg
ICAgLy8gV2UgYWxsb3cgdGhlIGZpcnN0IGNvbXBsZXRpb24gdGFzayB0byBub3QgaGF2ZSBhIENv
bnRleHQuCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBtX2NvbXBsZXRpb25UYXNr
cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIEFTU0VSVChtX2NvbXBsZXRpb25UYXNrc1tpXS5m
aXJzdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
UGFyc2VyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICBORVZFUl9JTkxJTkUgVW5leHBlY3RlZFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZmFpbChBcmdzLi4uIGFyZ3MpIGNvbnN0CiAgICAgewogICAgICAgICB1c2luZyBuYW1lc3Bh
Y2UgRmFpbHVyZUhlbHBlcjsgLy8gU2VlIEFETCBjb21tZW50IGluIG5hbWVzcGFjZSBhYm92ZS4K
LSAgICAgICAgaWYgKFVOTElLRUxZKCFBU1NFUlRfRElTQUJMRUQgJiYgT3B0aW9uczo6Y3Jhc2hP
bkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGUoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShKU0Nf
QVNTRVJUX0VOQUJMRUQgJiYgT3B0aW9uczo6Y3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRh
dGUoKSkpCiAgICAgICAgICAgICBDUkFTSCgpOwogCiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVk
UmVzdWx0KG1ha2VTdHJpbmcoIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5
dGUgIl9zLCBTdHJpbmc6Om51bWJlcihtX29mZnNldCArIG1fb2Zmc2V0SW5Tb3VyY2UpLCAiOiAi
X3MsIG1ha2VTdHJpbmcoYXJncykuLi4pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TZWN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TZWN0aW9ucy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2VjdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYg
IUpTQ19BU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0JFR0lOCiAj
ZW5kaWYKIApAQCAtMTA2LDcgKzEwNiw3IEBAIGlubGluZSBjb25zdCBjaGFyKiBtYWtlU3RyaW5n
KFNlY3Rpb24gc2UKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAotI2lmIEFTU0VSVF9E
SVNBQkxFRAorI2lmICFKU0NfQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJO
SU5HU19FTkQKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2lnbmF0dXJlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TaWduYXR1cmVJbmxpbmVzLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIGNvbnN0IFNpZ25hdHVyZSYgU2lnbmF0dXJlSW5mb3Jt
YQogCiBpbmxpbmUgU2lnbmF0dXJlSW5kZXggU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSkKIHsKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewor
ICAgIGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRp
b24mIGluZm8gPSBzaW5nbGV0b24oKTsKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhp
bmZvLm1fbG9jayk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5mbywgaW5mby5tX3NpZ25hdHVy
ZVNldC5jb250YWlucyhTaWduYXR1cmVIYXNoIHsgbWFrZVJlZihjb25zdF9jYXN0PFNpZ25hdHVy
ZSY+KHNpZ25hdHVyZSkpIH0pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Xb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVdvcmtsaXN0LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3
IEBAIHZvaWQgV29ya2xpc3Q6OmVucXVldWUoUmVmPFBsYW4+IHBsYW4pCiB7CiAgICAgTG9ja0hv
bGRlciBsb2NrZXIoKm1fbG9jayk7CiAKLSAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAg
IGlmIChKU0NfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVt
ZW50IDogbV9xdWV1ZSkKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQoZWxlbWVudCwgZWxlbWVu
dC5wbGFuLmdldCgpICE9ICZwbGFuLmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Myw3ICsxNDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRl
CiAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0
ZXJJbmZvOjpnZXQoKTsKICAgICBSZWdpc3RlclNldCB0b1NhdmUgPSBwaW5uZWRSZWdzLnRvU2F2
ZShtb2RlKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBKU0NfQVNTRVJUX0VOQUJMRUQK
ICAgICB1bnNpZ25lZCB0b1NhdmVTaXplID0gdG9TYXZlLm51bWJlck9mU2V0R1BScygpOwogICAg
IC8vIFRoZXkgc2hvdWxkIGFsbCBiZSBjYWxsZWUgc2F2ZXMuCiAgICAgdG9TYXZlLmZpbHRlcihS
ZWdpc3RlclNldDo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDcgKzE3Myw3IEBAIHB0cmRpZmZf
dCBXZWJBc3NlbWJseUZ1bmN0aW9uOjpwcmV2aW91c0kKIHsKICAgICBwdHJkaWZmX3QgcmVzdWx0
ID0gY2FsbGVlU2F2ZXMoKS5udW1iZXJPZlNldFJlZ2lzdGVycygpICogc2l6ZW9mKENQVVJlZ2lz
dGVyKTsKICAgICByZXN1bHQgPSAtcmVzdWx0IC0gc2l6ZW9mKENQVVJlZ2lzdGVyKTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgSlNDX0FTU0VSVF9FTkFCTEVECiAgICAgcHRyZGlmZl90IG1p
bk9mZnNldCA9IDE7CiAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiByZWdBdE9mZnNl
dCA6IHVzZWRDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpIHsKICAgICAgICAgcHRyZGlmZl90IG9mZnNl
dCA9IHJlZ0F0T2Zmc2V0Lm9mZnNldCgpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjAt
MDEtMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBy
dW5uaW5nIGEgcmVsZWFzZSBidWlsZCB3aXRoIGRlYnVnIEFTU0VSVHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBlbmFibGUgZGVidWcgQVNTRVJU
cyBpbiBXVEYgY29kZSAoZXZlbiBpbiByZWxlYXNlIGJ1aWxkcyksIG92ZXJyaWRlCisgICAgICAg
IFdURl9BU1NFUlRfRU5BQkxFRCB0byB0cnVlLgorCisgICAgICAgICogY29uZmlnLmg6CisgICAg
ICAgICogd3RmL0Fzc2VydGlvbnMuaDoKKyAgICAgICAgKiB3dGYvQXV0b21hdGljVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdURjo6QXV0b21hdGljVGhyZWFkOjpzdGFydCk6CisgICAgICAgICogd3Rm
L0JpdFZlY3Rvci5oOgorICAgICAgICAqIHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tOgorICAg
ICAgICAoUmVwb3J0QmxvY2tlZE9iakNFeGNlcHRpb24pOgorICAgICAgICAqIHd0Zi9CbG9vbUZp
bHRlci5oOgorICAgICAgICAqIHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaDoKKyAgICAgICAgKFdU
Rjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpDYWxsYmFja0FnZ3JlZ2F0b3IpOgorICAgICAgICAqIHd0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oOgorICAgICAgICAoV1RGOjpvYnNlcnZlc092ZXJmbG93PEFz
c2VydE5vT3ZlcmZsb3c+KToKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEJvb2xlYW4uaDoKKyAgICAg
ICAgKENoZWNrZWRCb29sZWFuOjpDaGVja2VkQm9vbGVhbik6CisgICAgICAgIChDaGVja2VkQm9v
bGVhbjo6b3BlcmF0b3IgYm9vbCk6CisgICAgICAgICogd3RmL0NvbXBsZXRpb25IYW5kbGVyLmg6
CisgICAgICAgIChXVEY6OkNvbXBsZXRpb25IYW5kbGVyPE91dCk6CisgICAgICAgICogd3RmL0Rh
dGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZURhdGVzKToKKyAgICAgICAgKiB3
dGYvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OnRyeUFsbG9jYXRlWmVyb2VkVmly
dHVhbFBhZ2VzKToKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgIChXVEY6Oktl
eVRyYWl0cz46OmNoZWNrS2V5KToKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6Y2hlY2tUYWJs
ZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSBjb25zdCk6CisgICAgICAgICogd3RmL0xvZ2dlckhlbHBl
ci5oOgorICAgICAgICAqIHd0Zi9OYXR1cmFsTG9vcHMuaDoKKyAgICAgICAgKFdURjo6TmF0dXJh
bExvb3BzOjpoZWFkZXJPZiBjb25zdCk6CisgICAgICAgICogd3RmL05ldmVyRGVzdHJveWVkLmg6
CisgICAgICAgIChXVEY6OkxhenlOZXZlckRlc3Ryb3llZDo6Y29uc3RydWN0KToKKyAgICAgICAg
KiB3dGYvT3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6T3B0aW9uU2V0KToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvUHRyVGFnLmg6CisgICAg
ICAgICogd3RmL1JlZkNvdW50ZWQuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEJhc2U6OmRp
c2FibGVUaHJlYWRpbmdDaGVja3MpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6ZW5h
YmxlVGhyZWFkaW5nQ2hlY2tzR2xvYmFsbHkpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFz
ZTo6UmVmQ291bnRlZEJhc2UpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6YXBwbHlS
ZWZEZXJlZlRocmVhZGluZ0NoZWNrIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU2luZ2xlUm9vdEdy
YXBoLmg6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6YXNzZXJ0SXNDb25zaXN0ZW50
IGNvbnN0KToKKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6CisgICAgICAgICogd3RmL1N0
YWNrQm91bmRzLmg6CisgICAgICAgIChXVEY6OlN0YWNrQm91bmRzOjpjaGVja0NvbnNpc3RlbmN5
IGNvbnN0KToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdURjo6VVJM
UGFyc2VyOjpVUkxQYXJzZXIpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6OmRvbWFpblRvQVND
SUkpOgorICAgICAgICAqIHd0Zi9WYWx1ZUNoZWNrLmg6CisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2M+OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiB3
dGYvV2Vha0hhc2hTZXQuaDoKKyAgICAgICAgKiB3dGYvV2Vha1B0ci5oOgorICAgICAgICAoV1RG
OjpXZWFrUHRySW1wbDo6V2Vha1B0ckltcGwpOgorICAgICAgICAoV1RGOjpXZWFrUHRyRmFjdG9y
eTo6V2Vha1B0ckZhY3RvcnkpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNw
cDoKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpyZWlm
eVN0cmluZyBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0NvbW1vbi5oOgorICAgICAgICAoV1RGOjpoYXNQcmVmaXhX
aXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKToKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdIYXNoZXIuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSGFzaGVyOjphZGRDaGFyYWN0ZXJz
KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQv
U3ltYm9sSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg6CisK
IDIwMjAtMDEtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIEphdmFTY3JpcHQ6IEludmFsaWQgZGF0ZSBwYXJzZSBmb3IgSVNPIDg2MDEgc3RyaW5n
cyB3aGVuIG5vIHRpbWV6b25lIGdpdmVuCkluZGV4OiBTb3VyY2UvV1RGL2NvbmZpZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvY29uZmlnLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XVEYvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xNiw5ICsxNiwyNSBAQAogICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
ICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCiAgKi8K
IAorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorCisjaWYgQVNBTl9FTkFCTEVECisjaWZuZGVm
IFdURl9BU1NFUlRfRU5BQkxFRAorI2RlZmluZSBXVEZfQVNTRVJUX0VOQUJMRUQgMQorI2VuZGlm
CisjZW5kaWYKKworLy8gVGhlIGJ1aWxkIGNvbmZpZyBtYXkgb3ZlcnJpZGUgV1RGX0FTU0VSVF9F
TkFCTEVEIHRvIGVuYWJsZSB0ZXN0aW5nIHdpdGgKKy8vIGRlYnVnIEFTU0VSVHMgZm9yIFdURiBj
b2RlIG9uIHJlbGVhc2UgYnVpbGRzIHdpdGhvdXQgbmVjZXNzYXJpbHkgZW5hYmxpbmcKKy8vIGRl
YnVnIEFTU0VSVHMgZm9yIGFsbCBjbGllbnRzIG9mIFdURi4KKyNpZiBkZWZpbmVkKFdURl9BU1NF
UlRfRU5BQkxFRCkgJiYgV1RGX0FTU0VSVF9FTkFCTEVECisjaWZuZGVmIEFTU0VSVF9FTkFCTEVE
CisjZGVmaW5lIEFTU0VSVF9FTkFCTEVEIDEKKyNlbmRpZgorI2VuZGlmCisKICNpZiBkZWZpbmVk
KEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRI
X0NNQUtFKQogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNjQsMzkgKzY0LDMwIEBAIGV4dGVybiAiQyIgdm9pZCBfUmVhZFdy
aXRlQmFycmllcih2b2lkKTsKICNlbmRpZgogI2VuZGlmCiAKLSNpZmRlZiBOREVCVUcKLS8qIERp
c2FibGUgQVNTRVJUKiBtYWNyb3MgaW4gcmVsZWFzZSBtb2RlLiAqLwotI2RlZmluZSBBU1NFUlRJ
T05TX0RJU0FCTEVEX0RFRkFVTFQgMQotI2Vsc2UKLSNkZWZpbmUgQVNTRVJUSU9OU19ESVNBQkxF
RF9ERUZBVUxUIDAKLSNlbmRpZgorLyogQVNTRVJUX0VOQUJMRUQgaXMgZGVmaW5lZCBpbiBQbGF0
Zm9ybS5oIG9yIGNvbmZpZy5oIGZpbGVzLiAqLwogCiAjaWZuZGVmIEJBQ0tUUkFDRV9ESVNBQkxF
RAotI2RlZmluZSBCQUNLVFJBQ0VfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxU
Ci0jZW5kaWYKLQotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKLSNkZWZpbmUgQVNTRVJUX0RJU0FC
TEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBCQUNLVFJBQ0VfRElTQUJM
RUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRlZiBBU1NFUlRfTVNHX0RJU0FCTEVE
Ci0jZGVmaW5lIEFTU0VSVF9NU0dfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxU
CisjZGVmaW5lIEFTU0VSVF9NU0dfRElTQUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAog
I2lmbmRlZiBBU1NFUlRfQVJHX0RJU0FCTEVECi0jZGVmaW5lIEFTU0VSVF9BUkdfRElTQUJMRUQg
QVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCisjZGVmaW5lIEFTU0VSVF9BUkdfRElTQUJMRUQg
IUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRlZiBGQVRBTF9ESVNBQkxFRAotI2RlZmlu
ZSBGQVRBTF9ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgRkFU
QUxfRElTQUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRlZiBFUlJPUl9ESVNB
QkxFRAotI2RlZmluZSBFUlJPUl9ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQK
KyNkZWZpbmUgRVJST1JfRElTQUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAogI2lmbmRl
ZiBMT0dfRElTQUJMRUQKLSNkZWZpbmUgTE9HX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURf
REVGQVVMVAorI2RlZmluZSBMT0dfRElTQUJMRUQgIUFTU0VSVF9FTkFCTEVECiAjZW5kaWYKIAog
I2lmbmRlZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzAyLDcgKzI5Myw3IEBAIFdURl9FWFBP
UlRfUFJJVkFURSBOT19SRVRVUk5fRFVFX1RPX0NSQVMKICN1bmRlZiBBU1NFUlQKICNlbmRpZgog
Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAKICNkZWZpbmUgQVNT
RVJUKGFzc2VydGlvbiwgLi4uKSAoKHZvaWQpMCkKICNkZWZpbmUgQVNTRVJUX1VOREVSX0NPTlNU
RVhQUl9DT05URVhUKGFzc2VydGlvbikgKCh2b2lkKTApCkBAIC0zMjIsMTIgKzMxMywxMiBAQCBX
VEZfRVhQT1JUX1BSSVZBVEUgTk9fUkVUVVJOX0RVRV9UT19DUkFTCiAgICAgICAgICh2b2lkKTAp
CiAKICNkZWZpbmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQgMAot
I2Vsc2UKKyNlbHNlIC8qIG5vdCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykgKi8KICNkZWZp
bmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNzZXJ0aW9uKSAoKHZvaWQpMCkK
ICNkZWZpbmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQgMQotI2Vu
ZGlmCisjZW5kaWYgLyogRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpICovCiAKLSNlbHNlCisj
ZWxzZSAvKiBBU1NFUlRfRU5BQkxFRCAqLwogCiAjZGVmaW5lIEFTU0VSVChhc3NlcnRpb24sIC4u
LikgZG8geyBcCiAgICAgaWYgKCEoYXNzZXJ0aW9uKSkgeyBcCkBAIC0zODUsNyArMzc2LDggQEAg
V1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JBUwogICAgICAgICAgQ1JBU0hf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTigpKSA6IFwKICAgICAgICAgKHZvaWQpMCkKICNkZWZp
bmUgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQgMAotI2VuZGlmCisK
KyNlbmRpZiAvKiBBU1NFUlRfRU5BQkxFRCAqLwogCiAvKiBBU1NFUlRfV0lUSF9NRVNTQUdFICov
CiAKQEAgLTUzMSw3ICs1MjMsOCBAQCBjb25zdGV4cHIgYm9vbCBhc3NlcnRpb25GYWlsdXJlRHVl
VG9VbnJlCiAKIC8qIFJFTEVBU0VfQVNTRVJUICovCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNp
ZiAhQVNTRVJUX0VOQUJMRUQKKwogI2RlZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24sIC4u
LikgZG8geyBcCiAgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkpIFwKICAgICAgICAgQ1JB
U0hfV0lUSF9JTkZPKF9fVkFfQVJHU19fKTsgXApAQCAtNTQ0LDEzICs1MzcsMTYgQEAgY29uc3Rl
eHByIGJvb2wgYXNzZXJ0aW9uRmFpbHVyZUR1ZVRvVW5yZQogICAgICAgICBDUkFTSF9VTkRFUl9D
T05TVEVYUFJfQ09OVEVYVCgpOyBcCiAgICAgfSBcCiB9IHdoaWxlICgwKQotI2Vsc2UKKworI2Vs
c2UgLyogQVNTRVJUX0VOQUJMRUQgKi8KKwogI2RlZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRp
b24sIC4uLikgQVNTRVJUKGFzc2VydGlvbiwgX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0Vf
QVNTRVJUX1dJVEhfTUVTU0FHRShhc3NlcnRpb24sIC4uLikgQVNTRVJUX1dJVEhfTUVTU0FHRShh
c3NlcnRpb24sIF9fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGFzc2VydGlvbikgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oYXNzZXJ0aW9uKQogI2RlZmluZSBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpCiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUX1VOREVSX0NPTlNURVhQUl9D
T05URVhUKGFzc2VydGlvbikgQVNTRVJUX1VOREVSX0NPTlNURVhQUl9DT05URVhUKGFzc2VydGlv
bikKLSNlbmRpZgorCisjZW5kaWYgLyogQVNTRVJUX0VOQUJMRUQgKi8KIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEX1dJVEhfTUVTU0FHRSgu
Li4pIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShhc3NlcnRpb25GYWlsdXJlRHVlVG9VbnJl
YWNoYWJsZUNvZGUsIF9fVkFfQVJHU19fKQpJbmRleDogU291cmNlL1dURi93dGYvQXV0b21hdGlj
VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQu
Y3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBBdXRvbWF0aWNUaHJl
YWQ6OnN0YXJ0KGNvbnN0IEFic3RyYQogICAgICAgICAgICAgUmVmUHRyPEF1dG9tYXRpY1RocmVh
ZD4gdGhyZWFkID0gcHJlc2VydmVUaGlzRm9yVGhyZWFkOwogICAgICAgICAgICAgdGhyZWFkLT50
aHJlYWREaWRTdGFydCgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIUFTU0VSVF9E
SVNBQkxFRCkgeworICAgICAgICAgICAgaWYgKFdURl9BU1NFUlRfRU5BQkxFRCkgewogICAgICAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgICAgICAgICAgICAgIEFT
U0VSVChtX2NvbmRpdGlvbi0+Y29udGFpbnMobG9ja2VyLCB0aGlzKSk7CiAgICAgICAgICAgICB9
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9CaXRWZWN0b3IuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYv
Qml0VmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBwdWJsaWM6IAog
ICAgIHNpemVfdCBmaW5kQml0KHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgY29uc3QKICAgICB7
CiAgICAgICAgIHNpemVfdCByZXN1bHQgPSBmaW5kQml0RmFzdChpbmRleCwgdmFsdWUpOwotICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoV1RGX0FTU0VSVF9FTkFC
TEVEKSB7CiAgICAgICAgICAgICBzaXplX3QgZXhwZWN0ZWRSZXN1bHQgPSBmaW5kQml0U2ltcGxl
KGluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkUmVzdWx0
KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiZmluZEJpdCgiLCBpbmRleCwgIiwgIiwgdmFs
dWUsICIpIG9uICIsICp0aGlzLCAiIHNob3VsZCBoYXZlIGdvdHRlbiAiLCBleHBlY3RlZFJlc3Vs
dCwgIiBidXQgZ290ICIsIHJlc3VsdCwgIlxuIik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9j
a09iakNFeGNlcHRpb25zLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMubW0JKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCBS
ZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4Y2VwdAogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHByb2JhYmx5IGdvaW5nIHRvIGJlIGNvbmZ1c2luZyB3aGVuIEphdmFTY3JpcHRDb3JlIGlzIHVz
ZWQgc3RhbmRhbG9uZS4gSlNDCiAgICAgLy8gd2lsbCBjYWxsIHRoaXMgY29kZSBhcyBwYXJ0IG9m
IGRlZmF1bHQgbG9jYWxlIGRldGVjdGlvbi4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODA0Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIVdURl9B
U1NFUlRfRU5BQkxFRAogICAgIE5TTG9nKEAiKioqIFdlYktpdCBkaXNjYXJkaW5nIGV4Y2VwdGlv
bjogPCVAPiAlQCIsIFtleGNlcHRpb24gbmFtZV0sIFtleGNlcHRpb24gcmVhc29uXSk7CiAjZWxz
ZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIlVuY2F1Z2h0IGV4Y2VwdGlvbiAtICVAIiwg
ZXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Jsb29tRmlsdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvQmxvb21GaWx0ZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dURi93dGYvQmxvb21GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDcgKzE4
Miw3IEBAIHB1YmxpYzoKICAgICBib29sIG1heUNvbnRhaW4oY29uc3QgQXRvbVN0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtYXlDb250YWluKHN0cmluZy5pbXBsKCktPmV4aXN0aW5nSGFz
aCgpKTsgfQogICAgIGJvb2wgbWF5Q29udGFpbihjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3Qg
eyByZXR1cm4gbWF5Q29udGFpbihzdHJpbmcuaW1wbCgpLT5oYXNoKCkpOyB9CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgLy8gU2xvdy4KICAgICBi
b29sIGxpa2VseUVtcHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0NsZWFyKCkgY29uc3Q7CkBAIC0y
MzYsNyArMjM2LDcgQEAgaW5saW5lIHZvaWQgQ291bnRpbmdCbG9vbUZpbHRlcjxrZXlCaXRzPgog
ICAgIG1fYnVja2V0cy5maWxsKDApOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdU
Rl9BU1NFUlRfRU5BQkxFRAogdGVtcGxhdGUgPHVuc2lnbmVkIGtleUJpdHM+CiBib29sIENvdW50
aW5nQmxvb21GaWx0ZXI8a2V5Qml0cz46Omxpa2VseUVtcHR5KCkgY29uc3QKIHsKQEAgLTI1Niw5
ICsyNTYsOSBAQCBib29sIENvdW50aW5nQmxvb21GaWx0ZXI8a2V5Qml0cz46OmlzQ2xlCiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCisjZW5kaWYgLy8gV1RGX0FTU0VSVF9FTkFC
TEVECiAKLX0KK30gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkJsb29tRmlsdGVyOwog
dXNpbmcgV1RGOjpDb3VudGluZ0Jsb29tRmlsdGVyOwpJbmRleDogU291cmNlL1dURi93dGYvQ2Fs
bGJhY2tBZ2dyZWdhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ2FsbGJhY2tB
Z2dyZWdhdG9yLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0NhbGxiYWNr
QWdncmVnYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3IoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQogICAgICAgICA6IG1fY2FsbGJhY2soV1RGTW92ZShjYWxs
YmFjaykpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAg
ICAgICAsIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5k
aWYKICAgICB7CiAgICAgfQogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBtX2NhbGxi
YWNrOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBi
b29sIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQ7CiAjZW5kaWYKIH07CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0NoZWNrZWRBcml0aG1ldGljLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYv
d3RmL0NoZWNrZWRBcml0aG1ldGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw3ICs1NDUsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCB0eXBlbmFtCiBpbmxpbmUgY29uc3Rl
eHByIGJvb2wgb2JzZXJ2ZXNPdmVyZmxvdygpIHsgcmV0dXJuIHRydWU7IH0KIAogdGVtcGxhdGUg
PD4KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvYnNlcnZlc092ZXJmbG93PEFzc2VydE5vT3ZlcmZs
b3c+KCkgeyByZXR1cm4gIUFTU0VSVF9ESVNBQkxFRDsgfQoraW5saW5lIGNvbnN0ZXhwciBib29s
IG9ic2VydmVzT3ZlcmZsb3c8QXNzZXJ0Tm9PdmVyZmxvdz4oKSB7IHJldHVybiBXVEZfQVNTRVJU
X0VOQUJMRUQ7IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFI+IHN0YXRpYyBpbmxpbmUgYm9vbCBzYWZlQWRkKFUgbGhzLCBWIHJocywgUiYgcmVzdWx0KQog
ewpJbmRleDogU291cmNlL1dURi93dGYvQ2hlY2tlZEJvb2xlYW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9DaGVja2VkQm9vbGVhbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQm9vbGVhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3
IEBACiBjbGFzcyBDaGVja2VkQm9vbGVhbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAog
ICAgIENoZWNrZWRCb29sZWFuKGNvbnN0IENoZWNrZWRCb29sZWFuJiBvdGhlcikKICAgICAgICAg
OiBtX3ZhbHVlKG90aGVyLm1fdmFsdWUpCiAgICAgICAgICwgbV9jaGVja2VkKGZhbHNlKQpAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBDaGVja2VkQm9vbGVhbihib29sIHZhbHVlKQog
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9B
U1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fY2hlY2tlZChmYWxzZSkKICNlbmRpZgogICAgIHsK
QEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIAogICAgIG9wZXJhdG9yIGJvb2woKQogICAg
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAg
IG1fY2hlY2tlZCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIG1fdmFsdWU7CkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBtX3ZhbHVlOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBtdXRhYmxl
IGJvb2wgbV9jaGVja2VkOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dURi93dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBGdW5jdGlvbjxPdXQoSW4uLi4pPiBtX2Z1bmN0aW9uOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fd2FzQ29uc3RydWN0ZWRP
bk1haW5UaHJlYWQgeyBpc01haW5UaHJlYWQoKSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNl
L1dURi93dGYvRGF0ZU1hdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGVN
YXRoLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzcsNyArMzc3LDcgQEAgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1
bGF0ZUxvY2FsVGltZU9mZnNldAogCiB2b2lkIGluaXRpYWxpemVEYXRlcygpCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIHN0YXRpYyBib29sIGFs
cmVhZHlJbml0aWFsaXplZDsKICAgICBBU1NFUlQoIWFscmVhZHlJbml0aWFsaXplZCk7CiAgICAg
YWxyZWFkeUluaXRpYWxpemVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCB2b2lkKiB0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhLaW5k
CiAgICAgc2l6ZV90IHNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mKFdURjo6cGFnZVNpemUoKSwg
cmVxdWVzdGVkU2l6ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA+PSByZXF1ZXN0ZWRTaXpl
KTsKICAgICB2b2lkKiByZXN1bHQgPSBPU0FsbG9jYXRvcjo6cmVzZXJ2ZUFuZENvbW1pdChzaXpl
KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgaWYg
KHJlc3VsdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemUgLyBzaXplb2Yo
dWludHB0cl90KTsgKytpKQogICAgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnRwdHJf
dCo+KHJlc3VsdClbaV0gPT0gMCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Myw3
ICs0NTMsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5
cGUqIGxvb2t1cChjb25zdCBUJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBUPiBWYWx1ZVR5cGUqIGlubGluZUxvb2t1cChjb25zdCBUJik7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIHZv
aWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0aWMg
dm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7IH0KQEAgLTUwOSw3ICs1MDksNyBAQCBERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAgICAgICAgIGl0ZXJhdG9yIG1h
a2VLbm93bkdvb2RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhp
cywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogICAg
ICAgICBjb25zdF9pdGVyYXRvciBtYWtlS25vd25Hb29kQ29uc3RJdGVyYXRvcihWYWx1ZVR5cGUq
IHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsg
bV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0
ZW5jeUV4Y2VwdFNpemUoKSBjb25zdDsKICNlbHNlCiAgICAgICAgIHN0YXRpYyB2b2lkIGNoZWNr
VGFibGVDb25zaXN0ZW5jeUV4Y2VwdFNpemUoKSB7IH0KQEAgLTYwOSw3ICs2MDksNyBAQCBERUNM
QVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAgICAgICAgIHJldHVybiBrZXk7
CiAgICAgfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIVdURl9BU1NFUlRfRU5BQkxFRAog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0
cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1l
IEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVD4KQEAgLTYxNyw3ICs2MTcsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihICiAgICAgewogICAgIH0KIAotI2Vsc2UKKyNlbHNlIC8vIFdURl9BU1NFUlRfRU5B
QkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwg
dHlwZW5hbWUgVD4KQEAgLTYzMCwxMCArNjMwLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhf
SEVBUF9JREVOVElGSUVSKEgKICAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkVmFsdWVQdHIgPSBy
ZWludGVycHJldF9jYXN0X3B0cjxWYWx1ZVR5cGUqPigmZGVsZXRlZFZhbHVlQnVmZmVyKTsKICAg
ICAgICAgVmFsdWVUeXBlJiBkZWxldGVkVmFsdWUgPSAqZGVsZXRlZFZhbHVlUHRyOwogICAgICAg
ICBUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShkZWxldGVkVmFsdWUpOwotICAgICAgICBB
U1NFUlQoIUhhc2hUcmFuc2xhdG9yOjplcXVhbChFeHRyYWN0b3I6OmV4dHJhY3QoZGVsZXRlZFZh
bHVlKSwga2V5KSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoa2V5LCAhSGFzaFRyYW5zbGF0b3I6
OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdChkZWxldGVkVmFsdWUpLCBrZXkpKTsKICAgICB9CiAK
LSNlbmRpZgorI2VuZGlmIC8vIFdURl9BU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KQEAgLTE0MTcsNyAr
MTQxNyw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEgKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZf
QVNTRVJUX0VOQUJMRUQKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1
ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFi
bGVDb25zaXN0ZW5jeSgpIGNvbnN0CkBAIC0xNDQ3LDcgKzE0NDcsNyBAQCBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAKICAgICAgICAgICAgIGF1dG8mIGtleSA9IEV4
dHJhY3Rvcjo6ZXh0cmFjdCgqZW50cnkpOwogICAgICAgICAgICAgY29uc3RfaXRlcmF0b3IgaXQg
PSBmaW5kKGtleSk7Ci0gICAgICAgICAgICBBU1NFUlQoZW50cnkgPT0gaXQubV9wb3NpdGlvbik7
CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGl0LCBlbnRyeSA9PSBpdC5tX3Bvc2l0aW9uKTsK
ICAgICAgICAgICAgICsrY291bnQ7CiAKICAgICAgICAgICAgIFZhbHVlQ2hlY2s8S2V5Pjo6Y2hl
Y2tDb25zaXN0ZW5jeShrZXkpOwpAQCAtMTQ2MCw3ICsxNDYwLDcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSAogICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPT0g
bV90YWJsZVNpemVNYXNrICsgMSk7CiAgICAgfQogCi0jZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVE
CisjZW5kaWYgLy8gV1RGX0FTU0VSVF9FTkFCTEVECiAKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRF
UkFUT1JTCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0xvZ2dlckhlbHBlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV1RGL3d0Zi9Mb2dnZXJIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyB1aW50NjRfdCBsb3dXb3JkID0gY3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCo+KChoaWdoV29yZCA8PCAzMikgKyBsb3dXb3JkKTsKICAgICB9Ci0jZWxzZQor
I2Vsc2UgLy8gUkVMRUFTRV9MT0dfRElTQUJMRUQKIAogI2RlZmluZSBMT0dJREVOVElGSUVSIChX
VEY6Om51bGxvcHQpCiAKQEAgLTg4LDggKzg4LDggQEAgcHVibGljOgogI2RlZmluZSBJTkZPX0xP
R19JRihjb25kaXRpb24sIC4uLikgICAgICAgKCh2b2lkKTApCiAjZGVmaW5lIERFQlVHX0xPR19J
Rihjb25kaXRpb24sIC4uLikgICAgICAoKHZvaWQpMCkKIAotI2VuZGlmCi0gICAgCisjZW5kaWYg
Ly8gUkVMRUFTRV9MT0dfRElTQUJMRUQKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9OYXR1cmFsTG9vcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9OYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYv
TmF0dXJhbExvb3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Nyw3ICsyODcsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKGxvb3AtPmhlYWRlcigp
ID09IGJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGxvb3A7Ci0gICAgICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChXVEZfQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAg
ICAgIGZvciAoOyBsb29wOyBsb29wID0gaW5uZXJNb3N0T3V0ZXJMb29wKCpsb29wKSkKICAgICAg
ICAgICAgICAgICBBU1NFUlQobG9vcC0+aGVhZGVyKCkgIT0gYmxvY2spOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9X
VEYvd3RmL05ldmVyRGVzdHJveWVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1faXNDb25zdHJ1Y3RlZCk7CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1faXND
b25zdHJ1Y3RlZCA9IHRydWU7CiAjZW5kaWYKIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdG9yYWdlUG9pbnRl
cigpOyB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAg
ICAgYm9vbCBpc0NvbnN0cnVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdGVkOyB9
CiAjZW5kaWYKIApAQCAtMTM3LDcgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0
IE1heWJlUmVsYXgoUHRyVHlwZSogcHRyKSB7IHB0ci0+cmVsYXhBZG9wdGlvblJlcXVpcmVtZW50
KCk7IH0KICAgICB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5B
QkxFRAogICAgIC8vIExhenlOZXZlckRlc3Ryb3llZCBvYmplY3RzIGFyZSBhbHdheXMgc3RhdGlj
LCBzbyB0aGlzIHZhcmlhYmxlIGlzIGluaXRpYWxpemVkIHRvIGZhbHNlLgogICAgIC8vIEl0IG11
c3Qgbm90IGJlIGluaXRpYWxpemVkIGR5bmFtaWNhbGx5OyB0aGF0IHdvdWxkIG5vdCBiZSB0aHJl
YWQgc2FmZS4KICAgICBib29sIG1faXNDb25zdHJ1Y3RlZDsKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L09wdGlvblNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzksMTMgKzc5LDE5IEBAIHB1YmxpYzoKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0
KFQgdCkKICAgICAgICAgOiBtX3N0b3JhZ2Uoc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+KHQpKQog
ICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIFRoaXMgYXNzZXJ0aW9uIHdpbGwgY29u
ZmxpY3Qgd2l0aCB0aGUgY29uc3RleHByIGF0dHJpYnV0ZSBpZiB3ZSBlbmFibGUgaXQgb24gTkRF
QlVHIGJ1aWxkcy4KICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9zdG9yYWdlIHx8IGhh
c09uZUJpdFNldChtX3N0b3JhZ2UpLCAiRW51bWVyYXRvciBpcyBub3QgYSB6ZXJvIG9yIGEgcG9z
aXRpdmUgcG93ZXIgb2YgdHdvLiIpOworI2VuZGlmCiAgICAgfQogCiAgICAgY29uc3RleHByIE9w
dGlvblNldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gaW5pdGlhbGl6ZXJMaXN0KQogICAgIHsK
ICAgICAgICAgZm9yIChhdXRvJiBvcHRpb24gOiBpbml0aWFsaXplckxpc3QpIHsKKyNpZm5kZWYg
TkRFQlVHCisgICAgICAgICAgICAvLyBUaGlzIGFzc2VydGlvbiB3aWxsIGNvbmZsaWN0IHdpdGgg
dGhlIGNvbnN0ZXhwciBhdHRyaWJ1dGUgaWYgd2UgZW5hYmxlIGl0IG9uIE5ERUJVRyBidWlsZHMu
CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGhhc09uZUJpdFNldChzdGF0aWNfY2Fz
dDxTdG9yYWdlVHlwZT4ob3B0aW9uKSksICJFbnVtZXJhdG9yIGlzIG5vdCBhIHBvc2l0aXZlIHBv
d2VyIG9mIHR3by4iKTsKKyNlbmRpZgogICAgICAgICAgICAgbV9zdG9yYWdlIHw9IHN0YXRpY19j
YXN0PFN0b3JhZ2VUeXBlPihvcHRpb24pOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQ2LDEyICsxMDQ2LDM3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWZu
ZGVmIEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OCisjaWYgQVNBTl9FTkFCTEVE
CisjaWZuZGVmIEpTQ19BU1NFUlRfRU5BQkxFRAorI2RlZmluZSBKU0NfQVNTRVJUX0VOQUJMRUQg
MQorI2VuZGlmCisjZW5kaWYKKworLyogQVNTRVJUX0VOQUJMRUQgc2hvdWxkIGJlIHRydWUgaWYg
d2Ugd2FudCB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0IHRvCisgICBkbyBkZWJ1ZyBhc3Nl
cnRpb24gY2hlY2tzIHVuY29uZGl0aW9uYWxseSAoZS5nLiAgdHJlYXQgYSBkZWJ1ZyBBU1NFUlQK
KyAgIGxpa2UgYSBSRUxFQVNFX0FTU0VSVC4KKyovCisjaWZuZGVmIEFTU0VSVF9FTkFCTEVECiAj
aWZkZWYgTkRFQlVHCi0jZGVmaW5lIEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9O
IDAKKyNkZWZpbmUgQVNTRVJUX0VOQUJMRUQgMAogI2Vsc2UKLSNkZWZpbmUgRU5BQkxFX0VYQ0VQ
VElPTl9TQ09QRV9WRVJJRklDQVRJT04gMQorI2RlZmluZSBBU1NFUlRfRU5BQkxFRCAxCisjZW5k
aWYKICNlbmRpZgorCisjaWZuZGVmIEpTQ19BU1NFUlRfRU5BQkxFRAorI2RlZmluZSBKU0NfQVNT
RVJUX0VOQUJMRUQgQVNTRVJUX0VOQUJMRUQKKyNlbmRpZgorI2lmbmRlZiBXVEZfQVNTRVJUX0VO
QUJMRUQKKyNkZWZpbmUgV1RGX0FTU0VSVF9FTkFCTEVEIEpTQ19BU1NFUlRfRU5BQkxFRAorI2Vu
ZGlmCisKKy8qIEl0J3MgaW1wb3J0YW50IHRoYXQgRU5BQkxFX0VYQ0VQVElPTl9TQ09QRV9WRVJJ
RklDQVRJT04gYmUgdHJ1ZSBpZiBKU0NfQVNTRVJUX0VOQUJMRUQKKyAgIGlzIHRydWUgcmVnYXJk
bGVzcyBvZiB3aGF0IHZhbHVlIEFTU0VSVF9FTkFCTEVEIGlzLiBUaGUgbGF5b3V0IG9mIHRoZSBF
eGNlcHRpb25TY29wZQorICAgY2xhc3NlcyBkZXBlbmQgb24gRU5BQkxFX0VYQ0VQVElPTl9TQ09Q
RV9WRVJJRklDQVRJT04gcmVnYXJkbGVzcyBvZiBBU1NFUlRfRU5BQkxFRC4KKyovCisjaWZuZGVm
IEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OCisjZGVmaW5lIEVOQUJMRV9FWENF
UFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OIEpTQ19BU1NFUlRfRU5BQkxFRAogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkgJiYgSEFWRShNQUNISU5FX0NPTlRFWFQpICYmIChDUFUoWDg2XzY0
KSB8fCBDUFUoQVJNNjQpKQpJbmRleDogU291cmNlL1dURi93dGYvUHRyVGFnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvUHRyVGFnLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XVEYvd3RmL1B0clRhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxMCBAQCBj
b25zdGV4cHIgUHRyVGFnIEFueVB0clRhZyA9IHN0YXRpY19jYXN0CiBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCByZWdpc3RlclB0clRhZ0xvb2t1cChQdHJUYWdMb29rdXAqKTsKIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHJlcG9ydEJhZFRhZyhjb25zdCB2b2lkKiwgUHRyVGFnIGV4cGVjdGVkVGFn
KTsKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotY29uc3RleHByIGJvb2wgZW5hYmxlUHRyVGFnRGVi
dWdBc3NlcnQgPSBmYWxzZTsKLSNlbHNlCisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiBjb25zdGV4
cHIgYm9vbCBlbmFibGVQdHJUYWdEZWJ1Z0Fzc2VydCA9IHRydWU7CisjZWxzZQorY29uc3RleHBy
IGJvb2wgZW5hYmxlUHRyVGFnRGVidWdBc3NlcnQgPSBmYWxzZTsKICNlbmRpZgogCiAjZGVmaW5l
IFdURl9QVFJUQUdfQVNTRVJUKGFjdGlvbiwgcHRyLCBleHBlY3RlZFRhZywgYXNzZXJ0aW9uKSBc
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUmVmQ291bnRlZC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0
Zi9SZWZDb3VudGVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNywxMCBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotI2lmIGRlZmluZWQoTkRFQlVHKSAmJiAhRU5BQkxFKFNFQ1VSSVRZX0FT
U0VSVElPTlMpCi0jZGVmaW5lIENIRUNLX1JFRl9DT1VOVEVEX0xJRkVDWUNMRSAwCi0jZWxzZQor
I2lmIFdURl9BU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICNk
ZWZpbmUgQ0hFQ0tfUkVGX0NPVU5URURfTElGRUNZQ0xFIDEKKyNlbHNlCisjZGVmaW5lIENIRUNL
X1JFRl9DT1VOVEVEX0xJRkVDWUNMRSAwCiAjZW5kaWYKIAogLy8gVGhpcyBiYXNlIGNsYXNzIGhv
bGRzIHRoZSBub24tdGVtcGxhdGUgbWV0aG9kcyBhbmQgYXR0cmlidXRlcy4KQEAgLTc1LDE0ICs3
NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gbG9ja2luZyBhdCBjYWxsIHNpdGVzKS4KICAgICB2b2lk
IGRpc2FibGVUaHJlYWRpbmdDaGVja3MoKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fYXJlVGhyZWFkaW5nQ2hlY2tzRW5hYmxl
ZCA9IGZhbHNlOwogI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgZW5hYmxlVGhyZWFk
aW5nQ2hlY2tzR2xvYmFsbHkoKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RG
X0FTU0VSVF9FTkFCTEVECiAgICAgICAgIGFyZVRocmVhZGluZ0NoZWNrc0VuYWJsZWRHbG9iYWxs
eSA9IHRydWU7CiAjZW5kaWYKICAgICB9CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKIHByb3Rl
Y3RlZDoKICAgICBSZWZDb3VudGVkQmFzZSgpCiAgICAgICAgIDogbV9yZWZDb3VudCgxKQotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX2lz
T3duZWRCeU1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKICNpZiBDSEVDS19SRUZf
Q09VTlRFRF9MSUZFQ1lDTEUKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
b2lkIGFwcGx5UmVmRGVyZWZUaHJlYWRpbmdDaGVjaygpIGNvbnN0CiAgICAgewotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgaWYgKGhhc09uZVJl
ZigpKSB7CiAgICAgICAgICAgICAvLyBMaWtlbHkgYW4gb3duZXJzaGlwIHRyYW5zZmVyIGFjcm9z
cyB0aHJlYWRzIHRoYXQgbWF5IGJlIHNhZmUuCiAgICAgICAgICAgICBtX2lzT3duZWRCeU1haW5U
aHJlYWQgPSBpc01haW5UaHJlYWQoKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcmVmQ291bnQ7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIG11dGFibGUgYm9vbCBtX2lzT3duZWRC
eU1haW5UaHJlYWQ7CiAgICAgYm9vbCBtX2FyZVRocmVhZGluZ0NoZWNrc0VuYWJsZWQgeyB0cnVl
IH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAkod29ya2luZyBjb3B5KQpA
QCAtMjg1LDcgKzI4NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGFzc2VydElzQ29uc2lzdGVudCgpIGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSByb290
cygpIGZ1bmN0aW9uIHRvIGJlIGlkZW1wb3RlbnQgd2hpbGUgd2UncmUgYWxpdmUgc28gd2UgY2Fu
IGNhY2hlCiAgICAgICAgIC8vIHRoZSByZXN1bHQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJZiBhIHVz
ZXIgb2YgdGhpcyBjaGFuZ2VzIHRoZSByZXN1bHQgb2YgaXRzIHJvb3RzKCkKICAgICAgICAgLy8g
ZnVuY3Rpb24sIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUgdXNlciB3aWxsIGNyZWF0ZSBhIG5ldyBp
bnN0YW5jZSBvZiB0aGlzIGNsYXNzLgpJbmRleDogU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0jaWYgIWRlZmluZWQoTkRF
QlVHKSB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyNpZiBXVEZfQVNTRVJUX0VOQUJM
RUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiBzdHJ1Y3QgU2FtZVNpemVBc1JlZkNv
dW50ZWQgewogICAgIGludCBhOwogICAgIGJvb2wgYjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1N0
YWNrQm91bmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI4LDEwICsxMjgsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tD
b25zaXN0ZW5jeSgpIGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZf
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCogY3VycmVudFBvc2l0aW9uID0gY3VycmVudFN0
YWNrUG9pbnRlcigpOwogICAgICAgICBBU1NFUlQobV9vcmlnaW4gIT0gbV9ib3VuZCk7Ci0gICAg
ICAgIEFTU0VSVChjdXJyZW50UG9zaXRpb24gPCBtX29yaWdpbiAmJiBjdXJyZW50UG9zaXRpb24g
PiBtX2JvdW5kKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjdXJyZW50UG9zaXRpb24sIGN1cnJl
bnRQb3NpdGlvbiA8IG1fb3JpZ2luICYmIGN1cnJlbnRQb3NpdGlvbiA+IG1fYm91bmQpOwogI2Vu
ZGlmCiAgICAgfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDgsNyAr
MTE0OCw3IEBAIFVSTFBhcnNlcjo6VVJMUGFyc2VyKGNvbnN0IFN0cmluZyYgaW5wdXQKICAgICAg
ICAgfHwgKGlucHV0LmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigp
CiAgICAgICAgICAgICAmJiBtX3VybC5tX3N0cmluZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQoYmFz
ZS5tX3F1ZXJ5RW5kKSkpOwogICAgIEFTU0VSVChpbnRlcm5hbFZhbHVlc0NvbnNpc3RlbnQobV91
cmwpKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAg
aWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgewogICAgICAgICAvLyBGb3JjZSBhIHN5bnRh
eCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1l
IHJlc3VsdC4KICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgaW5wdXQp
LCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CkBAIC0xMTU2LDcgKzExNTYsNyBAQCBVUkxQ
YXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJpbmcmIGlucHV0CiAgICAgICAgIGlmIChwYXJzZWQu
aXNWYWxpZCgpKQogICAgICAgICAgICAgQVNTRVJUKGFsbFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1
bHQoKSwgbV91cmwpKTsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNTRVJUX0VOQUJM
RUQKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAgLTI1NDgsMTQgKzI1
NDgsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gT3B0aW9uYQogICAgIGlu
dDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX25hbWVUb0FTQ0lJKCZpbnRlcm5h
dGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKSwgU3RyaW5nVmlldyhkb21haW4pLnVwY29udmVy
dGVkQ2hhcmFjdGVycygpLCBkb21haW4ubGVuZ3RoKCksIGhvc3RuYW1lQnVmZmVyLCBtYXhEb21h
aW5MZW5ndGgsICZwcm9jZXNzaW5nRGV0YWlscywgJmVycm9yKTsKIAogICAgIGlmIChVX1NVQ0NF
U1MoZXJyb3IpICYmICFwcm9jZXNzaW5nRGV0YWlscy5lcnJvcnMpIHsKLSNpZiBBU1NFUlRfRElT
QUJMRUQKLSAgICAgICAgVU5VU0VEX1BBUkFNKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwotI2Vs
c2UKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBp
IDwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZDsgKytpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXNB
U0NJSShob3N0bmFtZUJ1ZmZlcltpXSkpOwogICAgICAgICAgICAgQVNTRVJUKCFpc0FTQ0lJVXBw
ZXIoaG9zdG5hbWVCdWZmZXJbaV0pKTsKICAgICAgICAgfQotI2VuZGlmCisjZWxzZQorICAgICAg
ICBVTlVTRURfUEFSQU0obnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisjZW5kaWYgLy8gV1RGX0FT
U0VSVF9FTkFCTEVECiAgICAgICAgIGFzY2lpLmFwcGVuZChob3N0bmFtZUJ1ZmZlciwgbnVtQ2hh
cmFjdGVyc0NvbnZlcnRlZCk7CiAgICAgICAgIGlmIChkb21haW4gIT0gU3RyaW5nVmlldyhhc2Np
aS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCiAgICAgICAgICAgICBzeW50YXhWaW9sYXRpb24oaXRl
cmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9W
YWx1ZUNoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVmFsdWVDaGVjay5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVl
Q2hlY2sgewogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgVCYpIHsgfQog
fTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIHRlbXBs
YXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWYWx1ZUNoZWNrPFAqPiB7CiAgICAgdHlwZWRlZiBQKiBU
cmFpdFR5cGU7CiAgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBQKiBwKQpA
QCAtNDUsNiArNDUsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgVmFsdWVDaGVjazxQ
CiAgICAgICAgIFZhbHVlQ2hlY2s8UD46OmNoZWNrQ29uc2lzdGVuY3koKnApOwogICAgIH0KIH07
Ci0jZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNTRVJUX0VOQUJMRUQKIAogfQpJbmRleDogU291cmNl
L1dURi93dGYvVmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVmVjdG9yLmgJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTk4LDcgKzE1OTgsNyBAQCBpbmxpbmUgTWFsbG9jUHRyPFQsIE1hbGxvYz4gVmVj
dG9yPFQsIGluCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5LCB0eXBlbmFtZSBNYWxs
b2M+CiBpbmxpbmUgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
ciwgbWluQ2FwYWNpdHksIE1hbGxvYz46OmNoZWNrQ29uc2lzdGVuY3koKQogewotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemUoKTsgKytpKQogICAgICAgICBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3Rl
bmN5KGF0KGkpKTsKICNlbmRpZgpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBWZWN0b3I8VCwgaQogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0b3I8VD4+IHsKICAgICB0eXBlZGVmIFZlY3Rv
cjxUPiBUcmFpdFR5cGU7CiAgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBW
ZWN0b3I8VD4mIHYpCkBAIC0xNjMzLDcgKzE2MzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgVmFsdWVDaGVjazxWCiAgICAgICAgIHYuY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0K
IH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNTRVJUX0VOQUJMRUQKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIs
IHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUgTWFsbG9jPgogdGVtcGxhdGU8dHlwZW5hbWUg
VT4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dU
Ri93dGYvV2Vha0hhc2hTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDEwICsxMzgsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9zZXQuc2l6ZSgpOwogICAgIH0KIAotI2lmIEFTU0VS
VF9ESVNBQkxFRAotICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0IHsgfQotI2Vsc2UK
KyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dCB7IG1fc2V0LmNoZWNrQ29uc2lzdGVuY3koKTsgfQorI2Vsc2UKKyAgICB2b2lkIGNoZWNrQ29u
c2lzdGVuY3koKSBjb25zdCB7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dU
Ri93dGYvV2Vha1B0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OCwxNCArNjgsMTQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fcHRyID0g
bnVsbHB0cjsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxF
RAogICAgIGJvb2wgd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBt
X3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBleHBsaWNpdCBXZWFrUHRySW1wbChUKiBwdHIpCiAgICAgICAg
IDogbV9wdHIoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVDo6V2Vha1ZhbHVlVHlwZSo+KHB0cikpCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1f
d2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKICAgICB7
CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdm9pZCogbV9wdHI7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV93
YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZDsKICNlbmRpZgogfTsKQEAgLTE0MSw3ICsxNDEsNyBA
QCBjbGFzcyBXZWFrUHRyRmFjdG9yeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgV2Vha1B0ckZhY3RvcnkoKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBX
VEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgOiBtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFk
KGlzTWFpblRocmVhZCgpKQogI2VuZGlmCiAgICAgewpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZh
dGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKIAog
ICAgIG11dGFibGUgUmVmUHRyPFdlYWtQdHJJbXBsPiBtX2ltcGw7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9u
TWFpblRocmVhZDsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Z0ltcGwuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21T
dHJpbmdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQyLDcgKzU0Miw3IEBAIFJlZlB0cjxB
dG9tU3RyaW5nSW1wbD4gQXRvbVN0cmluZ0ltcGw6OmwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIGJvb2wgQXRv
bVN0cmluZ0ltcGw6OmlzSW5BdG9tU3RyaW5nVGFibGUoU3RyaW5nSW1wbCogc3RyaW5nKQogewog
ICAgIEF0b21TdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9B
dG9tU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmdUYWJsZVByb3ZpZGVyLmF0b21TdHJpbmdUYWJs
ZSgpLCAqc3RyaW5nKTsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FT
U0VSVF9FTkFCTEVECiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzSW5BdG9t
U3RyaW5nVGFibGUoU3RyaW5nSW1wbCopOwogI2VuZGlmCiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBw
cml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJ
bXBsPiBsb29rVXBTbG93Q2FzZShTdHJpbmdJbXBsJik7CiB9OwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogCiAvLyBBdG9tU3RyaW5nSW1wbHMgY3JlYXRl
ZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQgaW4gdGhlIGdlbmVyaWMgVmFsdWVD
aGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5jeSwKIC8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQg
YnkgZmFzdE1hbGxvYy4gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3Qg
dGhhdCBjYXNlLCBzbyB3ZSBkb24ndApAQCAtMTE1LDcgKzExNSw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IFZhbHVlQ2hlY2s8Y29uc3QgQXRvbVMKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KGNvbnN0IEF0b21TdHJpbmdJbXBsKikgeyB9CiB9OwogCi0jZW5kaWYKKyNlbmRpZiAvLyBX
VEZfQVNTRVJUX0VOQUJMRUQKIAogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTdHJpbmdC
dWlsZGVyOjpyZWlmeVN0cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgbV9pc1JlaWZp
ZWQgPSB0cnVlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDcgKzM3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
X2Fzc2VydChTdHJpbmc6Ok1heExlbmd0aCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSwgIiIpOwogICAgIENoZWNrZWQ8aW50MzJfdCwgQ29uZGl0aW9uYWxDcmFzaE9uT3Zl
cmZsb3c+IG1fbGVuZ3RoOwogICAgIGJvb2wgbV9pczhCaXQgeyB0cnVlIH07Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIFdURl9BU1NFUlRfRU5BQkxFRAogICAgIG11dGFibGUgYm9vbCBtX2lz
UmVpZmllZCB7IGZhbHNlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29tbW9uLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxMiw3ICs2MTIsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlLCB1bnNpZ25lCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0Ns
YXNzPiBib29sIGlubGluZSBoYXNQcmVmaXhXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29t
bW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIGNvbnN0IGNoYXIqIGxvd2VyY2FzZUxldHRl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FT
U0VSVF9FTkFCTEVECiAgICAgQVNTRVJUKCpsb3dlcmNhc2VMZXR0ZXJzKTsKICAgICBmb3IgKGNv
bnN0IGNoYXIqIGxldHRlciA9IGxvd2VyY2FzZUxldHRlcnM7ICpsZXR0ZXI7ICsrbGV0dGVyKQog
ICAgICAgICBBU1NFUlQodG9BU0NJSUxvd2VyVW5jaGVja2VkKCpsZXR0ZXIpID09ICpsZXR0ZXIp
OwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2hlci5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NywxMiArNzcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBV
Q2hhciBiKQogICAgIHsKICAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikgewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1f
aGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICBhZGRDaGFy
YWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3RlciwgYSk7CiAgICAgICAgICAg
ICBtX3BlbmRpbmdDaGFyYWN0ZXIgPSBiOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZf
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IHRydWU7
CiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNTM3LDcgKzUzNyw3IEBAIHVzaW5nIFN0YXRpY1N0cmluZ0lt
cGwgPSBTdHJpbmdJbXBsOjpTdGEKIAogc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkg
PT0gc2l6ZW9mKFN0YXRpY1N0cmluZ0ltcGwpLCAiIik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAKIC8vIFN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBT
dGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJUIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46
OmNoZWNrQ29uc2lzdGVuY3kKIC8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1h
bGxvYy4gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3QgdGhhdCBjYXNl
CkBAIC01NDYsNyArNTQ2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxTdHJpbmdJ
bXBsKgogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgU3RyaW5nSW1wbCop
IHsgfQogfTsKIAotI2VuZGlmCisjZW5kaWYgLy8gV1RGX0FTU0VSVF9FTkFCTEVECiAKIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJ
bXBsKik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwg
Y29uc3QgTENoYXIqKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk5LDcgKzE5OSw3IEBAIGlubGluZSBSZWdpc3RlcmVkU3ltYm9sSW1wbCogU3ltYm9s
SW1wbDoKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJlZFN5bWJvbEltcGwqPih0aGlz
KTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQKIC8v
IFN5bWJvbEltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJUCiAv
LyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5CiAvLyBhcyB0
aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCkBAIC0yMTQsNyArMjE0LDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QKIFZhbHVlQ2hlY2s8Y29uc3QgU3ltYm9sSW1wbCo+IHsKICAgICBz
dGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFN5bWJvbEltcGwqKSB7IH0KIH07Ci0j
ZW5kaWYKKyNlbmRpZiAvLyBXVEZfQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwoQ3JlYXRlU3ltYm9sVGFnKSA6IFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sKSB7IH0KIH07
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAvLyBVbmlx
dWVkU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQK
IC8vIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKIC8vIGFz
IHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KQEAgLTU1LDcgKzU1LDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QKIFZhbHVlQ2hlY2s8Y29uc3QgVW5pcXVlZFN0cmluZ0ltcGwqPiB7
CiAgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBVbmlxdWVkU3RyaW5nSW1w
bCopIHsgfQogfTsKLSNlbmRpZgorI2VuZGlmIC8vIFdURl9BU1NFUlRfRU5BQkxFRAogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzg1IEBACisy
MDIwLTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFi
bGUgcnVubmluZyBhIHJlbGVhc2UgYnVpbGQgd2l0aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlTb3VyY2U6OmNs
b3NlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmg6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhYmFzZURldGFpbHM6OkRhdGFiYXNlRGV0YWlscyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZURldGFpbHM6Om9wZXJhdG9yPSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVRhc2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUYXNrOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2su
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjp0ZXJtaW5hdGlvblJlcXVlc3RlZCBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6QVNUOjpUeXBlQW5ub3RhdGlvbjo6VHlwZUFu
bm90YXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJp
ZUZpbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6ZmluZEhpZ2hab21iaWVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlwZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V0hMU0w6Om1hdGNoZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpjaGVja0xpdGVyYWxUeXBlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldITFNM
OjpGaW5kQWxsVHlwZXM6OmFwcGVuZE5hbWVkVHlwZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmg6Cisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpjb21waWxlUnVsZUxpc3QpOgor
ICAgICAgICAqIGNzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbGNPcGVyYXRpb25Ob2RlOjpwcmltaXRpdmVUeXBlIGNvbnN0KToKKyAgICAgICAgKiBj
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0IGNvbnN0KToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogZG9tL0FjdGl2ZURP
TU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OmFzc2VydFN1c3Bl
bmRJZk5lZWRlZFdhc0NhbGxlZCBjb25zdCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVj
dC5oOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxn
b3JpdGhtcy5oOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHA6
CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkU2NvcGU6OkN1c3RvbUVsZW1l
bnRSZWFjdGlvbkRpc2FsbG93ZWRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVt
ZW50UmVhY3Rpb25EaXNhbGxvd2VkU2NvcGU6On5DdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxv
d2VkU2NvcGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aGl0VGVzdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6ZGVjcmVtZW50UmVmZXJlbmNpbmdOb2RlQ291bnQpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkZFNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRl
IGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpk
cm9wQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRh
bnRJdGVyYXRvcjo6cG9wQW5jZXN0b3JTaWJsaW5nU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OnRyYXZlcnNlTmV4dFNpYmxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKiBkb20vRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9yLS0pOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpk
cm9wQXNzZXJ0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudENvbnN0
SXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRJ
dGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
Ojp0cmF2ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VBbmNlc3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDb25zdEl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZVByZXZpb3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNraXBwaW5nQ2hpbGRyZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZUFu
Y2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6ZHJvcEFzc2VydGlvbnMpOgorICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuY3BwOgor
ICAgICAgICAqIGRvbS9FdmVudENvbnRleHQuaDoKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5l
ci5oOgorICAgICAgICAqIGRvbS9FdmVudFBhdGguY3BwOgorICAgICAgICAqIGRvbS9FdmVudFNl
bmRlci5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFRhcmdldDo6c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFRhcmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVycyk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6ZGVyZWYgY29uc3QpOgorICAgICAgICAqIGRvbS9TY3JpcHREaXNhbGxvd2VkU2Nv
cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKToKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckRhdGFMaXN0OjpleGVjdXRlIGNvbnN0KToKKyAgICAg
ICAgKiBkb20vU2xvdEFzc2lnbm1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2ln
bm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3Np
Z25tZW50OjpyZW1vdmVTbG90RWxlbWVudEJ5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTbG90
QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQWZ0ZXJTbG90TXV0YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KToKKyAgICAgICAgKiBk
b20vU2xvdEFzc2lnbm1lbnQuaDoKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVPcmRlcmVkTWFwOjphZGQpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKiBk
b20vVHJlZVNjb3BlT3JkZXJlZE1hcC5oOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6Cisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmg6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkQ2FjaGU6OnJlbW92ZUFsbEl0
ZW1zRm9yUGFnZSk6CisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmg6CisgICAg
ICAgICogaHRtbC9DYW52YXNCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6
Om5vdGlmeU9ic2VydmVyc0NhbnZhc0Rlc3Ryb3llZCk6CisgICAgICAgICogaHRtbC9DYW52YXNC
YXNlLmg6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjpkaWRQb3B1bGF0ZSk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjogY29uc3QpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6YXNzZXJ0Um93SXNJblRhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjppbmRleEZvclBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OkhUTUxQYXJzZXJTY2hlZHVsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c3VzcGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpyZXN1bWUpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9r
ZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6YmVnaW5TdGFydFRhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmJlZ2luRW5kVGFnKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUb2tlbjo6ZW5kQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJl
ZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RU
cmVlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6fkhUTUxUcmVlQnVpbGRlcik6CisgICAgICAgICog
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9yQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aW1hdGVk
VmVydGljYWxQb3NpdGlvbik6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpCb3gpOgorICAgICAg
ICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6OnNldFRvcExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjpzZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRMZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0Q29udGVudEJveEhlaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldENvbnRlbnRCb3hXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEhvcml6b250YWxNYXJnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OnNldEhvcml6b250YWxDb21wdXRlZE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6OnNldFBhZGRpbmcpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5SW5saW5lUmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6SW5saW5lUmVj
dDo6SW5saW5lUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0Ojpz
ZXRUb3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OklubGluZVJlY3Q6OnNldFRv
cCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0OjpzZXRCb3R0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6SW5saW5lUmVjdDo6c2V0TGVmdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0OjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0OjpzZXRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
TGluZUJveDo6TGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94Ojpz
ZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpM
aW5lQm94OjpyZXNldEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVC
b3g6OkJhc2VsaW5lOjpCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5l
Qm94OjpCYXNlbGluZTo6c2V0QXNjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6Okxp
bmVCb3g6OkJhc2VsaW5lOjpzZXREZXNjZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkxpbmVCb3g6OkJhc2VsaW5lOjpyZXNldCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlSZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSZWN0OjpSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJlY3Q6OnNldFRvcExlZnQpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6c2V0VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OlJlY3Q6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6c2V0
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6c2V0SGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlJlY3Q6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheTo6UmVjdDo6Y2xvbmUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mbG9hdHMv
RmxvYXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpDb2xsYXBzaWJsZUNvbnRlbnQ6OmNvbGxhcHNlKToKKyAgICAgICAgKiBsYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRh
YmxlR3JpZDo6Q29sdW1uOjpzZXRXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6VGFibGVHcmlkOjpDb2x1bW46OnNldExvZ2ljYWxXaWR0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6Q29sdW1uOjpzZXRMb2dpY2FsTGVmdCk6CisgICAg
ICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjphdHRhY2hUb0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpkZXRhY2hGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmFk
ZFN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6bHJ1TGlzdEZvcik6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cmVtb3ZlRnJvbUxSVUxpc3QpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlTGF5
b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdM
YXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAg
ICAgICAqIHBhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKiBwYWdlL1Zp
ZXdwb3J0Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnJlbnRFdmVudFNjb3BlOjpDdXJyZW50RXZlbnRT
Y29wZSk6CisgICAgICAgICogcGxhdGZvcm0vRGF0ZUNvbXBvbmVudHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0ZUNvbXBvbmVudHM6OnRvU3RyaW5nRm9yVGltZSBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9U
aW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVlZGVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JhdGNoQnVmZmVyOjpnZXRTY3JhdGNoQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0FDRkxheWVyVHJlZUhvc3Q6OnNldFdpbmRvdyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJEYXRhQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dzdEFsbG9jYXRvckZhc3RNYWxsb2MuY3BwOgorICAgICAgICAo
Z3N0QWxsb2NhdG9yRmFzdE1hbGxvY0ZyZWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5nQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAg
KE5pY29zaWE6OlBhaW50aW5nQ29udGV4dENhaXJvOjpGb3JQYWludGluZzo6Rm9yUGFpbnRpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFCYWNr
aW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHA6CisgICAgICAgIChOaWNvc2lhOjpCYWNraW5n
U3RvcmVUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlVGlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJ
bXBsLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBs
Ojp+Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFkaWVudERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRp
ZW50OjpmaWxsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJE
YXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXRE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OmFwcGVuZEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OlBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdGg6OnN0cm9rZUNvbnRhaW5zIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBhdGg6OnRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEOjpzZXRUYWdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6
On5SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDcm9zc09yaWdpblNhZmVI
ZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
c3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1l
bnQ6OlNRTGl0ZVN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6
OnByZXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpmaW5hbGl6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DT01QdHIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvQ29tcGxleExpbmVMYXlv
dXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleExpbmVMYXlvdXQ6OnJlbW92ZUlubGlu
ZUJveCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RmxvYXRpbmdPYmplY3RzOjphZGRQbGFjZWRPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRpbmdPYmplY3RzOjpyZW1vdmVQbGFjZWRPYmplY3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZFRy
YWNrU2l6aW5nQWxnb3JpdGhtLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtLmg6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dERpc2FsbG93ZWRTY29w
ZS5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRv
Q29udGFpbmVyIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjp3aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwUmVjdHNDYWNoZTo6Q2xpcFJlY3RzQ2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6dXBkYXRlQ2xpcFJlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxj
dWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJl
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp0cmF2ZXJz
ZVVuY2hhbmdlZFN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVCYWNraW5nQW5kSGllcmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6YWRkRGVzY2VuZGFudHNUb092ZXJsYXBNYXBSZWN1cnNpdmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVS
ZXBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjps
YXllckhhczNEQ29udGVudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheW91
dFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpSZW5kZXJM
YXlvdXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6Y29tcHV0
ZU9mZnNldHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OmFkZExheW91
dERlbHRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
On5SZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpjbGVhck5l
ZWRzTGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclF1b3RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3Rlc0Zv
ckxhbmd1YWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZVNlY3Rpb246OmNvbXB1dGVPdmVyZmxvd0Zyb21DZWxscyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dExpbmVCb3hlczo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGlu
ZS9CcmVha2luZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRyeUh5cGhlbmF0aW5nKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyaWRTcGFuOjpHcmlkU3Bhbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVHJlZUJ1aWxkZXI6OlJ1Ynk6OmRldGFjaCk6CisgICAgICAgICogcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUcmVlUG9zaXRpb246OmNvbXB1dGVOZXh0U2libGluZyk6CisgICAgICAgICogcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlvbi5oOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZv
bnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRl
cjo6UGxhY2Vob2xkZXI6OlBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RG
Rm9udENvbnZlcnRlcjo6UGxhY2Vob2xkZXI6OnBvcHVsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kQ0ZGVGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpmaXJzdEdseXBoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kS0VSTlRhYmxlKToKKyAgICAgICAg
KiBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJh
bnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5zZm9ybURpc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RyYW5zZm9ybURpc3RhbmNlOjpzY2FsZWREaXN0YW5jZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkU1ZHVHJhbnNmb3Jtcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6YWRkVG9TVkdUcmFuc2Zvcm0gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmRpc3RhbmNlIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6
CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjp+UGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUpOgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuY3BwOgorCiAyMDIwLTAxLTA1ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1NMTF0gR2VuZXJhdGUgcnVucyBm
b3IgcHJlc2VydmVkIG5ldyBsaW5lcwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgRmV0Y2hCb2R5U291cmNlOjpkb0NhbmNlbCgpCiAKIHZv
aWQgRmV0Y2hCb2R5U291cmNlOjpjbG9zZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBGZXRjaEJv
ZHlPd25lciogbV9ib2R5T3duZXI7CiAgICAgYm9vbCBtX2lzQ2FuY2VsbGluZyB7IGZhbHNlIH07
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2lzQ2xvc2Vk
IHsgZmFsc2UgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jdXJy
ZW50VXNhZ2UoZGV0YWlscy5tX2N1cnJlbnRVc2FnZSkKICAgICAgICAgLCBtX2NyZWF0aW9uVGlt
ZShkZXRhaWxzLm1fY3JlYXRpb25UaW1lKQogICAgICAgICAsIG1fbW9kaWZpY2F0aW9uVGltZShk
ZXRhaWxzLm1fbW9kaWZpY2F0aW9uVGltZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgLCBtX3RocmVhZChkZXRhaWxzLm1fdGhyZWFkLmNvcHlSZWYoKSkKICNl
bmRpZgogICAgIHsKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBtX2N1cnJlbnRV
c2FnZSA9IGRldGFpbHMubV9jdXJyZW50VXNhZ2U7CiAgICAgICAgIG1fY3JlYXRpb25UaW1lID0g
ZGV0YWlscy5tX2NyZWF0aW9uVGltZTsKICAgICAgICAgbV9tb2RpZmljYXRpb25UaW1lID0gZGV0
YWlscy5tX21vZGlmaWNhdGlvblRpbWU7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgICAgIG1fdGhyZWFkID0gZGV0YWlscy5tX3RocmVhZC5jb3B5UmVmKCk7CiAjZW5k
aWYKICAgICAgICAgcmV0dXJuICp0aGlzOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
dWludDY0X3QgY3VycmVudFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VXNhZ2U7IH0K
ICAgICBPcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9j
cmVhdGlvblRpbWU7IH0KICAgICBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIFRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90
aHJlYWQuZ2V0KCk7IH0KICNlbmRpZgogCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
dWludDY0X3QgbV9jdXJyZW50VXNhZ2UgeyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRpbWUsIFdh
bGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9jcmVhdGlvblRpbWU7CiAgICAgTWFya2FibGU8V2Fs
bFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9tb2RpZmljYXRpb25UaW1lOwotI2lm
bmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFk
IHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
YXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIERhdGFiYXNlVGFz
azo6cGVyZm9ybVRhc2soKQogICAgIGlmIChtX3N5bmNocm9uaXplcikKICAgICAgICAgbV9zeW5j
aHJvbml6ZXItPnRhc2tDb21wbGV0ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIG1fY29tcGxldGUgPSB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIC8vIENhbGxlZCBieSB0aGUgdGFzay4KICAgICB2b2lkIHRhc2tDb21wbGV0ZWQoKTsKIAot
I2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaGFzQ2hlY2tlZEZv
clRlcm1pbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGVja2VkRm9yVGVybWluYXRpb247
IH0KICAgICB2b2lkIHNldEhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpIHsgbV9oYXNDaGVja2Vk
Rm9yVGVybWluYXRpb24gPSB0cnVlOyB9CiAjZW5kaWYKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fdGFza0NvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAgTG9jayBtX3N5bmNo
cm9ub3VzTXV0ZXg7CiAgICAgQ29uZGl0aW9uIG1fc3luY2hyb25vdXNDb25kaXRpb247Ci0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc0NoZWNrZWRGb3JU
ZXJtaW5hdGlvbiB7IGZhbHNlIH07CiAjZW5kaWYKIH07CkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKIAogICAgIERhdGFiYXNlJiBkYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2U7
IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wg
aGFzU3luY2hyb25pemVyKCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbml6ZXI7IH0KICAgICBi
b29sIGhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3luY2hyb25p
emVyLT5oYXNDaGVja2VkRm9yVGVybWluYXRpb24oKTsgfQogI2VuZGlmCkBAIC05Miw3ICs5Miw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29u
c3QgPSAwOwogI2VuZGlmCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBib29sIG1fY29tcGxldGUgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlcXVlc3RUZXJtaW5hdGlvbigKIAogYm9vbCBEYXRhYmFz
ZVRocmVhZDo6dGVybWluYXRpb25SZXF1ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0
YXNrU3luY2hyb25pemVyKSBjb25zdAogewotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIGlmICh0YXNrU3luY2hyb25pemVyKQogICAgICAgICB0YXNrU3luY2hyb25pemVy
LT5zZXRIYXNDaGVja2VkRm9yVGVybWluYXRpb24oKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpv
bWJpZUZpbmRlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkK
IHsKICAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBIaWdoWm9tYmllRmluZGVyIGZpbmRlcjsKICAgICBmaW5k
ZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xJbmZlclR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0
aWMgYm9vbCBtYXRjaGVzKGNvbnN0IEFTVDo6VHlwZSYgdW5pCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgaWYgKGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpICYmIGlzPEFTVDo6TmFt
ZWRUeXBlPih1bmlmeU90aGVyKSkgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBhdXRvJiBuYW1lZFRoaXMgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlw
ZT4odW5pZnlUaGlzKTsKICAgICAgICAgYXV0byYgbmFtZWRPdGhlciA9IGRvd25jYXN0PEFTVDo6
TmFtZWRUeXBlPih1bmlmeU90aGVyKTsKICAgICAgICAgQVNTRVJUKCFpczxBU1Q6OlR5cGVEZWZp
bml0aW9uPihuYW1lZFRoaXMpICYmICFpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZE90aGVy
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVy
YWxUeXBlQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBl
Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBuYW1lc3BhY2UgV0hMU0wgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIGdldE5h
dGl2ZVR5cGVEZWNsYXJhdGlvbihBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkK
IHsKICAgICBpZiAoIWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2
ZWRUeXBlKCkpKQpAQCAtNzMsMTQgKzczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChu
YXRpdmVUeXBlRGVjbGFyYXRpb24tPmNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKHVuc2ln
bmVkSW50ZWdlckxpdGVyYWxUeXBlLnZhbHVlKCkpKTsKICAgICB9CiB9OwotI2VuZGlmCisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBjaGVja0xpdGVyYWxUeXBlcyhQcm9ncmFtJiBw
cm9ncmFtKQogewotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFt
KTsKLSNlbHNlCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBMaXRlcmFsVHlwZUNoZWNrZXIoKS5W
aXNpdG9yOjp2aXNpdChwcm9ncmFtKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0p
OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmROYW1lZFR5cGUoQVNUOjpOYW1l
ZFR5cGUmIHR5cGUpCiAgICAgewogICAgICAgICAvLyBUaGUgd2F5IHdlIHdhbGsgdGhlIEFTVCBl
bnN1cmVzIHdlIHNob3VsZCBuZXZlciB2aXNpdCBhIG5hbWVkIHR5cGUgdHdpY2UuCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAoYXV0byYgZW50
cnkgOiBtX25hbWVkVHlwZXMpCiAgICAgICAgICAgICBBU1NFUlQoJmVudHJ5LmdldCgpLnVuaWZ5
Tm9kZSgpICE9ICZ0eXBlLnVuaWZ5Tm9kZSgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVz
c1NwYWNlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML0FTVC9XSExTTEFkZHJlc3NTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw3IEBAIGNsYXNzIFR5cGVBbm5vdGF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBUeXBlQW5ub3RhdGlvbigpCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIDogbV9lbXB0eSh0cnVlKQogI2VuZGlmCiAg
ICAgewpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWYXJpYW50
PExlZnRWYWx1ZSwgQWJzdHJhY3RMZWZ0VmFsdWUsIFJpZ2h0VmFsdWU+IG1faW5uZXI7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2VtcHR5IHsg
ZmFsc2UgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0
PiBtX2dsb2JhbE9iamVjdDsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExp
c3RlbmVyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcg
QEAgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcgogI2VuZGlmCiB9CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0Nsb25lSW5TaGFkb3dUcmVlT2ZTVkdVc2VFbGVtZW50KE5vZGUmIG9yaWdpbmFsTm9k
ZSwgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0KQogewogICAgIGlmICghZXZlbnRUYXJnZXQuaXNO
b2RlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZl
bnRMaXN0ZW5lci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0
ZShDcmVhdGlvbkFyZ3VtZW50cyYmKTsKICAgICBKU0xhenlFdmVudExpc3RlbmVyKENyZWF0aW9u
QXJndW1lbnRzJiYsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24m
KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQg
Y2hlY2tWYWxpZGl0eUZvckV2ZW50VGFyZ2V0KEV2ZW50VGFyZ2V0JikgZmluYWw7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgY29tcGls
ZVRvQnl0ZWNvZGUoQ29tYmluZWRVUgogCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0
KENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxl
SlNPTiwgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGNhbGxPbk1haW5U
aHJlYWQoW3J1bGVKU09OID0gcnVsZUpTT04uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0
ID0gcGFyc2VkUnVsZUxpc3QuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgQVNTRVJUKHBhcnNl
UnVsZUxpc3QocnVsZUpTT04pLnZhbHVlKCkgPT0gcGFyc2VkUnVsZUxpc3QpOwogICAgIH0pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBDU1NVbml0VHlwZSBDU1NDYWxj
T3BlcmF0aW9uTm9kZTo6cHJpbWl0CiAgICAgYXV0byB1bml0Q2F0ZWdvcnkgPSBjYXRlZ29yeSgp
OwogICAgIHN3aXRjaCAodW5pdENhdGVnb3J5KSB7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVn
b3J5OjpOdW1iZXI6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQogICAgICAgICAgICAgQVNTRVJU
KGNoaWxkLT5jYXRlZ29yeSgpID09IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcik7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4Myw3ICsz
MDgzLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhh
c2lzQ3VzdG9tTWFyaygpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7CiAgICAgICAgICAgICBj
YXNlIFRleHRFbXBoYXNpc01hcms6OkF1dG86CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAg
ICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgVGV4dEVt
cGhhc2lzTWFyazo6RG90OgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzVmFsaWRDU1NVbml0VHlwZUZvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5l
IGJvb2wgaXNTdHJpbmdUeXBlKENTU1VuaXRUeXBlIHR5cGUpCiB7CkBAIC0xNzYsNyArMTc2LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzU3RyaW5nVHlwZShDU1NVbml0VAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqLCBTdHJp
bmc+IENTU1RleHRDYWNoZTsKIHN0YXRpYyBDU1NUZXh0Q2FjaGUmIGNzc1RleHRDYWNoZSgpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMiw3
ICs4MTIsNyBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTCiAgICAg
ICAgICAgICByZXR1cm4gdGFnSGlzdG9yeS0+c2VsZWN0b3JUZXh0KCIgfiAiICsgYnVpbGRlci50
b1N0cmluZygpICsgcmlnaHRTaWRlKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3Vic2Vs
ZWN0b3I6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElT
QUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogI2Vu
ZGlmCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KiBtX3N0eWxlU2hlZXQ7CiB9Owog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgYm9vbCBp
c0FjY2VwdGFibGVDU1NTdHlsZVNoZWV0UGFyZW50KE5vZGUqIHBhcmVudE5vZGUpCiB7CiAgICAg
Ly8gT25seSB0aGVzZSBub2RlcyBjYW4gYmUgcGFyZW50cyBvZiBTdHlsZVNoZWV0cywgYW5kIHRo
ZXkgbmVlZCB0byBjYWxsIGNsZWFyT3duZXJOb2RlKCkgd2hlbiBtb3ZlZCBvdXQgb2YgZG9jdW1l
bnQuCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hl
ZXRQYXIKICAgICAgICAgfHwgaXM8U1ZHU3R5bGVFbGVtZW50PigqcGFyZW50Tm9kZSkKICAgICAg
ICAgfHwgcGFyZW50Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNU
SU9OX05PREU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBSZWY8Q1NT
U3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+
JiYgc2hlZXQsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9BY3RpdmVET01PYmplY3QuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUs
NyBAQCBBY3RpdmVET01PYmplY3Q6On5BY3RpdmVET01PYmplY3QoKQogCiB2b2lkIEFjdGl2ZURP
TU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQoIW1fc3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkKTsK
ICAgICBtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCA9IHRydWU7CiAjZW5kaWYKQEAgLTk1LDE4
ICs5NSwxNiBAQCB2b2lkIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKICAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZCgq
dGhpcyk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAog
dm9pZCBBY3RpdmVET01PYmplY3Q6OmFzc2VydFN1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCgpIGNv
bnN0CiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGlmICghbV9zdXNwZW5kSWZOZWVkZWRX
YXNDYWxsZWQpCiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNhbGwgc3VzcGVuZElm
TmVlZGVkKCkgZm9yICVzIiwgYWN0aXZlRE9NT2JqZWN0TmFtZSgpKTsKLSNlbmRpZgogICAgIEFT
U0VSVChtX3N1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCk7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8v
IEFTU0VSVF9FTkFCTEVECiAKIGJvb2wgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHF1ZXVl
VGFza1RvRGlzcGF0Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVm
PEV2ZW50PiYmKTsKIAogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgeyAwIH07
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX3N1
c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCB7IGZhbHNlIH07CiAgICAgUmVmPFRocmVhZD4gbV9jcmVh
dGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKQEAgLTE1MSw3ICsxNTEs
NyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBY3RpdmVET01PYmplY3RFdmVudERpc3Bh
dGNoVGFzazsKIH07CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQK
IAogaW5saW5lIHZvaWQgQWN0aXZlRE9NT2JqZWN0Ojphc3NlcnRTdXNwZW5kSWZOZWVkZWRXYXND
YWxsZWQoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hp
bGRSZW1vdmFsRXZlbnRzKFIKIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIENoaWxkTm9kZXNMYXp5
U25hcHNob3Q6OmxhdGVzdFNuYXBzaG90OwogCiB1bnNpZ25lZCBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OnNfY291bnQgPSAwOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSogU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOwog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKIENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKiBDb250YWluZXJDaGlsZFJlbW92
YWxTY29wZTo6c19zY29wZSA9IG51bGxwdHI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw3ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBE
ZWxldGUgdGhpcyBjbGFzcyBhZnRlciBmaXhpbmcgRm9ybUFzc29jaWF0ZWRFbGVtZW50IHRvIGF2
b2lkIGNhbGxpbmcgZ2V0RWxlbWVudEJ5SWQgZHVyaW5nIGEgdHJlZSByZW1vdmFsLgotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogY2xhc3MgQ29udGFpbmVyQ2hpbGRS
ZW1vdmFsU2NvcGUgewogcHVibGljOgogICAgIENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKENv
bnRhaW5lck5vZGUmIHBhcmVudE9mUmVtb3ZlZFRyZWUsIE5vZGUmIGNoaWxkKQpAQCAtNTQsMTIg
KzU0LDEyIEBAIHByaXZhdGU6CiAgICAgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUqIG1fcHJl
dmlvdXNTY29wZTsKICAgICBzdGF0aWMgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUqIHNfc2Nv
cGU7CiB9OwotI2Vsc2UKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogY2xhc3MgQ29udGFp
bmVyQ2hpbGRSZW1vdmFsU2NvcGUgewogcHVibGljOgogICAgIENvbnRhaW5lckNoaWxkUmVtb3Zh
bFNjb3BlKENvbnRhaW5lck5vZGUmLCBOb2RlJikgeyB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8g
bm90IEFTU0VSVF9FTkFCTEVECiAKIE5vZGVWZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQo
Q29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUsIE5vZGUmKTsKIHZvaWQgbm90aWZ5
Q2hpbGROb2RlUmVtb3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBO
b2RlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVl
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICsz
MDQsNyBAQCB2b2lkIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlCiAgICAgcXVl
dWUtPmFkZChlbGVtZW50KTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogdW5zaWduZWQgQ3VzdG9tRWxlbWVudFJlYWN0aW9uRGlzYWxsb3dlZFNjb3BlOjpz
X2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCA9IDA7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCwyNSArOTQsMjUgQEAgY2xhc3MgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uRGlzYWxsb3dlZFNjbwogcHVibGljOgogICAgIEN1c3RvbUVsZW1l
bnRSZWFjdGlvbkRpc2FsbG93ZWRTY29wZSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2Fs
bG93ZWRDb3VudCsrOwogI2VuZGlmCiAgICAgfQogCiAgICAgfkN1c3RvbUVsZW1lbnRSZWFjdGlv
bkRpc2FsbG93ZWRTY29wZSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgICAgICBBU1NFUlQoc19jdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxv
d2VkQ291bnQpOwogICAgICAgICBzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3Vu
dC0tOwogI2VuZGlmCiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgc3RhdGljIGJvb2wgaXNSZWFjdGlvbkFsbG93ZWQoKSB7IHJldHVybiAhc19j
dXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkQ291bnQ7IH0KICNlbmRpZgogCiAgICAgY2xh
c3MgQWxsb3dlZFNjb3BlIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBwdWJsaWM6CiAgICAgICAgIEFsbG93ZWRTY29wZSgpCiAgICAgICAgICAgICA6IG1f
b3JpZ2luYWxDb3VudChzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCkKQEAg
LTEyNywxMSArMTI3LDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2ln
bmVkIG1fb3JpZ2luYWxDb3VudDsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAg
ICAgfTsKIAogcHJpdmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgc19jdXN0b21FbGVtZW50UmVh
Y3Rpb25EaXNhbGxvd2VkQ291bnQ7CiAKICAgICBmcmllbmQgY2xhc3MgQWxsb3dlZFNjb3BlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY2LDcgKzExNjYs
NyBAQCBzdHJ1Y3QgVW5pY29kZUNvZGVQb2ludFJhbmdlIHsKICAgICBVQ2hhcjMyIG1heGltdW07
CiB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBj
b25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGIpCiB7CkBAIC0xMTc1LDcgKzExNzUsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNvCiAgICAgcmV0dXJuIGEubWF4
aW11bSA8IGIubWluaW11bTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAogc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBVbmljb2RlQ29kZVBvaW50UmFu
Z2UmIGEsIFVDaGFyMzIgYikKIHsKQEAgLTgyMTAsNyArODIxMCw3IEBAIGJvb2wgRG9jdW1lbnQ6
OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXUKICAgICBpZiAoIXJlbmRlclZpZXcoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaGl0VGVzdFJlc3RvcmVyIHsgbV9pbkhpdFRlc3Rp
bmcsIHRydWUgfTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3NSw3ICszNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhh
c0JlZ3VuIHx8ICFtX3JlZmVyZW5jaW5nTm9kZUNvdW50KTsKICAgICAgICAgLS1tX3JlZmVyZW5j
aW5nTm9kZUNvdW50OwogICAgICAgICBpZiAoIW1fcmVmZXJlbmNpbmdOb2RlQ291bnQgJiYgIXJl
ZkNvdW50KCkpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAg
IG1fcmVmQ291bnRBbmRQYXJlbnRCaXQgPSBzX3JlZkNvdW50SW5jcmVtZW50OyAvLyBBdm9pZCBk
b3VibGUgZGVzdHJ1Y3Rpb24gdGhyb3VnaCB1c2Ugb2YgUmVmPFQ+L1JlZlB0cjxUPi4gKFRoaXMg
aXMgYSBzZWN1cml0eSBtaXRpZ2F0aW9uIGluIGNhc2Ugb2YgcHJvZ3JhbW1lciBlcnJvci4gSXQg
d2lsbCBBU1NFUlQgaW4gZGVidWcgYnVpbGRzLikKQEAgLTE1MjcsNyArMTUyNyw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpbkhpdFRlc3RpbmcoKSBj
b25zdCB7IHJldHVybiBtX2luSGl0VGVzdGluZzsgfQogI2VuZGlmCiAKQEAgLTIwMDQsNyArMjAw
NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYXJlRGV2aWNlTW90aW9uQW5kT3JpZW50YXRp
b25VcGRhdGVzU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlckRpZEludGVyYWN0
V2l0aFBhZ2UgeyBmYWxzZSB9OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIGJvb2wgbV9pbkhpdFRlc3RpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4OCw3ICsyMjg4LDcgQEAgdm9p
ZCBFbGVtZW50OjphZGRTaGFkb3dSb290KFJlZjxTaGFkb3dSbwogICAgICAgICBzaGFkb3dSb290
LnNldEhvc3QodGhpcyk7CiAgICAgICAgIHNoYWRvd1Jvb3Quc2V0UGFyZW50VHJlZVNjb3BlKHRy
ZWVTY29wZSgpKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICAgICBBU1NFUlQobm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoKnRoaXMsIHNoYWRvd1Jvb3Qp
LmlzRW1wdHkoKSk7CiAjZWxzZQogICAgICAgICBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCgqdGhp
cywgc2hhZG93Um9vdCk7CkBAIC0zNTUxLDcgKzM1NTEsNyBAQCBEYXRhc2V0RE9NU3RyaW5nTWFw
JiBFbGVtZW50OjpkYXRhc2V0KCkKIAogVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CiAgICAgICAgIGlmIChj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSkpCiAg
ICAgICAgICAgICBBU1NFUlQoaXNVUkxBdHRyaWJ1dGUoKmF0dHJpYnV0ZSkpOwpAQCAtMzU2Miw3
ICszNTYyLDcgQEAgVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaQogCiBV
UkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBpZiAoZWxlbWVudERhdGEoKSkgewogICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBh
dHRyaWJ1dGUgPSBmaW5kQXR0cmlidXRlQnlOYW1lKG5hbWUpKQogICAgICAgICAgICAgQVNTRVJU
KGlzVVJMQXR0cmlidXRlKCphdHRyaWJ1dGUpKTsKQEAgLTM3ODEsNyArMzc4MSw3IEBAIGJvb2wg
RWxlbWVudDo6aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGMKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBFbGVtZW50OjpmYXN0
QXR0cmlidXRlTG9va3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAog
ewogICAgIGlmIChuYW1lID09IEhUTUxOYW1lczo6c3R5bGVBdHRyKQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MDcsNyArNzA3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2
b2lkIGF0dGFjaEF0dHJpYnV0ZU5vZGVJZk5lZWRlZChBdHRyJik7CiAKLSNpZm5kZWYgTkRFQlVH
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZhc3RBdHRyaWJ1
dGVMb29rdXBBbGxvd2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3IuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8QW5jZXN0b3JTaWJsaW5nLCAxNj4gbV9hbmNl
c3RvclNpYmxpbmdTdGFjazsKICAgICB1bnNpZ25lZCBtX2RlcHRoIHsgMCB9OwogCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNz
ZXJ0aW9ucyBtX2Fzc2VydGlvbnM7CiAjZW5kaWYKIH07CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5s
aW5lIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOgogCiBpbmxpbmUgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
KENvbnRhaW5lck5vZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpCiAgICAgOiBtX2N1cnJlbnQoZmly
c3RDaGlsZChyb290KSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICAsIG1fYXNzZXJ0aW9ucyhtX2N1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTExNSw3ICsxMTUs
NyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6CiAKIGlubGluZSBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50
SXRlcmF0b3IoQ29udGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCkKICAgICA6IG1fY3Vy
cmVudChjdXJyZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICwgbV9hc3NlcnRpb25zKG1fY3VycmVudCkKICNlbmRpZgogewpAQCAtMTQzLDcgKzE0Myw3
IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjoKIAogaW5saW5lIHZv
aWQgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKIHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlv
bnMuY2xlYXIoKTsKICNlbmRpZgogfQpAQCAtMTc4LDcgKzE3OCw3IEBAIGlubGluZSB2b2lkIEVs
ZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXIKICAgICBtX2RlcHRoID0gbV9hbmNlc3RvclNpYmxp
bmdTdGFjay5sYXN0KCkuZGVwdGg7CiAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5yZW1vdmVM
YXN0KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAv
LyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgog
ICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0
Y2hBc3NlcnRpb24oKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3ImCiAKICAgICBtX2N1cnJlbnQgPSBuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlm
ICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24oKTsKICNlbmRpZgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvciYKIAogICAgIG1fY3VycmVudCA9IHByZXZpb3VzU2libGluZygq
bV9jdXJyZW50KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0
Y2hBc3NlcnRpb24oKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgRWxlbWVudCogbV9jdXJyZW50OwogICAgIFZlY3Rv
cjxFbGVtZW50KiwgMTY+IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2s7CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25z
IG1fYXNzZXJ0aW9uczsKICNlbmRpZgogfTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBFbGVtZW50KiBtX2N1cnJlbnQ7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9h
bmNlc3RvclNpYmxpbmdTdGFjazsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwogI2Vu
ZGlmCiB9OwpAQCAtMTE1LDcgKzExNSw3IEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yOjpFbGVtZW4KIAogaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IoRWxlbWVudCogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJy
ZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9h
c3NlcnRpb25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbmxpbmUg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVuCiAKIGlubGluZSB2b2lkIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKICNlbmRp
ZgogfQpAQCAtMTUxLDcgKzE1MSw3IEBAIEFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciYKIAogICAgIG1fY3VycmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxh
c3QoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8v
IERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAg
ICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRj
aEFzc2VydGlvbigpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIEFMV0FZU19JTkxJTkUgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYKIAogICAgIG1fY3VycmVudCA9IGRlZXBlc3RTaWJsaW5nOwogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUg
YXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1f
Y3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9u
KCk7CkBAIC0yMjgsNyArMjI4LDcgQEAgaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjo6RQogCiBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50
RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3VycmVudCkKICAgICA6IG1f
Y3VycmVudChjdXJyZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTIzNyw3ICsyMzcs
NyBAQCBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFCiAKIGlubGluZSB2
b2lkIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQogewot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fYXNzZXJ0aW9u
cy5jbGVhcigpOwogI2VuZGlmCiB9CkBAIC0yNjQsNyArMjY0LDcgQEAgQUxXQVlTX0lOTElORSBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcgogCiAgICAgbV9jdXJyZW50ID0gbV9hbmNlc3RvclNp
YmxpbmdTdGFjay50YWtlTGFzdCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJl
YWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25z
LmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRJdGVyYXRvci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCIKICNlbmRp
ZgogCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSog
bV9yb290OwogICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1f
YXNzZXJ0aW9uczsKICNlbmRpZgogfTsKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3Vy
cmVudDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEVs
ZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwogI2VuZGlmCiB9OwpAQCAtMTA2
LDcgKzEwNiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVy
Tm9kZSogcm9vdCwgRWxlbWVudFR5cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKICAg
ICAsIG1fY3VycmVudChjdXJyZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTExOCw3
ICsxMTgsNyBAQCBpbmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlCiAgICAg
QVNTRVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011
dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgq
bV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVz
IHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9w
RXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIGlubGluZSBFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAg
ICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJl
bnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cygqbV9jdXJyZW50LCBtX3Jvb3Qp
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3Ag
dGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYg
KCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbigpOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0
aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJyZW50KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUg
aXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBt
X2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKQEAgLTE2MCw3ICsxNjAs
NyBAQCBpbmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlCiAgICAgQVNTRVJU
KG1fY3VycmVudCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQo
KSk7CiAgICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJs
aW5nKCptX2N1cnJlbnQpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRo
ZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZl
bnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBFbGVtZW50
SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBB
U1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQg
PSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50
LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQu
CiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNw
YXRjaEFzc2VydGlvbigpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+JiBFbGUKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlu
bGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OmRyb3BBc3NlcnRpb25zKCkK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2Vy
dGlvbnMuY2xlYXIoKTsKICNlbmRpZgogfQpAQCAtMjEzLDcgKzIxMyw3IEBAIGlubGluZSBFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50ICE9IG1f
cm9vdCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAg
ICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50VHlwZT4oKm1f
Y3VycmVudCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
Ly8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4K
ICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3Bh
dGNoQXNzZXJ0aW9uKCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxl
bWVudENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVu
dFR5cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICAsIG1fY3VycmVudChjdXJy
ZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9h
c3NlcnRpb25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCBpbmxpbmUg
RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+CiAgICAgQVNTRVJUKG1fY3VycmVudCk7
CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9j
dXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3Qp
OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3Ag
dGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYg
KCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbigpOwpAQCAtMjkwLDcgKzI5MCw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4KICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0
aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxl
bWVudFR5cGU+OjpwcmV2aW91cygqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVu
IHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAg
ICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzA0LDcg
KzMwNCw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBB
U1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0
YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2li
bGluZygqbV9jdXJyZW50KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0
aGUgZW5kLgogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgRWxlbWVu
dENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50
ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKCptX2N1cnJlbnQpOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhl
IGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFt
X2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlv
bigpOwpAQCAtMzMyLDcgKzMzMiw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4KICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9u
cy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2Vy
dGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJl
bnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4KICAgICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7CiAgICAgQVNTRVJUKCFtX2Fzc2Vy
dGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRB
bmNlc3Rvck9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9u
IHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkK
ICAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkBAIC0z
NTgsNyArMzU4LDcgQEAgaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPgog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIHZvaWQgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCiB7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7CiAj
ZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgVG91Y2hFdmVudENvbnRleHQ6OmlzVG91Y2hF
dmVudENvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogCiB2b2lkIFRvdWNoRXZlbnRDb250ZXh0OjpjaGVja1JlYWNoYWJp
bGl0eShjb25zdCBSZWY8VG91Y2hMaXN0PiYgdG91Y2hMaXN0KSBjb25zdAogewpAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgVG91Y2hFdmVudENvbnRleHQ6OmNoZWNrUmVhY2hhYmlsaXQKICAgICAg
ICAgQVNTRVJUKCFpc1VucmVhY2hhYmxlTm9kZShkb3duY2FzdDxOb2RlPih0b3VjaExpc3QtPml0
ZW0oaSktPnRhcmdldCgpKSkpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudENvbnRleHQuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50Q29udGV4dCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc1Vu
cmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCopIGNvbnN0OwogI2VuZGlmCiAKQEAgLTEwMCw3ICsx
MDAsNyBAQCBwcml2YXRlOgogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiBpbmxpbmUgYm9vbCBFdmVu
dENvbnRleHQ6OmlzVW5yZWFjaGFibGVOb2RlKEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNvbnN0CiB7
CkBAIC0xMzQsNyArMTM0LDcgQEAgaW5saW5lIFRvdWNoTGlzdCYgVG91Y2hFdmVudENvbnRleHQ6
OnRvdQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIEFTU0VSVF9ESVNB
QkxFRAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFBU1NFUlRfRU5BQkxFRAogCiBpbmxp
bmUgdm9pZCBUb3VjaEV2ZW50Q29udGV4dDo6Y2hlY2tSZWFjaGFiaWxpdHkoY29uc3QgUmVmPFRv
dWNoTGlzdD4mKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVu
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
aXNBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgdmlydHVhbCB2b2lkIGNoZWNrVmFsaWRpdHlGb3JFdmVudFRhcmdldChF
dmVudFRhcmdldCYpIHsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDM4LDEzICs0MzgsMTMgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNvbGxlY3RUcmVlUwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFtX2FuY2VzdG9yVHJlZVNjb3Blcy5pc0VtcHR5KCkpOwogfQogCi0jaWYgQVNTRVJUX0RJU0FC
TEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAKIGlubGluZSB2b2lkIFJlbGF0ZWROb2RlUmV0YXJn
ZXRlcjo6Y2hlY2tDb25zaXN0ZW5jeShOb2RlJikKIHsKIH0KIAotI2Vsc2UKKyNlbHNlIC8vIEFT
U0VSVF9FTkFCTEVECiAKIHZvaWQgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0NvbnNpc3Rl
bmN5KE5vZGUmIGN1cnJlbnRUYXJnZXQpCiB7CkBAIC00NTQsNiArNDU0LDYgQEAgdm9pZCBSZWxh
dGVkTm9kZVJldGFyZ2V0ZXI6OmNoZWNrQ29uc2lzdAogICAgIEFTU0VSVChtX3JldGFyZ2V0ZWRS
ZWxhdGVkTm9kZSA9PSAmY3VycmVudFRhcmdldC50cmVlU2NvcGUoKS5yZXRhcmdldFRvU2NvcGUo
bV9yZWxhdGVkTm9kZSkpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsRXZlbnQoVCYpOwogICAgIHZvaWQgZGlz
cGF0Y2hQZW5kaW5nRXZlbnRzKCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoVCYgc2VuZGVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fZGlzcGF0Y2hTb29uTGlzdC5maW5kKCZzZW5kZXIpICE9IG5vdEZvdW5k
IHx8IG1fZGlzcGF0Y2hpbmdMaXN0LmZpbmQoJnNlbmRlcikgIT0gbm90Rm91bmQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAgYm9vbCBFdmVudFRhcmdldDo6aXNQYXltZW50UmVxdWVzdCgpIGNvbgogCiBib29sIEV2ZW50
VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVm
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25z
JiBvcHRpb25zKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIGxpc3RlbmVyLT5jaGVja1ZhbGlkaXR5Rm9yRXZlbnRUYXJnZXQoKnRoaXMpOwogI2VuZGlm
CiAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlCiAgICAgaWYgKGV4aXN0aW5nTGlzdGVuZXIpIHsKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCAq
ZXhpc3RpbmdMaXN0ZW5lciwgZmFsc2UpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgICAgIGxpc3RlbmVyLT5jaGVja1ZhbGlkaXR5Rm9yRXZlbnRUYXJn
ZXQoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0
Ojppbm5lckludm9rZUV2ZW50TGlzdGVuCiAgICAgICAgIGlmIChyZWdpc3RlcmVkTGlzdGVuZXIt
PmlzUGFzc2l2ZSgpKQogICAgICAgICAgICAgZXZlbnQuc2V0SW5QYXNzaXZlTGlzdGVuZXIodHJ1
ZSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
cmVnaXN0ZXJlZExpc3RlbmVyLT5jYWxsYmFjaygpLmNoZWNrVmFsaWRpdHlGb3JFdmVudFRhcmdl
dCgqdGhpcyk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQs
NyArMzY0LDcgQEAgTm9kZTo6fk5vZGUoKQogCiAgICAgZG9jdW1lbnQoKS5kZWNyZW1lbnRSZWZl
cmVuY2luZ05vZGVDb3VudCgpOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgKCFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FT
U0VSVElPTlMpKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIChBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykpCiAg
ICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewogICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQtPnRvdWNoRXZl
bnRMaXN0ZW5lcnNDb250YWluKCp0aGlzKSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFkb2N1bWVudC0+dG91Y2hFdmVudEhhbmRsZXJzQ29udGFpbigqdGhpcykp
OwpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgU2hhZG93Um9vdCogTm9kZTo6Y29udGFpbmluZ1NoYWRv
d1Jvb3QoKQogICAgIHJldHVybiBpczxTaGFkb3dSb290Pihyb290KSA/IGRvd25jYXN0PFNoYWRv
d1Jvb3Q+KCZyb290KSA6IG51bGxwdHI7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1j
bG9zZWQtc2hhZG93LWhpZGRlbgogc3RhdGljIGJvb2wgaXNDbG9zZWRTaGFkb3dIaWRkZW5Vc2lu
Z1NwZWNEZWZpbml0aW9uKGNvbnN0IE5vZGUmIEEsIGNvbnN0IE5vZGUmIEIpCiB7CkBAIC0yMDk2
LDcgKzIwOTYsNyBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1bWVuCiAj
ZW5kaWYKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9B
U1NFUlRJT05TKQorI2lmIEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJ
T05TKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW9sZERvY3VtZW50LnRvdWNoRXZl
bnRMaXN0ZW5lcnNDb250YWluKCp0aGlzKSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIW9sZERvY3VtZW50LnRvdWNoRXZlbnRIYW5kbGVyc0NvbnRhaW4oKnRoaXMpKTsK
QEAgLTI1MzUsNyArMjUzNSw3IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogICAgIGlm
IChpczxTVkdFbGVtZW50PigqdGhpcykpCiAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0
aGlzKS5kZXRhY2hBbGxQcm9wZXJ0aWVzKCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCiAgICAgZGVs
ZXRlIHRoaXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdDsKICAgICB1bnNpZ25lZCByZWZDb3VudCgp
IGNvbnN0OwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBt
X2RlbGV0aW9uSGFzQmVndW4geyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2luUmVtb3Zl
ZExhc3RSZWZGdW5jdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJl
ZCB7IHRydWUgfTsKQEAgLTY3OSw3ICs2NzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxOb2RlUmFyZURhdGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+IG1fcmFyZURhdGE7CiB9Owog
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiBpbmxpbmUgdm9pZCBhZG9wdGVk
KE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQpAQCAtNjg4LDcgKzY4OCw3IEBAIGlubGlu
ZSB2b2lkIGFkb3B0ZWQoTm9kZSogbm9kZSkKICAgICBBU1NFUlQoIW5vZGUtPm1faW5SZW1vdmVk
TGFzdFJlZkZ1bmN0aW9uKTsKICAgICBub2RlLT5tX2Fkb3B0aW9uSXNSZXF1aXJlZCA9IGZhbHNl
OwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogQUxXQVlTX0lOTElORSB2
b2lkIE5vZGU6OnJlZigpIGNvbnN0CiB7CkBAIC03MTAsNyArNzEwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIE5vZGU6OmRlcmVmKCkgY29uc3QKICAgICBpZiAoIXVwZGF0ZWRSZWZDb3VudCkgewog
ICAgICAgICAvLyBEb24ndCB1cGRhdGUgbV9yZWZDb3VudEFuZFBhcmVudEJpdCB0byBhdm9pZCBk
b3VibGUgZGVzdHJ1Y3Rpb24gdGhyb3VnaCB1c2Ugb2YgUmVmPFQ+L1JlZlB0cjxUPi4KICAgICAg
ICAgLy8gKFRoaXMgaXMgYSBzZWN1cml0eSBtaXRpZ2F0aW9uIGluIGNhc2Ugb2YgcHJvZ3JhbW1l
ciBlcnJvci4gSXQgd2lsbCBBU1NFUlQgaW4gZGVidWcgYnVpbGRzLikKLSNpZm5kZWYgTkRFQlVH
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24g
PSB0cnVlOwogI2VuZGlmCiAgICAgICAgIGNvbnN0X2Nhc3Q8Tm9kZSY+KCp0aGlzKS5yZW1vdmVk
TGFzdFJlZigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRTY29w
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHREaXNhbGxvd2VkU2Nv
cGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdERpc2Fs
bG93ZWRTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLy8gUmVsZWFzZSBhc3NlcnRzIGluIGNhbkV4ZWN1dGVTY3JpcHQgc2hvdWxkIGJlIHN1
ZmZpY2llbnQgZm9yIHNlY3VyaXR5IGRlZmVuc2UgcHVycG9zZXMuCiAgICAgICAgIHN0YXRpYyBi
b29sIGlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoTm9kZSYgbm9kZSkKICAgICAgICAg
ewotI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisj
aWYgQVNTRVJUX0VOQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgICAg
ICAgICByZXR1cm4gaXNTY3JpcHRBbGxvd2VkKCkgfHwgRXZlbnRBbGxvd2VkU2NvcGU6OmlzQWxs
b3dlZE5vZGUobm9kZSk7CiAjZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwpA
QCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH07CiAgICAgCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgY2xhc3MgRXZlbnRBbGxv
d2VkU2NvcGUgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgRXZlbnRBbGxvd2VkU2Nv
cGUoQ29udGFpbmVyTm9kZSYgdXNlckFnZW50Q29udGVudFJvb3QpCkBAIC0xNDAsMTMgKzE0MCwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIEV2ZW50QWxsb3dlZFNjb3BlKiBtX3ByZXZpb3VzU2NvcGU7
CiAgICAgICAgIHN0YXRpYyBFdmVudEFsbG93ZWRTY29wZSogc19jdXJyZW50U2NvcGU7CiAgICAg
fTsKLSNlbHNlCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKICAgICBjbGFzcyBFdmVudEFs
bG93ZWRTY29wZSB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBFdmVudEFsbG93ZWRT
Y29wZShDb250YWluZXJOb2RlJikgeyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZE5v
ZGUoTm9kZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwotI2VuZGlmCisjZW5kaWYgLy8gbm90
IEFTU0VSVF9FTkFCTEVECiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgb25jZSB0
aGUgc3luYyBsYXlvdXQgaW5zaWRlIFNWR0ltYWdlOjpkcmF3IGlzIHJlbW92ZWQsCiAgICAgLy8g
Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEgbm8gbG9uZ2VyIHN5bmNocm9ub3Vz
bHkgY3JlYXRlcyBhIGRvY3VtZW50IGR1cmluZyBzdHlsZSByZXNvbHV0aW9uLApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTMgKzEyMywxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnJlbW92ZUZyb21DCiAgICAgfQogfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisj
aWYgIUFTU0VSVF9FTkFCTEVECiAKIGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogfQogCi0jZWxzZQorI2Vsc2UgLy8gQVNTRVJU
X0VOQUJMRUQKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjaGVja0NvbnNpc3RlbmN5
KCkgY29uc3QKIHsKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y2hlY2tDb25zaXMKICAgICB9CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9F
TkFCTEVECiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewogICAgICAg
ICBMb2NrZXI8TG9jaz4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7
CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRz
TWFwKCkuY29udGFpbnMobV9jb250ZXh0SWRlbnRpZmllciksCkBAIC0xNTksNyArMTU5LDcgQEAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgIH0KIAogICAgIG1f
aW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7Ci0jZW5kaWYKKyNlbmRp
ZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHNl
dEFjdGl2ZVNlcnZpY2VXb3JrZXIobnVsbHB0cik7CkBAIC0xNjgsNyArMTY4LDcgQEAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgIHdoaWxlIChhdXRvKiBkZXN0
cnVjdGlvbk9ic2VydmVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy50YWtlQW55KCkpCiAgICAg
ICAgIGRlc3RydWN0aW9uT2JzZXJ2ZXItPmNvbnRleHREZXN0cm95ZWQoKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faW5TY3JpcHRFeGVjdXRpb25D
b250ZXh0RGVzdHJ1Y3RvciA9IGZhbHNlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyNCw3ICszMjQsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgYm9vbCBtX2FjdGl2ZURP
TU9iamVjdEFkZGl0aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2lsbHByb2Nl
c3NNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0c1Nvb24geyBmYWxzZSB9OwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2luU2NyaXB0RXhlY3V0aW9u
Q29udGV4dERlc3RydWN0b3IgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU2VsZWN0b3JRdWVyeS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKIHN0YXRpYyBib29sIGlzU2luZ2xlVGFnTmFtZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yJiBzZWxlY3RvcikKIHsKICAgICByZXR1cm4gc2VsZWN0b3IuaXNMYXN0SW5UYWdIaXN0
b3J5KCkgJiYgc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6VGFnOwpAQCAtNDYsNyAr
NDYsNyBAQCBzdGF0aWMgYm9vbCBpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKGNvCiB7CiAgICAg
cmV0dXJuIHNlbGVjdG9yLmlzTGFzdEluVGFnSGlzdG9yeSgpICYmIHNlbGVjdG9yLm1hdGNoKCkg
PT0gQ1NTU2VsZWN0b3I6OkNsYXNzOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJM
RUQKIAogZW51bSBjbGFzcyBJZE1hdGNoaW5nVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUsCkBA
IC01NDIsNyArNTQyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4
ZQogICAgIGNhc2UgQ29tcGlsZWRTaW5nbGVXaXRoUm9vdEZpbHRlcjoKICAgICBjYXNlIENvbXBp
bGVkU2luZ2xlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElT
QUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYK
ICNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9TbG90QXNzaWdubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1Nsb3RBc3NpZ25tZW50LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgY29uc3QgQXRvbVN0cmluZyYgc2xvdE5hbWVGcm9tU2xvCiAgICAgcmV0dXJuIHNsb3RO
YW1lRnJvbUF0dHJpYnV0ZVZhbHVlKGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKS5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHNsb3RBdHRyKSk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBIVE1MU2xvdEVsZW1lbnQqIGZpbmRTbG90
RWxlbWVudChTaGFkb3dSb290JiBzaGFkb3dSb290LCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFt
ZSkKIHsKICAgICBmb3IgKGF1dG8mIHNsb3RFbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRN
TFNsb3RFbGVtZW50PihzaGFkb3dSb290KSkgewpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgSFRN
TFNsb3RFbGVtZW50KiBmaW5kU2xvdEVsZW1lbnQoCiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIEhUTUxTbG90
RWxlbWVudCogbmV4dFNsb3RFbGVtZW50U2tpcHBpbmdTdWJ0cmVlKENvbnRhaW5lck5vZGUmIHN0
YXJ0aW5nTm9kZSwgQ29udGFpbmVyTm9kZSogc2tpcHBlZFN1YnRyZWUpCiB7CkBAIC0xMDYsNyAr
MTA2LDcgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6cmVuYW1lU2xvdEVsZW1lbnQoSAogCiB2b2lk
IFNsb3RBc3NpZ25tZW50OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lLCBIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290
KQogewotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCghbV9z
bG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKCZzbG90RWxlbWVudCkpOwog
ICAgIG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5hZGQoJnNsb3RFbGVtZW50KTsK
ICNlbmRpZgpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RF
bGVtZW50QnlOYW0KIAogdm9pZCBTbG90QXNzaWdubWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5h
bWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwg
Q29udGFpbmVyTm9kZSogb2xkUGFyZW50T2ZSZW1vdmVkVHJlZUZvclJlbW92YWwsIFNoYWRvd1Jv
b3QmIHNoYWRvd1Jvb3QpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgQVNTRVJUKG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucygmc2xv
dEVsZW1lbnQpKTsKICAgICBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2sucmVtb3Zl
KCZzbG90RWxlbWVudCk7CiAjZW5kaWYKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFNsb3RBc3Np
Z25tZW50OjpyZXNvbHZlU2xvdHNBZnRlclNsCiAgICAgaWYgKG11dGF0aW9uVHlwZSA9PSBTbG90
TXV0YXRpb25UeXBlOjpJbnNlcnRpb24pIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIHBhdGggaXMg
dGFrZW4gb25seSB3aGVuIGNvbnRpbnVlIGFib3ZlIGZvciAhY3VycmVudFNsb3QgaXMgdGFrZW4u
CiAgICAgICAgIC8vIGkuZS4gdGhlcmUgaXMgYSBuZXcgc2xvdCBiZWluZyBpbnNlcnRlZCBpbnRv
IHRoZSB0cmVlIGJ1dCB3ZSBoYXZlIHlldCB0byBpbnZva2UgYWRkU2xvdEVsZW1lbnRCeU5hbWUg
b24gaXQuCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX3Nsb3RzKQogICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZh
bHVlLT5zZWVuRmlyc3RFbGVtZW50IHx8ICFmaW5kU2xvdEVsZW1lbnQoc2hhZG93Um9vdCwgZW50
cnkua2V5KSk7CiAjZW5kaWYKQEAgLTM0MSwxMCArMzQxLDggQEAgSFRNTFNsb3RFbGVtZW50KiBT
bG90QXNzaWdubWVudDo6ZmluZEZpcgogICAgIGlmIChzbG90LnNob3VsZFJlc29sdmVTbG90RWxl
bWVudCgpKQogICAgICAgICByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKHNoYWRvd1Jvb3QpOwogCi0j
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghc2xvdC5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRz
Rm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucyhzbG90LmVsZW1lbnQuZ2V0KCkpKTsKICAgICBB
U1NFUlQoISFzbG90LmVsZW1lbnQgPT0gISFzbG90LmVsZW1lbnRDb3VudCk7Ci0jZW5kaWYKIAog
ICAgIHJldHVybiBzbG90LmVsZW1lbnQuZ2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vU2xvdEFzc2lnbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xv
dEFzc2lnbm1lbnQuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Ns
b3RBc3NpZ25tZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFNsb3Q+PiBtX3Nsb3Rz
OwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgSGFzaFNldDxIVE1M
U2xvdEVsZW1lbnQqPiBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2s7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgVHJlZVNjb3BlT3JkZXJl
ZE1hcDo6YWRkKGNvbnN0IEF0b20KICAgICB9KTsKICAgICBNYXBFbnRyeSYgZW50cnkgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUo
U0VDVVJJVFlfQVNTRVJUSU9OUykKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJ
VFlfQVNTRVJUSU9OUykKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZW50
cnkucmVnaXN0ZXJlZEVsZW1lbnRzLmNvbnRhaW5zKCZlbGVtZW50KSk7CiAgICAgZW50cnkucmVn
aXN0ZXJlZEVsZW1lbnRzLmFkZCgmZWxlbWVudCk7CiAjZW5kaWYKQEAgLTEyMiw3ICsxMjIsNyBA
QCBpbmxpbmUgRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0CiAgICAgICAgIHJldHVy
biAmZWxlbWVudDsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAvLyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgbWF5IGNhbGwgZ2V0RWxlbWVudEJ5
SWQgdG8gZmluZCBpdHMgb3duZXIgZm9ybSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJlZSByZW1vdmFs
LgogICAgIGlmIChhdXRvKiBjdXJyZW50U2NvcGUgPSBDb250YWluZXJDaGlsZFJlbW92YWxTY29w
ZTo6Y3VycmVudFNjb3BlKCkpIHsKICAgICAgICAgQVNTRVJUKCZzY29wZS5yb290Tm9kZSgpID09
ICZjdXJyZW50U2NvcGUtPnBhcmVudE9mUmVtb3ZlZFRyZWUoKS5yb290Tm9kZSgpKTsKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBpbmxpbmUgRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0CiAg
ICAgICAgIH0KICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKyNlbmRp
ZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlT3JkZXJlZE1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRWxlbWVudCogZWxlbWVudCB7IG51
bGxwdHIgfTsKICAgICAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiAgICAgICAgIFZlY3RvcjxF
bGVtZW50Kj4gb3JkZXJlZExpc3Q7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlf
QVNTRVJUSU9OUykKICAgICAgICAgSGFzaFNldDxFbGVtZW50Kj4gcmVnaXN0ZXJlZEVsZW1lbnRz
OwogI2VuZGlmCiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIFN0cmluZyBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUo
Y29uc3QKICAgICByZXR1cm4gY29udGVudFR5cGUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBCbG9i
Ojppc05vcm1hbGl6ZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewog
ICAgIC8vIEZJWE1FOiBEbyB3ZSByZWFsbHkgd2FudCB0byB0cmVhdCB0aGUgZW1wdHkgc3RyaW5n
IGFuZCBudWxsIHN0cmluZyBhcyB2YWxpZCBjb250ZW50IHR5cGVzPwpAQCAtMjEzLDcgKzIxMyw3
IEBAIGJvb2wgQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBVUkxS
ZWdpc3RyeSYgQmxvYjo6cmVnaXN0cnkoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgLy8gVGhlIG5vcm1hbGl6YXRp
b24gcHJvY2VkdXJlIGRlc2NyaWJlZCBpbiB0aGUgRmlsZSBBUEkgc3BlYy4KICAgICBzdGF0aWMg
U3RyaW5nIG5vcm1hbGl6ZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzdGF0aWMgYm9vbCBpc05vcm1hbGl6
ZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBpc05vcm1hbGl6
ZWRDb250ZW50VHlwZShjb25zdCBDU3RyaW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9y
d2FyZEMKIAogdm9pZCBCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2UoUGFn
ZSYgcGFnZSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzSW5SZW1vdmVBbGxJdGVtc0ZvclBhZ2UsICJXZSBz
aG91bGQgbm90IHJlZW50ZXIgdGhpcyBtZXRob2QiKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBp
blJlbW92ZUFsbEl0ZW1zRm9yUGFnZVNjb3BlIHsgbV9pc0luUmVtb3ZlQWxsSXRlbXNGb3JQYWdl
LCB0cnVlIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDYWNoZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRl
OgogICAgIExpc3RIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4+IG1faXRlbXM7CiAgICAgdW5z
aWduZWQgbV9tYXhTaXplIHswfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIGJvb2wgbV9pc0luUmVtb3ZlQWxsSXRlbXNGb3JQYWdlIHsgZmFsc2UgfTsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIENhbnZhc0Jhc2U6Om5vdGlmeU9ic2VydmVyc0Nh
bnZhc0RlCiAKICAgICBtX29ic2VydmVycy5jbGVhcigpOwogCi0jaWZuZGVmIE5ERUJVRworI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgbV9kaWROb3RpZnlPYnNlcnZlcnNDYW52YXNEZXN0cm95ZWQg
PSB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRlU2F2ZXI7CiAK
ICAgICBib29sIG1fb3JpZ2luQ2xlYW4geyB0cnVlIH07Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2RpZE5vdGlmeU9ic2VydmVyc0NhbnZhc0Rlc3Ryb3ll
ZCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9vYnNl
cnZlcnM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmdUb0VsZW1lbnRzTWFw
IG1fbmFtZU1hcDsKICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9wcm9wZXJ0eU5hbWVzOwogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2RpZFBv
cHVsYXRlIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBpbmxpbmUg
c2l6ZV90IENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoCiAKIGlubGluZSB2b2lkIENvbGxlY3Rp
b25OYW1lZEVsZW1lbnRDYWNoZTo6ZGlkUG9wdWxhdGUoKQogewotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fZGlkUG9wdWxhdGUgPSB0cnVlOwogI2VuZGlm
CiAgICAgaWYgKHNpemVfdCBjb3N0ID0gbWVtb3J5Q29zdCgpKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MzYsNyArNzM2LDcgQEAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIEhUTUxTZWxlY3RFbAog
ICAgIGlmIChtX3Nob3VsZFJlY2FsY0xpc3RJdGVtcykKICAgICAgICAgcmVjYWxjTGlzdEl0ZW1z
KCk7CiAgICAgZWxzZSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIFZlY3RvcjxIVE1MRWxlbWVudCo+IGl0ZW1zID0gbV9saXN0SXRlbXM7CiAgICAg
ICAgIHJlY2FsY0xpc3RJdGVtcyhmYWxzZSk7CiAgICAgICAgIEFTU0VSVChpdGVtcyA9PSBtX2xp
c3RJdGVtcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0Mywx
MCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTFRhYmxlUm93CiAKIHN0YXRpYyBp
bmxpbmUgdm9pZCBhc3NlcnRSb3dJc0luVGFibGUoSFRNTFRhYmxlRWxlbWVudCYgdGFibGUsIEhU
TUxUYWJsZVJvd0VsZW1lbnQqIHJvdykKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBVTlVTRURfUEFSQU0odGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShy
b3cpOwotI2Vsc2UKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghcm93KQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKHJvdy0+cGFyZW50Tm9kZSgpID09ICZ0YWJsZSkKQEAg
LTU0LDcgKzU0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFzc2VydFJvd0lzSW5UYWJsZShIVAog
ICAgIEFTU0VSVChyb3ctPnBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKHJvdy0+cGFyZW50Tm9k
ZSgpLT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8fCByb3ctPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFt
ZSh0Ym9keVRhZykgfHwgcm93LT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodGZvb3RUYWcpKTsK
ICAgICBBU1NFUlQocm93LT5wYXJlbnROb2RlKCktPnBhcmVudE5vZGUoKSA9PSAmdGFibGUpOwot
I2VuZGlmCisjZW5kaWYgLy8gbm90IEFTU0VSVF9FTkFCTEVECiB9CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0luU2VjdGlvbihIVE1MVGFibGVSb3dFbGVtZW50JiByb3csIGNvbnN0IEhUTUxRdWFs
aWZpZWROYW1lJiBzZWN0aW9uVGFnKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NDMsMTMgKzY0MywxNyBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6aW5kCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbm5lclRleHRWYWx1ZSgpLmxl
bmd0aCgpOwogICAgIGluZGV4ID0gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCk7IC8vIEZJWE1FOiBX
ZSBzaG91bGRuJ3QgaGF2ZSB0byBjYWxsIGlubmVyVGV4dFZhbHVlKCkganVzdCB0byBpZ25vcmUg
dGhlIGxhc3QgTEYuIFNlZSBmaW5pc2hUZXh0LgotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyNp
ZiAwCisgICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0aW9uIGNvZGUgd2FzIG5ldmVyIGJ1aWx0LCBo
YXMgYml0IHJvdHRlZCwgYW5kIG5lZWRzIHRvIGJlIGZpeGVkIGJlZm9yZSBpdCBjYW4gYmUgZW5h
YmxlZDoKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1
NzA2LgorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbiA9IHBhc3NlZFBvc2l0aW9uOwogICAgIHVuc2lnbmVkIGluZGV4Q29tcHV0ZWRCeVZpc2li
bGVQb3NpdGlvbiA9IDA7CiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc05vdE51bGwoKSkKICAg
ICAgICAgaW5kZXhDb21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uID0gV2ViQ29yZTo6aW5kZXhGb3JW
aXNpYmxlUG9zaXRpb24oaW5uZXJUZXh0LCB2aXNpYmxlUG9zaXRpb24sIGZhbHNlIC8qIGZvclNl
bGVjdGlvblByZXNlcnZhdGlvbiAqLyk7CiAgICAgQVNTRVJUKGluZGV4ID09IGluZGV4Q29tcHV0
ZWRCeVZpc2libGVQb3NpdGlvbik7CiAjZW5kaWYKKyNlbmRpZgogICAgIHJldHVybiBpbmRleDsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjp1bndpbgogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp+Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZSgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgdW53aW5kU3RhdGVTdGFjaygpOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIu
Y3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBIVE1M
UGFyc2VyU2NoZWR1bGVyOjpIVE1MUGFyc2VyU2NoZWR1bGVyCiAgICAgLCBtX3BhcnNlclRpbWVM
aW1pdChTZWNvbmRzKHBhcnNlclRpbWVMaW1pdChtX3BhcnNlci5kb2N1bWVudCgpLT5wYWdlKCkp
KSkKICAgICAsIG1fY29udGludWVOZXh0Q2h1bmtUaW1lcigqdGhpcywgJkhUTUxQYXJzZXJTY2hl
ZHVsZXI6OmNvbnRpbnVlTmV4dENodW5rVGltZXJGaXJlZCkKICAgICAsIG1faXNTdXNwZW5kZWRX
aXRoQWN0aXZlVGltZXIoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICNlbmRpZgogewpAQCAtMTI4LDcgKzEy
OCw3IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6c3VzcGVuZCgpCiB7CiAgICAgQVNTRVJU
KCFtX3N1c3BlbmRlZCk7CiAgICAgQVNTRVJUKCFtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVy
KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX3N1c3Bl
bmRlZCA9IHRydWU7CiAjZW5kaWYKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgSFRNTFBhcnNl
clNjaGVkdWxlcjo6cmVzdW1lKCkKIHsKICAgICBBU1NFUlQobV9zdXNwZW5kZWQpOwogICAgIEFT
U0VSVCghbV9jb250aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0aXZlKCkpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVk
dWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJTY2hlZHVsZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgcHJpdmF0ZToKICAgICBTZWNvbmRzIG1fcGFyc2VyVGltZUxpbWl0OwogICAgIFRpbWVy
IG1fY29udGludWVOZXh0Q2h1bmtUaW1lcjsKICAgICBib29sIG1faXNTdXNwZW5kZWRXaXRoQWN0
aXZlVGltZXI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
Ym9vbCBtX3N1c3BlbmRlZDsKICNlbmRpZgogICAgIGJvb2wgbV9kb2N1bWVudEhhc0FjdGl2ZVBh
cnNlcllpZWxkVG9rZW5zIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUb2tlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUb2tlbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGlu
ZSB2b2lkIEhUTUxUb2tlbjo6YmVnaW5TdGFydFRhZyhVQ2gKICAgICBtX3NlbGZDbG9zaW5nID0g
ZmFsc2U7CiAgICAgbV9hdHRyaWJ1dGVzLmNsZWFyKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwog
I2VuZGlmCiAKQEAgLTI5MCw3ICsyOTAsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2lu
RW5kVGFnKExDaGFyCiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwogICAgIG1fYXR0cmlidXRl
cy5jbGVhcigpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgbV9jdXJyZW50QXR0cmlidXRlID0gbnVsbHB0cjsKICNlbmRpZgogCkBAIC0zMDQsNyArMzA0
LDcgQEAgaW5saW5lIHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhjb25zdAogICAgIG1fc2Vs
ZkNsb3NpbmcgPSBmYWxzZTsKICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9
IG51bGxwdHI7CiAjZW5kaWYKIApAQCAtMzI3LDcgKzMyNyw3IEBAIGlubGluZSB2b2lkIEhUTUxU
b2tlbjo6ZW5kQXR0cmlidXRlKHVuc2kKICAgICBBU1NFUlQob2Zmc2V0KTsKICAgICBBU1NFUlQo
bV9jdXJyZW50QXR0cmlidXRlKTsKICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPmVuZE9mZnNldCA9
IG9mZnNldCAtIG1fYXR0cmlidXRlQmFzZU9mZnNldDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwogI2Vu
ZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCBI
VE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jCiAgICAgLCBtX3RyZWUoZG9j
dW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3ksIG9wdGlvbnMubWF4aW11bURPTVRyZWVEZXB0aCkK
ICAgICAsIG1fc2NyaXB0VG9Qcm9jZXNzU3RhcnRQb3NpdGlvbih1bmluaXRpYWxpemVkUG9zaXRp
b25WYWx1ZTEoKSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IGZhbHNlOwogI2VuZGlmCiB9CkBAIC0yOTQs
NyArMjk0LDcgQEAgSFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvYwogCiAg
ICAgbV90cmVlLnNldEZvcm0oaXM8SFRNTEZvcm1FbGVtZW50Pihjb250ZXh0RWxlbWVudCkgPyAm
ZG93bmNhc3Q8SFRNTEZvcm1FbGVtZW50Pihjb250ZXh0RWxlbWVudCkgOiBIVE1MRm9ybUVsZW1l
bnQ6OmZpbmRDbG9zZXN0Rm9ybUFuY2VzdG9yKGNvbnRleHRFbGVtZW50KSk7CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Rlc3RydWN0aW9uUHJvaGli
aXRlZCA9IGZhbHNlOwogI2VuZGlmCiB9CkBAIC0zMzgsNyArMzM4LDcgQEAgUmVmUHRyPFNjcmlw
dEVsZW1lbnQ+IEhUTUxUcmVlQnVpbGRlcjo6dAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29u
c3RydWN0VHJlZShBdG9taWNIVE1MVG9rZW4mJiB0b2tlbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQoIW1fZGVzdHJveWVkKTsKICAgICBB
U1NFUlQoIW1fZGVzdHJ1Y3Rpb25Qcm9oaWJpdGVkKTsKICAgICBtX2Rlc3RydWN0aW9uUHJvaGli
aXRlZCA9IHRydWU7CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNv
bnN0cnVjdFRyZWUoQXRvbQogICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldEZvcmNlTnVsbENo
YXJhY3RlclJlcGxhY2VtZW50KG1faW5zZXJ0aW9uTW9kZSA9PSBJbnNlcnRpb25Nb2RlOjpUZXh0
IHx8IGluRm9yZWlnbkNvbnRlbnQpOwogICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldFNob3Vs
ZEFsbG93Q0RBVEEoaW5Gb3JlaWduQ29udGVudCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IGZhbHNlOwog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fZnJhbWVzZXRPayB7IHRydWUgfTsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9kZXN0cm95ZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9kZXN0cnVjdGlvblByb2hpYml0ZWQgeyB0cnVlIH07CiAjZW5kaWYKQEAg
LTIyNiw3ICsyMjYsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgSFRNTFRyZWVCdWlsZGVyOjp+SFRN
TFRyZWVCdWlsZGVyKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBBU1NFUlQoIW1fZGVzdHJveWVkKTsKICAgICBBU1NFUlQoIW1fZGVzdHJ1Y3Rpb25Q
cm9oaWJpdGVkKTsKICAgICBtX2Rlc3Ryb3llZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxMyw3ICsyMTMsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBSaWdo
dFRvCiBjb25zdCBEaXNwbGF5OjpCb3gmIEZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeUZvckJv
eChjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8RXNjYXBlVHlwZT4gZXNjYXBlVHlwZSkg
Y29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZXNjYXBlVHlwZSk7Ci0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byBpc09rVG9BY2Nlc3NEaXNwbGF5Qm94ID0gWyZd
IHsKICAgICAgICAgLy8gMS4gSGlnaGx5IGNvbW1vbiBjYXNlIG9mIGFjY2Vzc2luZyB0aGUgZm9y
bWF0dGluZyByb290J3MgZGlzcGxheSBib3ggaXRzZWxmLiBUaGlzIGlzIGZvcm1hdHRpbmcgY29u
dGV4dCBlc2NhcGluZyBpbiB0aGUgc3RyaWN0IHNlbnNlLCBzaW5jZQogICAgICAgICAvLyB0aGUg
Zm9ybWF0dGluZyBjb250ZXh0IHJvb3QgYm94IGxpdmVzIGluIHRoZSBwYXJlbnQgZm9ybWF0dGlu
ZyBjb250ZXh0LgpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAg
dm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aQogICAgIGF1dG8gdmVydGlj
YWxNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW4geyBub25Db2xsYXBzZWRWYWx1ZXMsIGNvbGxh
cHNlZFZhbHVlcyB9OwogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxN
YXJnaW4pOwogICAgIGRpc3BsYXlCb3guc2V0VG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2lu
KGxheW91dEJveCwgdmVydGljYWxNYXJnaW4pKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBkaXNwbGF5Qm94LnNldEhhc0VzdGltYXRlZE1hcmdpbkJlZm9y
ZSgpOwogI2VuZGlmCiB9CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRXN0aQogICAgICAgICBkaXNwbGF5Qm94LnNldEhhc0NsZWFyYW5jZSgp
OwogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjb25zdAogewogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29u
dGFpbmluZ0Jsb2NrKCk7IGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygp
KSB7CkBAIC0zNDcsNyArMzQ3LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpoYXNQ
cmVjb21wdQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0
aW5nUG9zaXRpb24oY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9y
bWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBC
b3gmIGxheW91dEJveCkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QucmVtb3ZlKCZsYXlv
dXRCb3gpOyB9CiAgICAgYm9vbCBoYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94Jikg
Y29uc3Q7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxv
YXRBdm9pZGVyKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwotI2lm
bmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEVzdGltYXRlZE1hcmdpbkJlZm9y
ZSBlc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0
dXJuIG1fZXN0aW1hdGVkTWFyZ2luQmVmb3JlTGlzdC5nZXQoJmxheW91dEJveCk7IH0KICAgICBi
b29sIGhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlC
b3guY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94
OjpCb3goY29uc3QgQm94JiBvdGhlcikKICAgICAsIG1faGFzQ2xlYXJhbmNlKG90aGVyLm1faGFz
Q2xlYXJhbmNlKQogICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIpCiAgICAgLCBtX3BhZGRp
bmcob3RoZXIubV9wYWRkaW5nKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgICwgbV9oYXNWYWxpZFRvcChvdGhlci5tX2hhc1ZhbGlkVG9wKQogICAgICwgbV9o
YXNWYWxpZExlZnQob3RoZXIubV9oYXNWYWxpZExlZnQpCiAgICAgLCBtX2hhc1ZhbGlkSG9yaXpv
bnRhbE1hcmdpbihvdGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3gu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBSZWN0IHBh
ZGRpbmdCb3goKSBjb25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25zdDsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgc2V0SGFzRXN0aW1h
dGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IHRydWU7IH0K
ICNlbmRpZgogCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFkZGlu
ZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPik7CiAKIHByaXZhdGU6Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gZmFsc2U7IH0K
ICAgICB2b2lkIGludmFsaWRhdGVQYWRkaW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IGZhbHNl
OyB9CkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0SGFzVmFsaWRD
b250ZW50SGVpZ2h0KCkgeyBtX2hhc1ZhbGlkQ29udGVudEhlaWdodCA9IHRydWU7IH0KICAgICB2
b2lkIHNldEhhc1ZhbGlkQ29udGVudFdpZHRoKCkgeyBtX2hhc1ZhbGlkQ29udGVudFdpZHRoID0g
dHJ1ZTsgfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogICAgIExheW91dFBv
aW50IG1fdG9wTGVmdDsKICAgICBMYXlvdXRVbml0IG1fY29udGVudFdpZHRoOwpAQCAtMTY3LDcg
KzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAgICBPcHRp
b25hbDxMYXlvdXQ6OkVkZ2VzPiBtX3BhZGRpbmc7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1faGFzVmFsaWRUb3AgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9oYXNWYWxpZExlZnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6
b250YWxNYXJnaW4geyBmYWxzZSB9OwpAQCAtMTc5LDEwICsxNzksMTAgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faGFzVmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFz
VmFsaWRDb250ZW50V2lkdGggeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUgeyBmYWxzZSB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIH07
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB2b2lk
IEJveDo6aW52YWxpZGF0ZU1hcmdpbigpCiB7CiAgICAgbV9oYXNWYWxpZEhvcml6b250YWxNYXJn
aW4gPSBmYWxzZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBpbmxpbmUgTGF5b3V0UG9pbnQgQm94Ojp0
b3BMZWZ0KCkgY29uc3QKIAogaW5saW5lIHZvaWQgQm94OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91
dFBvaW50JiB0b3BMZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIHNldEhhc1ZhbGlkVG9wKCk7CiAgICAgc2V0SGFzVmFsaWRMZWZ0KCk7CiAjZW5k
aWYKQEAgLTIyMCw3ICsyMjAsNyBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFRvcExlZnQoY29uc3Qg
TGF5b3V0CiAKIGlubGluZSB2b2lkIEJveDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQogewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkVG9w
KCk7CiAjZW5kaWYKICAgICBtX3RvcExlZnQuc2V0WSh0b3ApOwpAQCAtMjI4LDcgKzIyOCw3IEBA
IGlubGluZSB2b2lkIEJveDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQogCiBpbmxpbmUgdm9pZCBC
b3g6OnNldExlZnQoTGF5b3V0VW5pdCBsZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkTGVmdCgpOwogI2VuZGlmCiAgICAgbV90
b3BMZWZ0LnNldFgobGVmdCk7CkBAIC0yMzYsNyArMjM2LDcgQEAgaW5saW5lIHZvaWQgQm94Ojpz
ZXRMZWZ0KExheW91dFVuaXQgbGVmdAogCiBpbmxpbmUgdm9pZCBCb3g6OnNldENvbnRlbnRCb3hI
ZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpCiB7IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkQ29udGVudEhlaWdodCgpOwogI2VuZGlmCiAg
ICAgbV9jb250ZW50SGVpZ2h0ID0gaGVpZ2h0OwpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSB2
b2lkIEJveDo6c2V0Q29udGVudEJveEhlaWdodChMYXkKIAogaW5saW5lIHZvaWQgQm94OjpzZXRD
b250ZW50Qm94V2lkdGgoTGF5b3V0VW5pdCB3aWR0aCkKIHsgCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKTsKICNl
bmRpZgogICAgIG1fY29udGVudFdpZHRoID0gd2lkdGg7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW5s
aW5lIExheW91dFVuaXQgQm94Ojpjb250ZW50Qm94V2lkdGgoKQogCiBpbmxpbmUgdm9pZCBCb3g6
OnNldEhvcml6b250YWxNYXJnaW4oTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbiBtYXJnaW4p
CiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFz
VmFsaWRIb3Jpem9udGFsTWFyZ2luKCk7CiAjZW5kaWYKICAgICBtX2hvcml6b250YWxNYXJnaW4g
PSBtYXJnaW47CkBAIC0yNzIsNyArMjcyLDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9u
dGFsTWFyZ2luKExheQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91
dDo6VXNlZFZlcnRpY2FsTWFyZ2luIG1hcmdpbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAg
c2V0SGFzVmFsaWRWZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbigpOwogICAgIGludmFsaWRhdGVF
c3RpbWF0ZWRNYXJnaW5CZWZvcmUoKTsKQEAgLTI4Miw3ICsyODIsNyBAQCBpbmxpbmUgdm9pZCBC
b3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91CiAKIGlubGluZSB2b2lkIEJveDo6c2V0SG9yaXpv
bnRhbENvbXB1dGVkTWFyZ2luKExheW91dDo6Q29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIG1hcmdp
bikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXRI
YXNWYWxpZEhvcml6b250YWxDb21wdXRlZE1hcmdpbigpOwogI2VuZGlmCiAgICAgbV9ob3Jpem9u
dGFsQ29tcHV0ZWRNYXJnaW4gPSBtYXJnaW47CkBAIC0yOTAsNyArMjkwLDcgQEAgaW5saW5lIHZv
aWQgQm94OjpzZXRIb3Jpem9udGFsQ29tcHV0ZWRNYQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldEJv
cmRlcihMYXlvdXQ6OkVkZ2VzIGJvcmRlcikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBzZXRIYXNWYWxpZEJvcmRlcigpOwogI2VuZGlmCiAgICAgbV9i
b3JkZXIgPSBib3JkZXI7CkBAIC0yOTgsNyArMjk4LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRC
b3JkZXIoTGF5b3V0OjpFZGdlcwogCiBpbmxpbmUgdm9pZCBCb3g6OnNldFBhZGRpbmcoT3B0aW9u
YWw8TGF5b3V0OjpFZGdlcz4gcGFkZGluZykKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBzZXRIYXNWYWxpZFBhZGRpbmcoKTsKICNlbmRpZgogICAgIG1f
cGFkZGluZyA9IHBhZGRpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUlubGluZVJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZVJlY3QuaAkocmV2aXNpb24gMjU0MDQ0KQorKysg
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVSZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIElubGlu
ZUxheW91dFJlY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGludmFsaWRhdGVUb3AoKSB7IG1faGFzVmFsaWRU
b3AgPSBmYWxzZTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZUxlZnQoKSB7IG1faGFzVmFsaWRMZWZ0
ID0gZmFsc2U7IH0KICAgICB2b2lkIGludmFsaWRhdGVXaWR0aCgpIHsgbV9oYXNWYWxpZFdpZHRo
ID0gZmFsc2U7IH0KQEAgLTg3LDE0ICs4NywxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNW
YWxpZExlZnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFdpZHRoIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faGFzVmFsaWRIZWlnaHQgeyBmYWxzZSB9OwotI2VuZGlmCisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKICAgICBJbmxpbmVMYXlvdXRSZWN0IG1fcmVjdDsKIH07CiAKIGlubGlu
ZSBJbmxpbmVSZWN0OjpJbmxpbmVSZWN0KElubGluZUxheW91dFVuaXQgdG9wLCBJbmxpbmVMYXlv
dXRVbml0IGxlZnQsIElubGluZUxheW91dFVuaXQgd2lkdGgsIElubGluZUxheW91dFVuaXQgaGVp
Z2h0KQogICAgIDogbV9yZWN0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkKIHsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1
ZTsKICAgICBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7CiAgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1
ZTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBpbmxpbmUgSW5saW5lUmVjdDo6SW5saW5lUmVjdChjb25z
dCBJbmxpCiB7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
IGlubGluZSB2b2lkIElubGluZVJlY3Q6OmludmFsaWRhdGVQb3NpdGlvbigpCiB7CiAgICAgaW52
YWxpZGF0ZVRvcCgpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6
OnNldEhhc1ZhbGlkU2l6ZSgKICAgICBtX2hhc1ZhbGlkV2lkdGggPSB0cnVlOwogICAgIG1faGFz
VmFsaWRIZWlnaHQgPSB0cnVlOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQK
IAogaW5saW5lIElubGluZUxheW91dFVuaXQgSW5saW5lUmVjdDo6dG9wKCkgY29uc3QKIHsKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVSZWN0OjpoZWln
CiAKIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldFRvcExlZnQoY29uc3QgSW5saW5lTGF5b3V0
UG9pbnQmIHRvcExlZnQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgc2V0SGFzVmFsaWRQb3NpdGlvbigpOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldExv
Y2F0aW9uKHRvcExlZnQpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGlubGluZSB2b2lkIElubGluZVJl
Y3Q6OnNldFRvcExlZnQoY29uc3QKIAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0VG9wKElu
bGluZUxheW91dFVuaXQgdG9wKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIG1faGFzVmFsaWRUb3AgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNl
dFkodG9wKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVSZWN0OjpzZXRU
b3AoSW5saW5lTGF5CiAKIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldEJvdHRvbShJbmxpbmVM
YXlvdXRVbml0IGJvdHRvbSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICAgICBtX2hhc1ZhbGlkSGVpZ2h0ID0g
dHJ1ZTsKICNlbmRpZgpAQCAtMjAyLDcgKzIwMiw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6
OnNldEJvdHRvbShJbmxpbmUKIAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0TGVmdChJbmxp
bmVMYXlvdXRVbml0IGxlZnQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgbV9oYXNWYWxpZExlZnQgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNl
dFgobGVmdCk7CkBAIC0yMTAsNyArMjEwLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0
TGVmdChJbmxpbmVMYQogCiBpbmxpbmUgdm9pZCBJbmxpbmVSZWN0OjpzZXRXaWR0aChJbmxpbmVM
YXlvdXRVbml0IHdpZHRoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIG1faGFzVmFsaWRXaWR0aCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0
V2lkdGgod2lkdGgpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6
OnNldFdpZHRoKElubGluZUwKIAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0SGVpZ2h0KElu
bGluZUxheW91dFVuaXQgaGVpZ2h0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRIZWlnaHQgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9y
ZWN0LnNldEhlaWdodChoZWlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3Bs
YXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBkZXNjZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxz
ZSB9OwogICAgICAgICBib29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2UgfTsKICNlbmRpZgpA
QCAtMTI2LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVt
cHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1faGFzVmFsaWRC
YXNlbGluZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgeyBm
YWxzZSB9OwogI2VuZGlmCkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIExpbmVCb3g6OkxpbmVC
b3goY29uc3QgSW5saW5lUmVjdAogICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKICAgICAsIG1f
YmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKICAgICBt
X2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwogI2VuZGlmCkBAIC0xNjQsNyArMTY0LDcg
QEAgaW5saW5lIGNvbnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OgogCiBpbmxpbmUgdm9p
ZCBMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJh
c2VsaW5lT2Zmc2V0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CiAjZW5kaWYKICAgICBtX2Jh
c2VsaW5lT2Zmc2V0ID0gc3RkOjptYXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQp
OwpAQCAtMTkzLDcgKzE5Myw3IEBAIGlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJh
c2VsaW4KIAogaW5saW5lIHZvaWQgTGluZUJveDo6cmVzZXRCYXNlbGluZSgpCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZEJhc2VsaW5l
T2Zmc2V0ID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OwpAQCAt
MjA0LDcgKzIwNCw3IEBAIGlubGluZSBMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW4K
ICAgICA6IG1fYXNjZW50KGFzY2VudCkKICAgICAsIG1fZGVzY2VudChkZXNjZW50KQogewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRBc2Nl
bnQgPSB0cnVlOwogICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgpAQCAtMjEy
LDcgKzIxMiw3IEBAIGlubGluZSBMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW4KIAog
aW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0
IGFzY2VudCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fYXNjZW50ID0gYXNjZW50
OwpAQCAtMjIwLDcgKzIyMCw3IEBAIGlubGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXRB
c2NlbnQKIAogaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnQoSW5saW5l
TGF5b3V0VW5pdCBkZXNjZW50KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fZGVz
Y2VudCA9IGRlc2NlbnQ7CkBAIC0yMjgsNyArMjI4LDcgQEAgaW5saW5lIHZvaWQgTGluZUJveDo6
QmFzZWxpbmU6OnNldERlc2NlbgogCiBpbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNlbGluZTo6cmVz
ZXQoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1f
aGFzVmFsaWRBc2NlbnQgPSB0cnVlOwogICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlSZWN0LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICBvcGVyYXRvciBMYXlvdXRSZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBpbnZhbGlkYXRl
VG9wKCkgeyBtX2hhc1ZhbGlkVG9wID0gZmFsc2U7IH0KICAgICB2b2lkIGludmFsaWRhdGVMZWZ0
KCkgeyBtX2hhc1ZhbGlkTGVmdCA9IGZhbHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlV2lkdGgo
KSB7IG1faGFzVmFsaWRXaWR0aCA9IGZhbHNlOyB9CkBAIC05MywxNCArOTMsMTQgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faGFzVmFsaWRMZWZ0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFs
aWRXaWR0aCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkSGVpZ2h0IHsgZmFsc2UgfTsK
LSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5b3V0UmVjdCBtX3JlY3Q7
CiB9OwogCiBpbmxpbmUgUmVjdDo6UmVjdChMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCBsZWZ0
LCBMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkKICAgICA6IG1fcmVjdChsZWZ0
LCB0b3AsIHdpZHRoLCBoZWlnaHQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZFRvcCA9IHRydWU7CiAgICAgbV9oYXNWYWxpZExlZnQg
PSB0cnVlOwogICAgIG1faGFzVmFsaWRXaWR0aCA9IHRydWU7CkBAIC0xMTMsNyArMTEzLDcgQEAg
aW5saW5lIFJlY3Q6OlJlY3QoTGF5b3V0UG9pbnQgdG9wTGVmdCwgTAogewogfQogCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBpbmxpbmUgdm9pZCBSZWN0OjppbnZh
bGlkYXRlUG9zaXRpb24oKQogewogICAgIGludmFsaWRhdGVUb3AoKTsKQEAgLTE4OSw3ICsxODks
NyBAQCBpbmxpbmUgTGF5b3V0VW5pdCBSZWN0OjpoZWlnaHQoKSBjb25zdAogCiBpbmxpbmUgdm9p
ZCBSZWN0OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91dFBvaW50JiB0b3BMZWZ0KQogewotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkUG9zaXRp
b24oKTsKICNlbmRpZgogICAgIG1fcmVjdC5zZXRMb2NhdGlvbih0b3BMZWZ0KTsKQEAgLTE5Nyw3
ICsxOTcsNyBAQCBpbmxpbmUgdm9pZCBSZWN0OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91CiAKIGlu
bGluZSB2b2lkIFJlY3Q6OnNldFRvcChMYXlvdXRVbml0IHRvcCkKIHsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICNl
bmRpZgogICAgIG1fcmVjdC5zZXRZKHRvcCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgaW5saW5lIHZv
aWQgUmVjdDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRM
ZWZ0KExheW91dFVuaXQgbGVmdCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Qu
c2V0WChsZWZ0KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgdm9pZCBSZWN0OjpzZXRMZWZ0
KExheW91dFVuaXQgbGVmCiAKIGlubGluZSB2b2lkIFJlY3Q6OnNldFdpZHRoKExheW91dFVuaXQg
d2lkdGgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
bV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fcmVjdC5zZXRXaWR0aCh3aWR0
aCk7CkBAIC0yMjEsNyArMjIxLDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6c2V0V2lkdGgoTGF5b3V0
VW5pdCB3aQogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQp
CiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNW
YWxpZEhlaWdodCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdodCk7
CkBAIC0yMjksNyArMjI5LDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6c2V0SGVpZ2h0KExheW91dFVu
aXQgaAogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRTaXplKGNvbnN0IExheW91dFNpemUmIHNpemUp
CiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFz
VmFsaWRTaXplKCk7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0U2l6ZShzaXplKTsKQEAgLTI4MSw3
ICsyODEsNyBAQCBpbmxpbmUgdm9pZCBSZWN0OjpleHBhbmQoT3B0aW9uYWw8TGF5b3V0CiBpbmxp
bmUgUmVjdCBSZWN0OjpjbG9uZSgpIGNvbnN0CiB7CiAgICAgUmVjdCByZWN0OwotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHJlY3QubV9oYXNWYWxpZFRvcCA9
IG1faGFzVmFsaWRUb3A7CiAgICAgcmVjdC5tX2hhc1ZhbGlkTGVmdCA9IG1faGFzVmFsaWRMZWZ0
OwogICAgIHJlY3QubV9oYXNWYWxpZFdpZHRoID0gbV9oYXNWYWxpZFdpZHRoOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIEl0ZXJh
dG9yIGVuZChjb25zdCBGbG9hdGluZ1N0YXRlOgogICAgIHJldHVybiBJdGVyYXRvcihmbG9hdHMs
IHsgfSk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBi
b29sIGFyZUZsb2F0c0hvcml6b250YWxseVNvcnRlZChjb25zdCBGbG9hdGluZ1N0YXRlJiBmbG9h
dGluZ1N0YXRlKQogewogICAgIGF1dG8mIGZsb2F0cyA9IGZsb2F0aW5nU3RhdGUuZmxvYXRzKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg2Myw3ICs4NjMsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpDb2xs
YXBzaWJsZUNvbnRlbnQ6OmFwCiBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpDb2xsYXBz
aWJsZUNvbnRlbnQ6OmNvbGxhcHNlKCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byBoYXNTZWVuTm9uV2hpdGVz
cGFjZVRleHRDb250ZW50ID0gZmFsc2U7CiAjZW5kaWYKICAgICAvLyBDb2xsYXBzZSBjb2xsYXBz
aWJsZSB0cmFpbGluZyBjb250ZW50IGFuZCBtb3ZlIGFsbCB0aGUgb3RoZXIgdHJhaWxpbmcgcnVu
cy4KQEAgLTg4Myw3ICs4ODMsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpDb2xs
YXBzaWJsCiAgICAgICAgICAgICBydW4uc2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIWhhc1NlZW5Ob25XaGl0ZXNw
YWNlVGV4dENvbnRlbnQpOwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICAgICAgaGFzU2Vlbk5vbldoaXRlc3BhY2VUZXh0Q29udGVudCA9IHRydWU7CiAjZW5kaWYK
ICAgICAgICAgICAgIC8vIE11c3QgYmUgYSBsZXR0ZXIgc3BhY2luZyBjb2xsYXBzZS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3Jp
ZC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBU
YWJsZUdyaWQ6OkNvbHVtbjo6Q29sdW1uKGNvbnN0IEJveCogY29sCiAKIHZvaWQgVGFibGVHcmlk
OjpDb2x1bW46OnNldFdpZHRoQ29uc3RyYWludHMoRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgd2lkdGhDb25zdHJhaW50cykKIHsKLSNpZm5kZWYgTkRFQlVHCisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1dpZHRoQ29uc3RyYWludHMgPSB0cnVlOwogI2Vu
ZGlmCiAgICAgbV93aWR0aENvbnN0cmFpbnRzID0gd2lkdGhDb25zdHJhaW50czsKQEAgLTU2LDcg
KzU2LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYQogCiB2b2lk
IFRhYmxlR3JpZDo6Q29sdW1uOjpzZXRMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCBjb21wdXRlZExv
Z2ljYWxXaWR0aCkKIHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBt
X2hhc0NvbXB1dGVkV2lkdGggPSB0cnVlOwogI2VuZGlmCiAgICAgbV9jb21wdXRlZExvZ2ljYWxX
aWR0aCA9IGNvbXB1dGVkTG9naWNhbFdpZHRoOwpAQCAtNzAsNyArNzAsNyBAQCBMYXlvdXRVbml0
IFRhYmxlR3JpZDo6Q29sdW1uOjpsb2dpY2FsV2lkCiAKIHZvaWQgVGFibGVHcmlkOjpDb2x1bW46
OnNldExvZ2ljYWxMZWZ0KExheW91dFVuaXQgY29tcHV0ZWRMb2dpY2FsTGVmdCkKIHsKLSNpZm5k
ZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc0NvbXB1dGVkTGVmdCA9IHRy
dWU7CiAjZW5kaWYKICAgICBtX2NvbXB1dGVkTG9naWNhbExlZnQgPSBjb21wdXRlZExvZ2ljYWxM
ZWZ0OwpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdy
aWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlR3JpZC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgTGF5b3V0VW5pdCBtX2NvbXB1dGVkTG9naWNhbExlZnQ7CiAg
ICAgICAgIFdlYWtQdHI8Y29uc3QgQm94PiBtX2NvbHVtbkJveDsKIAotI2lmbmRlZiBOREVCVUcK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBib29sIG1faGFzV2lkdGhDb25zdHJhaW50cyB7
IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9oYXNDb21wdXRlZFdpZHRoIHsgZmFsc2UgfTsKICAg
ICAgICAgYm9vbCBtX2hhc0NvbXB1dGVkTGVmdCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2
Myw3ICs5NjMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVuCiAg
ICAgfQogICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxF
RAogICAgICAgICBGQUxMVEhST1VHSDsKICNlbmRpZgogICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJ
Z25vcmU6CkBAIC0xMjE5LDcgKzEyMTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphdHRhY2hU
b0ZyYW1lKEZyYW1lCiAgICAgbV93cml0ZXIuc2V0RnJhbWUoZnJhbWUpOwogICAgIGF0dGFjaFRv
RnJhbWUoKTsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFz
RXZlckJlZW5BdHRhY2hlZCA9IHRydWU7CiAjZW5kaWYKIApAQCAtMTIzMyw3ICsxMjMzLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6YXR0YWNoVG9GcmFtZSgpCiAKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRldGFjaEZyb21GcmFtZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgaWYgKG1faGFzRXZlckJlZW5BdHRhY2hlZCkKICAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX2ZyYW1lLCAiZGV0YWNoRnJvbUZyYW1lKCkgaXMgYmVpbmcgY2FsbGVkIG9uIGEg
RG9jdW1lbnRMb2FkZXIgdHdpY2Ugd2l0aG91dCBhbiBhdHRhY2hUb0ZyYW1lKCkgaW5iZXR3ZWVu
Iik7CiAgICAgZWxzZQpAQCAtMTUxNiwxNCArMTUxNiwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpzdWJzdGl0dXRlUmVzb3VyY2VECiAgICAgfQogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFT
U0VSVF9FTkFCTEVECiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzU3Vic3RpdHV0ZUxvYWRQZW5k
aW5nKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGlu
Z1N1YnN0aXR1dGVSZXNvdXJjZXMuY29udGFpbnMobG9hZGVyKTsKIH0KIAotI2VuZGlmCisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsUGVuZGlu
Z1N1YnN0aXR1dGVMb2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7CkBAIC0xNjkwLDcgKzE2
OTAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRTdWJyZXNvdXJjZUxvYWRlCiAgICAgaWYg
KGxvYWRlci0+b3B0aW9ucygpLmFwcGxpY2F0aW9uQ2FjaGVNb2RlID09IEFwcGxpY2F0aW9uQ2Fj
aGVNb2RlOjpCeXBhc3MpCiAgICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChkb2N1bWVudCgpKSB7CiAgICAgICAgIHN3aXRj
aCAoZG9jdW1lbnQoKS0+YmFja0ZvcndhcmRDYWNoZVN0YXRlKCkpIHsKICAgICAgICAgY2FzZSBE
b2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlOgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+
PiBzdWJyZXNvdXJjZXMoKSBjb25zdDsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIGJvb2wgaXNTdWJzdGl0dXRlTG9hZFBlbmRpbmcoUmVzb3VyY2VMb2FkZXIqKSBj
b25zdDsKICNlbmRpZgogICAgIHZvaWQgY2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVMb2FkKFJlc291
cmNlTG9hZGVyKik7ICAgCkBAIC02MjAsNyArNjIwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25h
bDxEb2N1bWVudElkZW50aWZpZXI+IG1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudDsKICNl
bmRpZgogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hh
c0V2ZXJCZWVuQXR0YWNoZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjZW5kaWYKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2Nh
dGVkIGFzIG1lbWJlcnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNr
IHdvdWxkIGFsd2F5cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTYyLDggKzYyLDggQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxXZWJDb3JlOjpJbQogICAgIH0KIH07CiAKLX0K
LSNlbmRpZgorfSAvLyBuYW1lc3BhY2UgV1RGCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICsz
NzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zd2l0Y2hpbmdDbGllbnRzVG9SZXZhbGlkYXRl
ZFJlc291cmNlIHsgZmFsc2UgfTsKICAgICBib29sIG1faWdub3JlRm9yUmVxdWVzdENvdW50IHsg
ZmFsc2UgfTsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wg
bV9kZWxldGVkIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2xydUluZGV4IHsgMCB9OwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBhdXRvIE1lbW9yeUNh
Y2hlOjpscnVMaXN0Rm9yKENhY2hlZFJlc291CiB7CiAgICAgdW5zaWduZWQgYWNjZXNzQ291bnQg
PSBzdGQ6Om1heChyZXNvdXJjZS5hY2Nlc3NDb3VudCgpLCAxVSk7CiAgICAgdW5zaWduZWQgcXVl
dWVJbmRleCA9IFdURjo6ZmFzdExvZzIocmVzb3VyY2Uuc2l6ZSgpIC8gYWNjZXNzQ291bnQpOwot
I2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHJlc291cmNlLm1fbHJ1SW5k
ZXggPSBxdWV1ZUluZGV4OwogI2VuZGlmCiAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIE1lbW9y
eUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChDYWNoCiAgICAgaWYgKCFyZXNvdXJjZS5hY2Nlc3ND
b3VudCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS5tX2xydUlu
ZGV4OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9u
IDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMzMSw3ICs0MzMxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheW91dEFu
ZFN0eWxlSWZOZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byBuZWVkc1N0eWxlUmVjYWxjID0gWyZd
IHsKICAgICAgICAgRGVzY2VuZGFudHNEZXF1ZSBkZXF1ZTsKICAgICAgICAgd2hpbGUgKGF1dG8g
dmlldyA9IG5leHRSZW5kZXJlZERlc2NlbmRhbnQoZGVxdWUpKSB7CkBAIC00MzUwLDcgKzQzNTAs
NyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lCiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiAgICAgQVNTRVJUKCFuZWVkc1N0eWxlUmVjYWxjKCkpOwogICAgIEFTU0VSVCgh
bmVlZHNMYXlvdXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91
dENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2
MTgsNyBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6OmFkZExheW91dERlCiAgICAgICAg
IGxheW91dFN0YXRlLT5hZGRMYXlvdXREZWx0YShkZWx0YSk7CiB9CiAgICAgCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEZyYW1lVmlld0xheW91dENvbnRl
eHQ6OmxheW91dERlbHRhTWF0Y2hlcyhjb25zdCBMYXlvdXRTaXplJiBkZWx0YSkKIHsKICAgICBp
ZiAoYXV0byogbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIC8vIElmIHdlJ3JlIGRv
aW5nIGEgZnVsbCByZXBhaW50IG1fbGF5b3V0U3RhdGUgd2lsbCBiZSAwLCBidXQgaW4gdGhhdCBj
YXNlIGxheW91dERlbHRhIGRvZXNuJ3QgbWF0dGVyLgogICAgIExheW91dFNpemUgbGF5b3V0RGVs
dGEoKSBjb25zdDsKICAgICB2b2lkIGFkZExheW91dERlbHRhKGNvbnN0IExheW91dFNpemUmIGRl
bHRhKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29s
IGxheW91dERlbHRhTWF0Y2hlcyhjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAjZW5kaWYKICAg
ICB1c2luZyBMYXlvdXRTdGF0ZVN0YWNrID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJM
YXlvdXRTdGF0ZT4+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM1LDcg
KzE4MzUsNyBAQCB2b2lkIFBhZ2U6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsCiAKICNl
bmRpZgogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQg
UGFnZTo6Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewpAQCAtMTg0OCw3
ICsxODQ4LDcgQEAgdm9pZCBQYWdlOjpjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeQogICAg
IEFTU0VSVChtX3N1YmZyYW1lQ291bnQgKyAxID09IHN1YmZyYW1lQ291bnQpOwogfQogCi0jZW5k
aWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB2b2lkIFBhZ2U6OnJlc3VtZUFuaW1hdGlu
Z0ltYWdlcygpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5OSwxMiArOTk5LDEy
IEBAIGlubGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKICAgICByZXR1cm4gKm1fZ3JvdXA7
CiB9CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogaW5saW5l
IHZvaWQgUGFnZTo6Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewogfQog
Ci0jZW5kaWYKKyNlbmRpZiAvLyAhQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9u
LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENv
bmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiBzdGF0aWMgYm9vbCBjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKGNvbnN0IFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4g
IWNvbmZpZ3VyYXRpb24ud2lkdGhJc1NldCAmJiAhY29uZmlndXJhdGlvbi5oZWlnaHRJc1NldCAm
JiAhY29uZmlndXJhdGlvbi5pbml0aWFsU2NhbGVJc1NldDsKIH0KLSNlbmRpZgorI2VuZGlmIC8v
IEFTU0VSVF9FTkFCTEVECiAKIHN0YXRpYyBmbG9hdCBwbGF0Zm9ybURldmljZVdpZHRoT3ZlcnJp
ZGUoKQogewpAQCAtNjMzLDcgKzYzMyw3IEBAIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpz
ZXRJc0tub3duVG8KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiAh
TE9HX0RJU0FCTEVECiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUGFyYW1ldGVycyB4aHRtbE1vYmlsZVBhcmFtZXRlcnMoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUGFyYW1ldGVycyB0ZXN0aW5nUGFyYW1ldGVycygpOwogICAg
IAotI2lmbmRlZiBOREVCVUcKKyNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGRlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9zYXZlZEN1cnJlbnRFdmVudDsKLSNpZm5kZWYg
TkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9ldmVu
dDsKICNlbmRpZgogICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX3NhdmVkUHJlc3N1cmVFdmVudDsK
QEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgQ3VycmVudEV2ZW50U2NvcGU6
OkN1cnJlbnRFdmVudFNjb3BlKE5TRXZlbnQgKmV2ZW50LCBOU0V2ZW50ICpjb3JyZXNwb25kaW5n
UHJlc3N1cmVFdmVudCkKICAgICA6IG1fc2F2ZWRDdXJyZW50RXZlbnQoY3VycmVudE5TRXZlbnRT
bG90KCkpCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2V2ZW50
KGV2ZW50KQogI2VuZGlmCiAgICAgLCBtX3NhdmVkUHJlc3N1cmVFdmVudChjb3JyZXNwb25kaW5n
UHJlc3N1cmVFdmVudFNsb3QoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVD
b21wb25lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRl
Q29tcG9uZW50cy5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RhdGVDb21wb25lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBA
IFN0cmluZyBEYXRlQ29tcG9uZW50czo6dG9TdHJpbmdGb3JUaW1lKFMKICAgICBzd2l0Y2ggKGVm
ZmVjdGl2ZUZvcm1hdCkgewogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBG
QUxMVEhST1VHSDsgLy8gVG8gTm9uZS4KICNlbmRpZgogICAgIGNhc2UgTm9uZToKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9uIDI1NDA0
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBT
YW1lU2l6ZUFzU2Nyb2xsYWJsZUFyZWEgewogICAgIHZpcnR1YWwgflNhbWVTaXplQXNTY3JvbGxh
YmxlQXJlYSgpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBXVEZfQVNTRVJUX0VOQUJMRUQK
ICAgICBib29sIHdlYWtQdHJGYWN0b3JXYXNDb25zdHJ1Y3RlZE9uTWFpblRocmVhZDsKICNlbmRp
ZgogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcg
QEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVgogCiB2b2lkIFNoYXJl
ZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKIHsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBGSVhNRTogV2Ugb3VnaHQgdG8gYmUg
YWJsZSB0byBzZXQgdGhpcyB0byB0cnVlIGFuZCBoYXZlIG5vIGFzc2VydGlvbnMgZmlyZS4KICAg
ICAvLyBSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhcHBlbmRpbmcgYWZ0ZXIgY2FsbGluZyB0aGlz
LCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBPKG5eMikgYWxnb3JpdGhtcyBzaW5jZSByMjE1Njg2Lgog
ICAgIC8vIG1faGFzQmVlbkNvbWJpbmVkSW50b09uZVNlZ21lbnQgPSB0cnVlOwpAQCAtMjAwLDcg
KzIwMCw3IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGMKICAgICBy
ZXR1cm4gY2xvbmU7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVudCgpIGNvbnN0CiB7CiAg
ICAgc2l6ZV90IHBvc2l0aW9uID0gMDsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlcjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoCiAgICAgfQogICAgIHJldHVybiBwb3NpdGlvbiA9
PSBtX3NpemU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBjb25zdCBj
aGFyKiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMxLDcgKzIzMSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKICAgICBt
dXRhYmxlIERhdGFTZWdtZW50VmVjdG9yIG1fc2VnbWVudHM7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtdXRhYmxlIGJvb2wgbV9oYXNCZWVuQ29tYmlu
ZWRJbnRvT25lU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBpbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVt
ZW50YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1l
bnRhYmxlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1
cHBsZW1lbnRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
Lmg+CiAjZW5kaWYKIApAQCAtNzgsNyArNzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xh
c3MgU3VwcGxlbWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3VwcGxlbWVudCgpID0gZGVm
YXVsdDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05T
KQorI2lmIEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAg
IHZpcnR1YWwgYm9vbCBpc1JlZkNvdW50ZWRXcmFwcGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICNlbmRpZgogCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9zdXBwbGVtZW50cy5nZXQoa2V5KTsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKIHByb3RlY3RlZDoKICAgICBTdXBwbGVtZW50YWJsZSgpID0gZGVm
YXVsdDsKICNlbmRpZgpAQCAtMTIzLDcgKzEyMyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBzdGQ6OnVuaXF1ZV9wdHI8U3VwcGxlbWVu
dDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBTdXBwbGVtZW50TWFwOwogICAgIFN1cHBsZW1l
bnRNYXAgbV9zdXBwbGVtZW50czsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAj
ZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgVGltZXJIZWFwUmVmZXJlbmNlOwogLy8gVGhlbiB3ZSBz
ZXQgYSBzaW5nbGUgc2hhcmVkIHN5c3RlbSB0aW1lciB0byBmaXJlIGF0IHRoYXQgdGltZS4KIC8v
CiAvLyBXaGVuIGEgdGltZXIncyAibmV4dCBmaXJlIHRpbWUiIGNoYW5nZXMsIHdlIG5lZWQgdG8g
bW92ZSBpdCBhcm91bmQgaW4gdGhlIHByaW9yaXR5IHF1ZXVlLgotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIFRocmVhZFRpbWVySGVhcCYgdGhyZWFkR2xv
YmFsVGltZXJIZWFwKCkKIHsKICAgICByZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLnRocmVhZFRp
bWVycygpLnRpbWVySGVhcCgpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIFNlY29uZHMgVGltZXJCYXNl
OjpuZXh0RmlyZUludGVydmFsKCkgY28KIAogaW5saW5lIHZvaWQgVGltZXJCYXNlOjpjaGVja0hl
YXBJbmRleCgpIGNvbnN0CiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgQVNTRVJUKG1faGVhcEl0ZW0pOwogICAgIGF1dG8mIGhlYXAgPSBtX2hlYXBJdGVt
LT50aW1lckhlYXAoKTsKICAgICBBU1NFUlQoJmhlYXAgPT0gJnRocmVhZEdsb2JhbFRpbWVySGVh
cCgpKTsKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFRpbWVyQmFzZTo6dXBkYXRlSGVhcElmTmVl
ZGVkKE1vbm90CiAgICAgaWYgKGZpcmVUaW1lICYmIGhhc1ZhbGlkSGVhcFBvc2l0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBvbGRIZWFwSW5kZXg7CiAgICAgaWYgKG1faGVhcEl0
ZW0tPmlzSW5IZWFwKCkpCiAgICAgICAgIG9sZEhlYXBJbmRleCA9IG1faGVhcEl0ZW0tPmhlYXBJ
bmRleCgpOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZO
ZWVkZWQoTW9ub3QKICAgICBlbHNlCiAgICAgICAgIGhlYXBJbmNyZWFzZUtleSgpOwogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgT3B0aW9uYWw8dW5zaWdu
ZWQ+IG5ld0hlYXBJbmRleDsKICAgICBpZiAobV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkKICAgICAg
ICAgbmV3SGVhcEluZGV4ID0gbV9oZWFwSXRlbS0+aGVhcEluZGV4KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCwxMiArMTgwLDEyIEBAIFZlY3RvcjxOYXRpdmVJ
bWFnZVB0cj4gQml0bWFwSW1hZ2U6OmZyYW0KIH0KICNlbmRpZgogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEJpdG1hcEltYWdlOjpub3RTb2xpZENvbG9y
KCkKIHsKICAgICByZXR1cm4gc2l6ZSgpLndpZHRoKCkgIT0gMSB8fCBzaXplKCkuaGVpZ2h0KCkg
IT0gMSB8fCBmcmFtZUNvdW50KCkgPiAxOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAogSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHByb3RlY3RlZDoKICAgICAv
LyBIYW5kbGUgcGxhdGZvcm0tc3BlY2lmaWMgZGF0YQogICAgIHZvaWQgaW52YWxpZGF0ZVBsYXRm
b3JtRGF0YSgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgYm9vbCBub3RTb2xpZENvbG9yKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApAQCAtMjMyLDcgKzIz
Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJl
cXVlc3RGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fbGFyZ2VJbWFnZUFzeW5jRGVj
b2RpbmdFbmFibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CiAKLSNpZiAhTE9HX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQgfHwgIUxPR19ESVNBQkxFRAogICAgIHNpemVfdCBtX2xhdGVGcmFt
ZUNvdW50IHsgMCB9OwogICAgIHNpemVfdCBtX2Vhcmx5RnJhbWVDb3VudCB7IDAgfTsKICAgICBz
aXplX3QgbV9jYWNoZWRGcmFtZUNvdW50IHsgMCB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTcz
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0cnVlOyB9CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICBTY3JhdGNoQnVmZmVyKCkKICAgICAgICAgOiBtX3B1cmdlVGltZXIoKnRo
aXMsICZTY3JhdGNoQnVmZmVyOjpjbGVhclNjcmF0Y2hCdWZmZXIpCiAgICAgICAgICwgbV9sYXN0
V2FzSW5zZXQoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgICwgbV9idWZmZXJJblVzZShmYWxzZSkKICNlbmRpZgogICAgIHsKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogICAgIEltYWdlQnVmZmVyKiBnZXRTY3JhdGNoQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fYnVmZmVySW5Vc2UpOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX2J1ZmZl
ckluVXNlID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byByZWNy
ZWF0ZSB0aGUgYnVmZmVyIGlmIHRoZSBjdXJyZW50IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCkBA
IC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZVNjcmF0Y2hCdWZm
ZXJQdXJnZSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICBtX2J1ZmZlckluVXNlID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgaWYgKG1f
cHVyZ2VUaW1lci5pc0FjdGl2ZSgpKQpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2xhc3RXYXNJbnNldDsKICAgICBGbG9hdFNpemUgbV9sYXN0TGF5ZXJTaXplOwogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2J1ZmZl
ckluVXNlOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
Q0FDRkxheWVyVHJlZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAg
dm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0V2luZG93KEhXTkQgdwogICAgIGlmICh3aW5kb3cg
PT0gbV93aW5kb3cpCiAgICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2UgV2luZG93
Tm90U2V0OgogICAgICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNG
TGF5ZXJUcmVlSG9zdC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZEZsdXNoUGVuZGlu
Z0dyYXBoaWNzTGF5ZXJDaGFuZ2VzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNGbHVzaGluZ0xh
eWVyQ2hhbmdlcyB7IGZhbHNlIH07CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBlbnVtIHsgV2luZG93Tm90U2V0LCBXaW5kb3dTZXQsIFdpbmRvd0NsZWFy
ZWQgfSBtX3N0YXRlIHsgV2luZG93Tm90U2V0IH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJE
YXRhQ0cuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiwx
NyArMzM2LDEzIEBAIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXJEYXQKIAog
dm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBzb3VyY2VGb3JtYXQsIGNvbnN0IEludFNpemUm
IHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBk
ZXN0UG9pbnQsIGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgYWNjZWxlcmF0ZVJlbmRlcmluZykK
IHsKLSNpZiBBU1NFUlRfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0jZW5kaWYK
LQogICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNl
UmVjdC5oZWlnaHQoKSA+IDApOwogICAgIAogICAgIENoZWNrZWQ8aW50PiBvcmlnaW54ID0gc291
cmNlUmVjdC54KCk7CiAgICAgQ2hlY2tlZDxpbnQ+IGRlc3R4ID0gKENoZWNrZWQ8aW50PihkZXN0
UG9pbnQueCgpKSArIHNvdXJjZVJlY3QueCgpKTsKICAgICBBU1NFUlQoZGVzdHgudW5zYWZlR2V0
KCkgPj0gMCk7Ci0gICAgQVNTRVJUKGRlc3R4LnVuc2FmZUdldCgpIDwgc2l6ZS53aWR0aCgpKTsK
KyAgICBBU1NFUlRfVU5VU0VEKHNpemUsIGRlc3R4LnVuc2FmZUdldCgpIDwgc2l6ZS53aWR0aCgp
KTsKICAgICBBU1NFUlQob3JpZ2lueC51bnNhZmVHZXQoKSA+PSAwKTsKICAgICBBU1NFUlQob3Jp
Z2lueC51bnNhZmVHZXQoKSA8PSBzb3VyY2VSZWN0Lm1heFgoKSk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENhY2hlQ29yZVRleHQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOTAsNyArMTM5MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FyYWJpY0NoYXJh
Y3RlcihVQ2gKIH0KICNlbmRpZgogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiBzdGF0aWMgaW5saW5lIGJvb2wgaXNVc2VySW5zdGFsbGVkRm9udChDVEZvbnRSZWYg
Zm9udCkKIHsKICNpZiBIQVZFKERJU0FMTE9XQUJMRV9VU0VSX0lOU1RBTExFRF9GT05UUykKQEAg
LTE0MDEsNyArMTQwMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1VzZXJJbnN0YWxsZWRGb250
KEMKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKICNpZiAhVVNFKFBMQVRGT1JNX1NZU1RFTV9GQUxMQkFDS19MSVNUKSAmJiAo
UExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgVEFSR0VUX09TX0lPUykp
CiBzdGF0aWMgUmV0YWluUHRyPENURm9udFJlZj4gY3JlYXRlRm9udEZvckNoYXJhY3RlcnMoQ1RG
b250UmVmIGZvbnQsIENGU3RyaW5nUmVmIGxvY2FsZVN0cmluZywgQWxsb3dVc2VySW5zdGFsbGVk
Rm9udHMsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR3N0QWxsb2NhdG9yRmFz
dE1hbGxvYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dzdEFsbG9jYXRvckZhc3RNYWxsb2MuY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR3N0QWxsb2Nh
dG9yRmFzdE1hbGxvYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGlj
IEdzdE1lbW9yeSogZ3N0QWxsb2NhdG9yRmFzdE1hbGxvYwogCiBzdGF0aWMgdm9pZCBnc3RBbGxv
Y2F0b3JGYXN0TWFsbG9jRnJlZShHc3RBbGxvY2F0b3IqIGFsbG9jYXRvciwgR3N0TWVtb3J5KiBt
ZW1vcnkpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
QVNTRVJUKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKGFsbG9jYXRvciwgZ3N0X2FsbG9jYXRv
cl9mYXN0X21hbGxvY19nZXRfdHlwZSgpKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhbGxv
Y2F0b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYVBhaW50aW5n
Q29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIFBhaW50aW5nQ29udGV4dENhaXJv
OjpGb3JQYWludGluZzo6Rm9yUGEKIAogICAgICAgICAgICAgLy8gRGVyZWYgdGhlIEJ1ZmZlciBv
YmplY3QuCiAgICAgICAgICAgICB1c2VyRGF0YS0+Zmlyc3QtPmRlcmVmKCk7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAvLyBNYXJrIHRoZSBk
ZWxldGlvbiBvZiB0aGUgY2Fpcm9fc3VyZmFjZV90IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhp
cwogICAgICAgICAgICAgLy8gUGFpbnRpbmdDb250ZXh0Q2Fpcm8gYXMgY29tcGxldGUuIFRoaXMg
d2F5IHdlIGNoZWNrIHRoYXQgdGhlIGNhaXJvX3N1cmZhY2VfdAogICAgICAgICAgICAgLy8gb2Jq
ZWN0IGRvZXNuJ3Qgb3V0bGl2ZSB0aGUgUGFpbnRpbmdDb250ZXh0Q2Fpcm8gdGhyb3VnaCB3aGlj
aCBpdCB3YXMgdXNlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFCYWNraW5nU3RvcmVUZXh0dXJlTWFwcGVySW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXht
YXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpjcmVh
CiAgICAgYXV0byYgdXBkYXRlID0gbV9sYXllclN0YXRlLnVwZGF0ZTsKIAogICAgIC8vIEFzc2Vy
dCBubyB0aWxlIHdpdGggdGhpcyBJRCBoYXMgYmVlbiByZWdpc3RlcmVkIHlldC4KLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRvIG1hdGNoZXNUaWxlID0g
W3RpbGVJRF0oYXV0byYgdGlsZSkgeyByZXR1cm4gdGlsZS50aWxlSUQgPT0gdGlsZUlEOyB9Owog
I2VuZGlmCiAgICAgQVNTRVJUKHN0ZDo6bm9uZV9vZih1cGRhdGUudGlsZXNUb0NyZWF0ZS5iZWdp
bigpLCB1cGRhdGUudGlsZXNUb0NyZWF0ZS5lbmQoKSwgbWF0Y2hlc1RpbGUpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRl
eHR1cmVNYXBwZXJJbXBsLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Q29udGVudExhCiAKIENvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsOjp+Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwoKQogewotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Y2xpZW50LmxvY2spOwogICAgIEFTU0VSVCghbV9jbGllbnQuY2xpZW50KTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFkaWVudERpcmVjdDJELmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBHcmFkaWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQm
IGNvbgogICAgICAgICAgICAgaWYgKCFtX2NhY2hlZEhhc2ggfHwgIW1fZ3JhZGllbnQpCiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdGVHcmFkaWVudChkMmRDb250ZXh0KTsKIAotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgZDJkQ29udGV4dC0+U2V0
VGFncyhHUkFESUVOVF9EUkFXSU5HLCBfX0xJTkVfXyk7CiAjZW5kaWYKIApAQCAtMjA2LDcgKzIw
Niw3IEBAIHZvaWQgR3JhZGllbnQ6OmZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb24KICAgICAgICAg
ICAgIGlmICghbV9jYWNoZWRIYXNoIHx8ICFtX2dyYWRpZW50KQogICAgICAgICAgICAgICAgIGdl
bmVyYXRlR3JhZGllbnQoZDJkQ29udGV4dCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIGQyZENvbnRleHQtPlNldFRhZ3MoR1JBRElFTlRf
RFJBV0lORywgX19MSU5FX18pOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURp
cmVjdDJELmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVp
bnQKICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKGJpdG1h
cCkgewogICAgICAgICBhdXRvIHBpeGVsU2l6ZSA9IGJpdG1hcC0+R2V0UGl4ZWxTaXplKCk7CiAg
ICAgICAgIEFTU0VSVChwaXhlbFNpemUud2lkdGggPj0gc291cmNlU2l6ZS53aWR0aCgpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QYXRo
RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vUGF0aERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcg
KzEwMCw3IEBAIHZvaWQgUGF0aDo6Y2xlYXJHZW9tZXRyaWVzKCkKIAogdm9pZCBQYXRoOjphcHBl
bmRHZW9tZXRyeShJRDJEMUdlb21ldHJ5KiBnZW9tZXRyeSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBiZWZvcmUgPSByZWZDb3VudChn
ZW9tZXRyeSk7CiAjZW5kaWYKIApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgUGF0aDo6Y3JlYXRl
R2VvbWV0cnlXaXRoRmlsbE1vZGUoV2kKIAogUGF0aDo6UGF0aChjb25zdCBQYXRoJiBvdGhlcikK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25l
ZCBwYXRoQ291bnQgPSByZWZDb3VudChvdGhlci5tX3BhdGguZ2V0KCkpOwogICAgIHVuc2lnbmVk
IGFjdGl2ZVBhdGhDb3VudCA9IHJlZkNvdW50KG90aGVyLm1fYWN0aXZlUGF0aC5nZXQoKSk7CiAj
ZW5kaWYKQEAgLTE1OSw3ICsxNTksNyBAQCBQYXRoOjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQog
ICAgIAogUGF0aDo6UGF0aChQYXRoJiYgb3RoZXIpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgcGF0aENvdW50ID0gcmVmQ291bnQob3Ro
ZXIubV9wYXRoLmdldCgpKTsKICAgICB1bnNpZ25lZCBhY3RpdmVQYXRoQ291bnQgPSByZWZDb3Vu
dChvdGhlci5tX2FjdGl2ZVBhdGguZ2V0KCkpOwogI2VuZGlmCkBAIC0xNzUsNyArMTc1LDcgQEAg
UGF0aCYgUGF0aDo6b3BlcmF0b3I9KGNvbnN0IFBhdGgmIG90aGVyKQogewogICAgIGlmICh0aGlz
ID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuICp0aGlzOwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVuc2lnbmVkIHBhdGhDb3VudCA9IHJlZkNvdW50KG90
aGVyLm1fcGF0aC5nZXQoKSk7CiAgICAgdW5zaWduZWQgYWN0aXZlUGF0aENvdW50ID0gcmVmQ291
bnQob3RoZXIubV9hY3RpdmVQYXRoLmdldCgpKTsKICNlbmRpZgpAQCAtMTk2LDcgKzE5Niw3IEBA
IFBhdGgmIFBhdGg6Om9wZXJhdG9yPShQYXRoJiYgb3RoZXIpCiAgICAgaWYgKHRoaXMgPT0gJm90
aGVyKQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBwYXRoQ291bnQgPSByZWZDb3VudChvdGhlci5t
X3BhdGguZ2V0KCkpOwogICAgIHVuc2lnbmVkIGFjdGl2ZVBhdGhDb3VudCA9IHJlZkNvdW50KG90
aGVyLm1fYWN0aXZlUGF0aC5nZXQoKSk7CiAjZW5kaWYKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29s
IFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwCiAgICAgR3JhcGhpY3NDb250ZXh0
IHNjcmF0Y2hDb250ZXh0KCZzY3JhdGNoQ29udGV4dEQyRCwgR3JhcGhpY3NDb250ZXh0OjpCaXRt
YXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKICAgICBhcHBsaWVyLnN0cm9rZVN0
eWxlKCZzY3JhdGNoQ29udGV4dCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICB1bnNpZ25lZCBiZWZvcmUgPSByZWZDb3VudChtX3BhdGguZ2V0KCkpOwog
I2VuZGlmCiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFBhdGg6OnRyYW5zZm9ybShjb25zdCBB
ZmZpbmVUcmFuc2ZvCiAgICAgaWYgKG1fYWN0aXZlUGF0aCkKICAgICAgICAgY2xvc2VBbnlPcGVu
R2VvbWV0cmllcyhEMkQxX0ZJR1VSRV9FTkRfT1BFTik7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBiZWZvcmUgPSByZWZDb3VudChtX3Bh
dGguZ2V0KCkpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9QbGF0Zm9ybUNvbnRleHREaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL1BsYXRmb3JtQ29udGV4dERpcmVjdDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OmVuZERyYXcoKQogCiB2b2lk
IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEOjpzZXRUYWdzKEQyRDFfVEFHIHRhZzEsIEQyRDFfVEFH
IHRhZzIpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
bV9yZW5kZXJUYXJnZXQtPlNldFRhZ3ModGFnMSwgdGFnMik7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTSh0YWcxKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAkocmV2aXNpb24gMjU0
MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKICAgICB2b2lkIHJlbW92ZU9ic2Vy
dmVyKE9ic2VydmVyJik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBoYXNPYnNlcnZlcihPYnNlcnZlciYpIGNvbnN0OwogI2VuZGlmCiAKQEAgLTE3
MCw3ICsxNzAsNyBAQCBwcml2YXRlOgogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU+PiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZVZlY3RvcjsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogaW5saW5lIGJvb2wgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6Omhhc09ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKIHsK
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fb2JzZXJ2ZXJzTG9jayk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlOjpSZWFsdGltZU91dAogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjp+
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlKCkKIHsKIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+
aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKICNlbmRpZgog
ICAgIEFTU0VSVChtX3NpbmtzLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpS
ZWFsdGltZU91dAogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlKCkKIHsKIEFTU0VSVCghbV92aWRlb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRo
aXMpKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKICNlbmRpZgogICAgIEFTU0VSVChtX3Np
bmtzLmlzRW1wdHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOSw3
ICs5MjksNyBAQCBib29sIGlzQ3Jvc3NPcmlnaW5TYWZlSGVhZGVyKEhUVFBIZWFkZXJOCiAKIGJv
b2wgaXNDcm9zc09yaWdpblNhZmVIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBIVFRQ
SGVhZGVyU2V0JiBhY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVyU2V0KQogewotI2lmbmRlZiBBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEhUVFBIZWFkZXJOYW1lIGhlYWRl
ck5hbWU7CiAgICAgQVNTRVJUKCFmaW5kSFRUUEhlYWRlck5hbWUobmFtZSwgaGVhZGVyTmFtZSkp
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOCw3ICs0MzgsNyBA
QCBjb25zdCBjaGFyKiBTUUxpdGVEYXRhYmFzZTo6bGFzdEVycm9yTXNnCiAgICAgcmV0dXJuIG1f
b3BlbkVycm9yTWVzc2FnZS5pc051bGwoKSA/IG5vdE9wZW5FcnJvck1lc3NhZ2UgOiBtX29wZW5F
cnJvck1lc3NhZ2UuZGF0YSgpOwogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFC
TEVECiB2b2lkIFNRTGl0ZURhdGFiYXNlOjpkaXNhYmxlVGhyZWFkaW5nQ2hlY2tzKCkKIHsKICAg
ICAvLyBOb3RlIHRoYXQgU1FMaXRlIGNvdWxkIGJlIGNvbXBpbGVkIHdpdGggLURUSFJFQURTQUZF
LCBvciB5b3UgbWF5IGhhdmUgdHVybmVkIG9mZiB0aGUgbXV0ZXhlcy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFNldCB0aGlzIGZs
YWcgdG8gYWxsb3cgYWNjZXNzIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4gIE5vdCBhbGwgbXVsdGkt
dGhyZWFkZWQgYWNjZXNzZXMgYXJlIHNhZmUhCiAgICAgLy8gU2VlIGh0dHA6Ly93d3cuc3FsaXRl
Lm9yZy9jdnN0cmFjL3dpa2k/cD1NdWx0aVRocmVhZGluZyBmb3IgbW9yZSBpbmZvLgotI2lmbmRl
ZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlz
YWJsZVRocmVhZGluZ0NoZWNrcygpOwogI2Vsc2UKICAgICB2b2lkIGRpc2FibGVUaHJlYWRpbmdD
aGVja3MoKSB7IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3BhZ2VT
aXplIHsgLTEgfTsKICAgICAKICAgICBib29sIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzIHsgZmFs
c2UgfTsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fc2hh
cmFibGUgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsOSArNDUsNiBAQCBTUUxpdGVTdGF0ZW1lbnQ6OlNRTGl0ZVN0YXRlbWVudChTUUxp
dGVECiAgICAgOiBtX2RhdGFiYXNlKGRiKQogICAgICwgbV9xdWVyeShzcWwpCiAgICAgLCBtX3N0
YXRlbWVudCgwKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faXNQcmVwYXJlZChmYWxzZSkKLSNl
bmRpZgogewogfQogCkBAIC03OSw3ICs3Niw3IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnByZXBh
cmUoKQogICAgIGlmICh0YWlsICYmICp0YWlsKQogICAgICAgICBlcnJvciA9IFNRTElURV9FUlJP
UjsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faXNQcmVwYXJl
ZCA9IGVycm9yID09IFNRTElURV9PSzsKICNlbmRpZgogICAgIHJldHVybiBlcnJvcjsKQEAgLTEw
OCw3ICsxMDUsNyBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKICAgICAKIGludCBTUUxp
dGVTdGF0ZW1lbnQ6OmZpbmFsaXplKCkKIHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2lzUHJlcGFyZWQgPSBmYWxzZTsKICNlbmRpZgogICAgIGlmICghbV9zdGF0
ZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDggKzk2LDggQEAgcHJpdmF0
ZToKICAgICBTUUxpdGVEYXRhYmFzZSYgbV9kYXRhYmFzZTsKICAgICBTdHJpbmcgbV9xdWVyeTsK
ICAgICBzcWxpdGUzX3N0bXQqIG1fc3RhdGVtZW50OwotI2lmbmRlZiBOREVCVUcKLSAgICBib29s
IG1faXNQcmVwYXJlZDsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV9pc1ByZXBhcmVk
IHsgZmFsc2UgfTsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0NPTVB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
T01QdHIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NPTVB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjgsNyArMjI4LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIAogICAgIHJldHVybiBhICE9IGIuZ2V0KCk7CiB9
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB1bnNp
Z25lZCByZWZDb3VudChJVW5rbm93biogcHRyKQogewogICAgIGlmICghcHRyKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvbXBsZXhMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ29tcGxleExpbmVMYXlvdXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NzcsNyArOTc3LDcgQEAgQmlkaVJ1biogQ29tcGxleExp
bmVMYXlvdXQ6OmNvbXB1dGVJbmxpbgogdm9pZCBDb21wbGV4TGluZUxheW91dDo6cmVtb3ZlSW5s
aW5lQm94KEJpZGlSdW4mIHJ1biwgY29uc3QgUm9vdElubGluZUJveCYgcm9vdExpbmVCb3gpIGNv
bnN0CiB7CiAgICAgYXV0byogaW5saW5lQm94ID0gcnVuLmJveCgpOwotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGF1dG8qIGlubGluZVBhcmVudCA9IGlubGlu
ZUJveC0+cGFyZW50KCk7CiAgICAgd2hpbGUgKGlubGluZVBhcmVudCAmJiBpbmxpbmVQYXJlbnQg
IT0gJnJvb3RMaW5lQm94KSB7CiAgICAgICAgIEFTU0VSVCghaW5saW5lUGFyZW50LT5pc0RpcnR5
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGlu
Z09iamVjdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIEZsb2F0aW5nT2Jq
ZWN0OjpGbG9hdGluZ09iamVjdChSZW5kZXJCb3gKICAgICAsIG1fc2hvdWxkUGFpbnQodHJ1ZSkK
ICAgICAsIG1faXNEZXNjZW5kYW50KGZhbHNlKQogICAgICwgbV9pc1BsYWNlZChmYWxzZSkKLSNp
Zm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1faXNJblBsYWNlZFRyZWUo
ZmFsc2UpCiAjZW5kaWYKIHsKQEAgLTY4LDcgKzY4LDcgQEAgRmxvYXRpbmdPYmplY3Q6OkZsb2F0
aW5nT2JqZWN0KFJlbmRlckJveAogICAgICwgbV9zaG91bGRQYWludChzaG91bGRQYWludCkKICAg
ICAsIG1faXNEZXNjZW5kYW50KGlzRGVzY2VuZGFudCkKICAgICAsIG1faXNQbGFjZWQodHJ1ZSkK
LSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1faXNJblBsYWNlZFRy
ZWUoZmFsc2UpCiAjZW5kaWYKIHsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lkIEZsb2F0aW5nT2Jq
ZWN0czo6YWRkUGxhY2VkT2JqZWN0KEZsCiAgICAgaWYgKG1fcGxhY2VkRmxvYXRzVHJlZSkKICAg
ICAgICAgbV9wbGFjZWRGbG9hdHNUcmVlLT5hZGQoaW50ZXJ2YWxGb3JGbG9hdGluZ09iamVjdChm
bG9hdGluZ09iamVjdCkpOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgZmxvYXRpbmdPYmplY3QtPnNldElzSW5QbGFjZWRUcmVlKHRydWUpOwogI2VuZGlmCiB9CkBA
IC0zNDMsNyArMzQzLDcgQEAgdm9pZCBGbG9hdGluZ09iamVjdHM6OnJlbW92ZVBsYWNlZE9iamVj
dAogICAgIH0KIAogICAgIGZsb2F0aW5nT2JqZWN0LT5zZXRJc1BsYWNlZChmYWxzZSk7Ci0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgZmxvYXRpbmdPYmplY3QtPnNldElz
SW5QbGFjZWRUcmVlKGZhbHNlKTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3
ICs3NCw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHBhZ2luYXRpb25TdHJ1dCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0cnV0OyB9CiAgICAgdm9pZCBzZXRQYWdpbmF0aW9uU3Ry
dXQoTGF5b3V0VW5pdCBzdHJ1dCkgeyBtX3BhZ2luYXRpb25TdHJ1dCA9IHN0cnV0OyB9CiAKLSNp
Zm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzSW5QbGFjZWRUcmVl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luUGxhY2VkVHJlZTsgfQogICAgIHZvaWQgc2V0SXNJblBs
YWNlZFRyZWUoYm9vbCB2YWx1ZSkgeyBtX2lzSW5QbGFjZWRUcmVlID0gdmFsdWU7IH0KICNlbmRp
ZgpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zaG91bGRQYWlu
dCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0Rlc2NlbmRhbnQgOiAxOwogICAgIHVuc2lnbmVkIG1f
aXNQbGFjZWQgOiAxOwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVu
c2lnbmVkIG1faXNJblBsYWNlZFRyZWUgOiAxOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5jcHAJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tT
aXppbmdBbGdvcml0aG0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ3LDcgKzEzNDcsNyBAQCB2
b2lkIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6cmVzZXQoKQogICAgIG1faGFzUGVyY2VudFNp
emVkUm93c0luZGVmaW5pdGVIZWlnaHQgPSBmYWxzZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBHcmlkVHJhY2tTaXppbmdBbGdvcml0aG06OnRyYWNrc0Fy
ZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0CiB7CiAgICAgY29uc3QgVmVjdG9yPEdy
aWRUcmFjaz4mIGFsbFRyYWNrcyA9IHRyYWNrcyhtX2RpcmVjdGlvbik7CkBAIC0xMzU4LDcgKzEz
NTgsNyBAQCBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6dHJhY2tzQXJlCiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAog
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjpTdGF0ZU1hY2hpbmU6OlN0YXRlTWFjaGluZShHcmlk
VHJhY2tTaXppbmdBbGdvcml0aG0mIGFsZ29yaXRobSkKICAgICA6IG1fYWxnb3JpdGhtKGFsZ29y
aXRobSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZFRyYWNr
U2l6aW5nQWxnb3JpdGhtLmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaAkod29ya2luZyBjb3B5KQpAQCAtMTMw
LDcgKzEzMCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQW55UGVyY2VudFNpemVkUm93c0lu
ZGVmaW5pdGVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlcmNlbnRTaXplZFJvd3NJbmRl
ZmluaXRlSGVpZ2h0OyB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBib29sIHRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aCgpIGNvbnN0OwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXREaXNhbGxv
d2VkU2NvcGUuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKIAogTGF5b3V0RGlzYWxsb3dlZFNjb3BlKiBMYXlvdXREaXNhbGxvd2Vk
U2NvcGU6OnNfY3VycmVudEFzc2VydGlvbiA9IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmgJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBAIGNsYXNzIExheW91dERpc2FsbG93
ZWRTY29wZSB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBSZWFzb24geyBQZXJmb3JtYW5jZU9w
dGltaXphdGlvbiwgUmVlbnRyYW5jeUF2b2lkYW5jZSB9OwogCi0jaWYgQVNTRVJUX0RJU0FCTEVE
CisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3BlKFJlYXNvbikg
eyB9CiAgICAgc3RhdGljIGJvb2wgaXNMYXlvdXRBbGxvd2VkKCkgeyByZXR1cm4gdHJ1ZTsgfQot
I2Vsc2UKKyNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5b3V0RGlzYWxsb3dlZFNjb3Bl
KFJlYXNvbikKICAgICAgICAgOiBtX3ByZXZpb3VzQXNzZXJ0aW9uKHNfY3VycmVudEFzc2VydGlv
bikKICAgICB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgTGF5b3V0
RGlzYWxsb3dlZFNjb3BlKiBtX3ByZXZpb3VzQXNzZXJ0aW9uOwogICAgIHN0YXRpYyBMYXlvdXRE
aXNhbGxvd2VkU2NvcGUqIHNfY3VycmVudEFzc2VydGlvbjsKLSNlbmRpZgorI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNjUsNyArMzE2NSw3IEBAIFRl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY28KICAgICByZXR1cm4gY29uc3Ry
dWN0VGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGxlbmd0aCksIHN0eWxlLCBleHBhbnNp
b24pOwogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIFJlbmRl
ckJsb2NrOjpjaGVja1Bvc2l0aW9uZWRPYmplY3RzTmVlZExheW91dCgpCiB7CiAgICAgYXV0byog
cG9zaXRpb25lZERlc2NlbmRhbnRzID0gcG9zaXRpb25lZE9iamVjdHMoKTsKQEAgLTMxNzUsOCAr
MzE3NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNoZWNrUG9zaXRpb25lZE9iamVjdHMKICAgICBm
b3IgKGF1dG8qIHJlbmRlcmVyIDogKnBvc2l0aW9uZWREZXNjZW5kYW50cykKICAgICAgICAgQVNT
RVJUKCFyZW5kZXJlci0+bmVlZHNMYXlvdXQoKSk7CiB9Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAKIGJvb2wgUmVuZGVyQmxvY2s6Omhhc0RlZmluaXRlTG9naWNhbEhlaWdo
dCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAko
cmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw3ICsyOTksNyBAQCBwdWJsaWM6CiAKICAgICBMYXlv
dXRVbml0IGNvbXB1dGVTdGFydFBvc2l0aW9uRGVsdGFGb3JDaGlsZEF2b2lkaW5nRmxvYXRzKGNv
bnN0IFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQgY2hpbGRNYXJnaW5TdGFydCwgUmVuZGVy
RnJhZ21lbnRDb250YWluZXIqID0gMCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICB2b2lkIGNoZWNrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGQoUgogICAgIExheW91dFJlY3Qgb2xkUmVjdCA9
IGNoaWxkLmZyYW1lUmVjdCgpOwogICAgIExheW91dFVuaXQgb2xkTG9naWNhbFRvcCA9IGxvZ2lj
YWxUb3BGb3JDaGlsZChjaGlsZCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBMYXlvdXRTaXplIG9sZExheW91dERlbHRhID0gdmlldygpLmZyYW1lVmll
dygpLmxheW91dENvbnRleHQoKS5sYXlvdXREZWx0YSgpOwogI2VuZGlmCiAgICAgLy8gUG9zaXRp
b24gdGhlIGNoaWxkIGFzIHRob3VnaCBpdCBkaWRuJ3QgY29sbGFwc2Ugd2l0aCB0aGUgdG9wLgpA
QCAtMjM1OSw3ICsyMzU5LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5n
T2JqZQogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCZmbG9hdGluZ09iamVjdC5vcmln
aW5hdGluZ0xpbmUoKS0+cmVuZGVyZXIoKSA9PSB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0aW5nT2JqZWN0Lm9yaWdpbmF0aW5nTGluZSgpLT5tYXJrRGlydHkoKTsKICAgICAg
ICAgICAgICAgICAgICAgfQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC5jbGVhck9yaWdpbmF0aW5nTGlu
ZSgpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgfQpAQCAtMzc0OSw3ICszNzQ5LDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygpCiAKICAgICBhdXRvJiBjb21wbGV4
TGluZUxheW91dCA9ICp0aGlzLT5jb21wbGV4TGluZUxheW91dCgpOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5b3V0VW5pdCBvbGRIZWlnaHQgPSBs
b2dpY2FsSGVpZ2h0KCk7CiAjZW5kaWYKICAgICBib29sIGRpZE5lZWRMYXlvdXQgPSBuZWVkc0xh
eW91dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2
Miw3IEBACiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29w
ZS5oPgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXBy
ZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94OjpsYXlvdXQKIAogICAgICAgICBtX3N0cmV0Y2hpbmdDaGlsZHJlbiA9IGZh
bHNlOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IExheW91dFNpemUgb2xkTGF5b3V0RGVsdGEgPSB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29u
dGV4dCgpLmxheW91dERlbHRhKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3
ICs2MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTGluZUJyZWFrLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFy
a2VyLmgiCiAjZW5kaWYKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudENvbnRhaW5lci5oIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0
cnlNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgUmVuZGVyR2Vv
bWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKFQKICAgICB9CiAgICAgCiAgICAgYm9vbCBpbkZpeGVk
ID0gZmFsc2U7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
Ym9vbCBmb3VuZENvbnRhaW5lciA9ICFjb250YWluZXIgfHwgKG1fbWFwcGluZy5zaXplKCkgJiYg
bV9tYXBwaW5nWzBdLm1fcmVuZGVyZXIgPT0gY29udGFpbmVyKTsKICNlbmRpZgogCkBAIC02NCw3
ICs2NCw3IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKFQKIAogICAg
ICAgICAvLyBJZiBjb250YWluZXIgaXMgdGhlIFJlbmRlclZpZXcgKHN0ZXAgMCkgd2Ugd2FudCB0
byBhcHBseSBpdHMgc2Nyb2xsIG9mZnNldC4KICAgICAgICAgaWYgKGkgPiAwICYmIGN1cnJlbnRT
dGVwLm1fcmVuZGVyZXIgPT0gY29udGFpbmVyKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICBmb3VuZENvbnRhaW5lciA9IHRydWU7CiAjZW5k
aWYKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUmVuZGVyR2Vv
bWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKFQKIEZsb2F0UG9pbnQgUmVuZGVyR2VvbWV0cnlNYXA6
Om1hcFRvQ29udGFpbmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lcikgY29uc3QKIHsKICAgICBGbG9hdFBvaW50IHJlc3VsdDsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBGbG9hdFBvaW50IHJl
bmRlcmVyTWFwcGVkUmVzdWx0ID0gbV9tYXBwaW5nLmxhc3QoKS5tX3JlbmRlcmVyLT5sb2NhbFRv
QWJzb2x1dGUocCwgbV9tYXBDb29yZGluYXRlc0ZsYWdzKTsKICNlbmRpZgogICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdy
aWRUcgogICAgICAgICBncmlkLmluc2VydCgqY2hpbGQsIHsgYXJlYS5yb3dzLCBhcmVhLmNvbHVt
bnMgfSk7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgaWYgKGdyaWQuaGFzR3JpZEl0ZW1zKCkpIHsKICAgICAgICAgQVNTRVJUKGdyaWQubnVt
VHJhY2tzKEZvclJvd3MpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkUm93
Q291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvclJvd3MpKSk7CiAgICAgICAg
IEFTU0VSVChncmlkLm51bVRyYWNrcyhGb3JDb2x1bW5zKSA+PSBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OmV4cGxpY2l0R3JpZENvbHVtbkNvdW50KHN0eWxlKCksIGdyaWQuYXV0b1JlcGVhdFRyYWNr
cyhGb3JDb2x1bW5zKSkpOwpAQCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VJdGVtc09uR3JpZChHcmlkVHIKIAogICAgIGdyaWQuc2V0TmVlZHNJdGVtc1BsYWNlbWVudChm
YWxzZSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBm
b3IgKGF1dG8qIGNoaWxkID0gZ3JpZC5vcmRlckl0ZXJhdG9yKCkuZmlyc3QoKTsgY2hpbGQ7IGNo
aWxkID0gZ3JpZC5vcmRlckl0ZXJhdG9yKCkubmV4dCgpKSB7CiAgICAgICAgIGlmIChncmlkLm9y
ZGVySXRlcmF0b3IoKS5zaG91bGRTa2lwQ2hpbGQoKmNoaWxkKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTIyOCwxMSArMTIyOCw3IEBAIGJvb2wgUmVuZGVyR3JpZDo6aXNCYXNlbGluZUFs
aWdubWVudEZvckMKIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlzIHNoYXJlZCBieSBSZW5kZXJGbGV4
aWJsZUJveCwgc28gaXQgbWlnaHQgYmUgcmVmYWN0b3JlZCBzb21laG93LgogaW50IFJlbmRlckdy
aWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbW9kZSkgY29uc3QKIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgQVNTRVJUKG1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1vZGUpOwotI2VuZGlmCisgICAgQVNTRVJUX1VOVVNF
RChtb2RlLCBtb2RlID09IFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7CiAgICAgYXV0byBiYXNl
bGluZSA9IGZpcnN0TGluZUJhc2VsaW5lKCk7CiAgICAgaWYgKCFiYXNlbGluZSkKICAgICAgICAg
cmV0dXJuIHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KCp0aGlzLCBkaXJlY3Rpb24p
ICsgbWFyZ2luTG9naWNhbEhlaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
IFJlbmRlcklubGluZTo6UmVuZGVySW5saW5lKERvY3VtZW50JiBkb2MKIAogdm9pZCBSZW5kZXJJ
bmxpbmU6OndpbGxCZURlc3Ryb3llZCgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgLy8gTWFrZSBzdXJlIHdlIGRvIG5vdCByZXRhaW4gInRoaXMiIGlu
IHRoZSBjb250aW51YXRpb24gb3V0bGluZSB0YWJsZSBtYXAgb2Ygb3VyIGNvbnRhaW5pbmcgYmxv
Y2tzLgogICAgIGlmIChwYXJlbnQoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlICYmIGhhc091dGxpbmUoKSkgewogICAgICAgICBib29sIGNvbnRhaW5pbmdC
bG9ja1BhaW50c0NvbnRpbnVhdGlvbk91dGxpbmUgPSBjb250aW51YXRpb24oKSB8fCBpc0NvbnRp
bnVhdGlvbigpOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVz
dHJveWVkKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlm
IC8vIEFTU0VSVF9FTkFCTEVECiAKICAgICBpZiAoIXJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgp
KSB7CiAgICAgICAgIGlmIChmaXJzdExpbmVCb3goKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyAr
MjIyLDcgQEAgY2xhc3MgQ2xpcFJlY3RzQ2FjaGUgewogcHVibGljOgogICAgIENsaXBSZWN0c0Nh
Y2hlKCkKICAgICB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgTnVtQ2FjaGVkQ2xpcFJlY3RzVHlwZXM7ICsraSkgewogICAg
ICAgICAgICAgbV9jbGlwUmVjdHNSb290W2ldID0gMDsKICAgICAgICAgICAgIG1fc2Nyb2xsYmFy
UmVsZXZhbmN5W2ldID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemU7CkBAIC0yNDAsNyArMjQw
LDcgQEAgcHVibGljOgogICAgICAgICBtX2NsaXBSZWN0c1tnZXRJbmRleChjbGlwUmVjdHNUeXBl
LCByZXNwZWN0T3ZlcmZsb3cpXSA9IFdURk1vdmUoY2xpcFJlY3RzKTsKICAgICB9CiAKLSNpZm5k
ZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBjb25zdCBSZW5kZXJMYXllciogbV9j
bGlwUmVjdHNSb290W051bUNhY2hlZENsaXBSZWN0c1R5cGVzXTsKICAgICBPdmVybGF5U2Nyb2xs
YmFyU2l6ZVJlbGV2YW5jeSBtX3Njcm9sbGJhclJlbGV2YW5jeVtOdW1DYWNoZWRDbGlwUmVjdHNU
eXBlc107CiAjZW5kaWYKQEAgLTMyNyw3ICszMjcsNyBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5
ZXIoUmVuZGVyTGF5ZXJNb2RlCiAgICAgLCBtX3JlcXVpcmVzU2Nyb2xsUG9zaXRpb25SZWNvbmNp
bGlhdGlvbihmYWxzZSkKICAgICAsIG1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKGZh
bHNlKQogICAgICwgbV91cGRhdGluZ01hcnF1ZWVQb3NpdGlvbihmYWxzZSkKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fbGF5ZXJMaXN0TXV0YXRpb25B
bGxvd2VkKHRydWUpCiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpAQCAtNDc2
Myw3ICs0NzYzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KExheWVyTGlzdCBsYQog
ICAgIGlmICghaGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVy
TGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCp0aGlzKTsKICNlbmRpZgogCkBA
IC01Mzc4LDcgKzUzNzgsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXll
cihSCiAKICAgICAvLyBUaGlzIHZhcmlhYmxlIHRyYWNrcyB3aGljaCBsYXllciB0aGUgbW91c2Ug
ZW5kcyB1cCBiZWluZyBpbnNpZGUuCiAgICAgUmVuZGVyTGF5ZXIqIGNhbmRpZGF0ZUxheWVyID0g
bnVsbHB0cjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBM
YXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcigqdGhpcyk7CiAjZW5kaWYK
IApAQCAtNTY1OSw3ICs1NjU5LDcgQEAgUmVmPENsaXBSZWN0cz4gUmVuZGVyTGF5ZXI6OnVwZGF0
ZUNsaXBSZQogICAgIAogICAgIGlmICghbV9jbGlwUmVjdHNDYWNoZSkKICAgICAgICAgbV9jbGlw
UmVjdHNDYWNoZSA9IG1ha2VVbmlxdWU8Q2xpcFJlY3RzQ2FjaGU+KCk7Ci0jaWZuZGVmIE5ERUJV
RworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jbGlwUmVjdHNDYWNoZS0+bV9jbGlwUmVjdHNS
b290W2NsaXBSZWN0c1R5cGVdID0gY2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXI7CiAgICAgbV9j
bGlwUmVjdHNDYWNoZS0+bV9zY3JvbGxiYXJSZWxldmFuY3lbY2xpcFJlY3RzVHlwZV0gPSBjbGlw
UmVjdHNDb250ZXh0Lm92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5OwogI2VuZGlmCkBAIC02
MTcyLDcgKzYxNzIsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJv
CiAgICAgCiAgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0KCkgfHwgIXBvc2l0aXZlWk9yZGVy
TGF5ZXJzKCkuc2l6ZSgpKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGNvbnN0
X2Nhc3Q8UmVuZGVyTGF5ZXImPigqdGhpcykpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIx
Miw3IEBAIHB1YmxpYzoKICAgICBib29sIG5vcm1hbEZsb3dMaXN0RGlydHkoKSBjb25zdCB7IHJl
dHVybiBtX25vcm1hbEZsb3dMaXN0RGlydHk7IH0KICAgICBib29sIHpPcmRlckxpc3RzRGlydHko
KSBjb25zdCB7IHJldHVybiBtX3pPcmRlckxpc3RzRGlydHk7IH0KIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbGF5ZXJMaXN0TXV0YXRpb25BbGxv
d2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQ7IH0KICAgICB2
b2lkIHNldExheWVyTGlzdE11dGF0aW9uQWxsb3dlZChib29sIGZsYWcpIHsgbV9sYXllckxpc3RN
dXRhdGlvbkFsbG93ZWQgPSBmbGFnOyB9CiAjZW5kaWYKQEAgLTEyNjEsNyArMTI2MSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA6IDE7CiAg
ICAgYm9vbCBtX3VwZGF0aW5nTWFycXVlZVBvc2l0aW9uIDogMTsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9sYXllckxpc3RNdXRhdGlvbkFs
bG93ZWQgOiAxOwogI2VuZGlmCiAKQEAgLTEzNjksNyArMTM2OSw3IEBAIGlubGluZSBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXI6OnBhaW50T3IKICAgICByZXR1cm4gbV9pc05vcm1hbEZsb3dPbmx5
ID8gbV9wYXJlbnQgOiBzdGFja2luZ0NvbnRleHQoKTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogY2xhc3MgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciB7
CiBwdWJsaWM6CiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvcihSZW5kZXJMYXllciYgbGF5
ZXIpCkBAIC0xMzg4LDcgKzEzODgsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlckxheWVyJiBtX2xh
eWVyOwogICAgIGJvb2wgbV9wcmV2aW91c011dGF0aW9uQWxsb3dlZFN0YXRlOwogfTsKLSNlbmRp
ZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQgbWFrZU1hdHJpeFJlbmRlcmFibGUo
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBib29sIGhhczNEUmVuZGVyaW5nKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlz
aW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzc1LDcgKzIzNzUsNyBAQCBzdGF0aWMgTGF5ZXJU
cmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBi
ZSBjYWxsZWQgd2l0aCBhIHN0YWxlIHotb3JkZXIgbGlzdHMuIFNlZSBidWcgODU1MTIuCiAgICAg
cGFyZW50LnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIocGFyZW50KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24gMjU0MDQ0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk5Myw3ICs5OTMsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcHV0ZUNvbXBvCiAKICAgICBiYWNraW5nU2hhcmluZ1N0YXRlLnVwZGF0ZUJlZm9y
ZURlc2NlbmRhbnRUcmF2ZXJzYWwobGF5ZXIsIHdpbGxCZUNvbXBvc2l0ZWQpOwogCi0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25E
ZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCiAKQEAgLTExNjIsNyArMTE2
Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp0cmF2ZXJzZVVuY2gKIAogICAgIGJh
Y2tpbmdTaGFyaW5nU3RhdGUudXBkYXRlQmVmb3JlRGVzY2VuZGFudFRyYXZlcnNhbChsYXllciwg
bGF5ZXJJc0NvbXBvc2l0ZWQpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5
ZXIpOwogI2VuZGlmCiAKQEAgLTEyNzksNyArMTI3OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVCYWNraW4KIAogICAgIGJvb2wgcmVxdWlyZXNDaGlsZFJlYnVpbGQgPSBs
YXllckJhY2tpbmcgJiYgbGF5ZXIubmVlZHNDb21wb3NpdGluZ0xheWVyQ29ubmVjdGlvbigpICYm
ICFsYXllci5oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0
YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRpZgogCkBAIC0xOTMxLDcgKzE5MzEsNyBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkRGVzY2VuZGFuCiAgICAgICAgIGFkZFRvT3Zlcmxh
cE1hcChvdmVybGFwTWFwLCBsYXllciwgbGF5ZXJFeHRlbnQpOwogICAgIH0KIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0
ZWN0b3IgbXV0YXRpb25DaGVja2VyKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXImPihsYXllcikpOwog
I2VuZGlmCiAKQEAgLTIyMTgsNyArMjIxOCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZWN1cnNpdmVSZXAKICAgICBpZiAobGF5ZXIuaXNDb21wb3NpdGVkKCkgJiYgIWxheWVyLmJh
Y2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpKQogICAgICAgICBsYXllci5z
ZXRCYWNraW5nTmVlZHNSZXBhaW50KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tl
cihsYXllcik7CiAjZW5kaWYKIApAQCAtNDEwOSw3ICs0MTA5LDcgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmxheWVySGFzM0RDbwogCiAgICAgY29uc3RfY2FzdDxSZW5kZXJMYXllciY+
KGxheWVyKS51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0
YXRpb25DaGVja2VyKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXImPihsYXllcikpOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eW91dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTEgKzM5LDkgQEAgUmVuZGVyTGF5
b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRlKFJlbgogICAgIDogbV9jbGlwcGVkKGZhbHNlKQog
ICAgICwgbV9pc1BhZ2luYXRlZChpc1BhZ2luYXRlZCA9PSBJc1BhZ2luYXRlZDo6WWVzKQogICAg
ICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2xheW91dERlbHRhWFNhdHVyYXRlZChmYWxz
ZSkKICAgICAsIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkKGZhbHNlKQotI2VuZGlmCi0jaWZuZGVm
IE5ERUJVRwogICAgICwgbV9yZW5kZXJlcigmcmVuZGVyZXIpCiAjZW5kaWYKIHsKQEAgLTY4LDEx
ICs2Niw5IEBAIFJlbmRlckxheW91dFN0YXRlOjpSZW5kZXJMYXlvdXRTdGF0ZShjb24KICAgICA6
IG1fY2xpcHBlZChmYWxzZSkKICAgICAsIG1faXNQYWdpbmF0ZWQoZmFsc2UpCiAgICAgLCBtX3Bh
Z2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChmYWxzZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAsIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkKGZhbHNlKQogICAg
ICwgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQoZmFsc2UpCi0jZW5kaWYKLSNpZm5kZWYgTkRFQlVH
CiAgICAgLCBtX3JlbmRlcmVyKCZyZW5kZXJlcikKICNlbmRpZgogewpAQCAtMTA5LDcgKzEwNSw3
IEBAIHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OmNvbXB1dGVPZmZzZXRzKGMKICAgICAgICAgbV9w
YWludE9mZnNldCAtPSB0b0xheW91dFNpemUocmVuZGVyZXIuc2Nyb2xsUG9zaXRpb24oKSk7CiAK
ICAgICBtX2xheW91dERlbHRhID0gYW5jZXN0b3IubGF5b3V0RGVsdGEoKTsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2xheW91dERlbHRhWFNhdHVyYXRl
ZCA9IGFuY2VzdG9yLm1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkOwogICAgIG1fbGF5b3V0RGVsdGFZ
U2F0dXJhdGVkID0gYW5jZXN0b3IubV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQ7CiAjZW5kaWYKQEAg
LTI2MCwxMyArMjU2LDEzIEBAIHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OmVzdGFibGlzaExpbmVH
cmkKIHZvaWQgUmVuZGVyTGF5b3V0U3RhdGU6OmFkZExheW91dERlbHRhKExheW91dFNpemUgZGVs
dGEpCiB7CiAgICAgbV9sYXlvdXREZWx0YSArPSBkZWx0YTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2xheW91dERlbHRhWFNhdHVyYXRlZCB8PSBtX2xh
eW91dERlbHRhLndpZHRoKCkgPT0gTGF5b3V0VW5pdDo6bWF4KCkgfHwgbV9sYXlvdXREZWx0YS53
aWR0aCgpID09IExheW91dFVuaXQ6Om1pbigpOwogICAgIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVk
IHw9IG1fbGF5b3V0RGVsdGEuaGVpZ2h0KCkgPT0gTGF5b3V0VW5pdDo6bWF4KCkgfHwgbV9sYXlv
dXREZWx0YS5oZWlnaHQoKSA9PSBMYXlvdXRVbml0OjptaW4oKTsKICNlbmRpZgogfQogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFJlbmRlckxheW91dFN0
YXRlOjpsYXlvdXREZWx0YU1hdGNoZXMoTGF5b3V0U2l6ZSBkZWx0YSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gKGRlbHRhLndpZHRoKCkgPT0gbV9sYXlvdXREZWx0YS53aWR0aCgpIHx8IG1fbGF5b3V0
RGVsdGFYU2F0dXJhdGVkKSAmJiAoZGVsdGEuaGVpZ2h0KCkgPT0gbV9sYXlvdXREZWx0YS5oZWln
aHQoKSB8fCBtX2xheW91dERlbHRhWVNhdHVyYXRlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fY2xpcHBlZChmYWxzZSkKICAg
ICAgICAgLCBtX2lzUGFnaW5hdGVkKGZhbHNlKQogICAgICAgICAsIG1fcGFnZUxvZ2ljYWxIZWln
aHRDaGFuZ2VkKGZhbHNlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAsIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkKGZhbHNlKQogICAgICAgICAsIG1f
bGF5b3V0RGVsdGFZU2F0dXJhdGVkKGZhbHNlKQogI2VuZGlmCkBAIC03Niw3ICs3Niw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgbmVlZHNCbG9ja0RpcmVjdGlvbkxvY2F0aW9uU2V0QmVmb3JlTGF5
b3V0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lR3JpZCB8fCAobV9pc1BhZ2luYXRlZCAmJiBtX3Bh
Z2VMb2dpY2FsSGVpZ2h0KTsgfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVy
OyB9CiAjZW5kaWYKICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9j
bGlwUmVjdDsgfQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZExheW91
dERlbHRhKExheW91dFNpemUpOwogICAgIExheW91dFNpemUgbGF5b3V0RGVsdGEoKSBjb25zdCB7
IHJldHVybiBtX2xheW91dERlbHRhOyB9Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCBsYXlvdXREZWx0YU1hdGNoZXMoTGF5b3V0U2l6ZSkgY29uc3Q7
CiAjZW5kaWYKIApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUGFn
aW5hdGVkIDogMTsKICAgICAvLyBJZiBvdXIgcGFnZSBoZWlnaHQgaGFzIGNoYW5nZWQsIHRoaXMg
d2lsbCBmb3JjZSBhbGwgYmxvY2tzIHRvIHJlbGF5b3V0LgogICAgIGJvb2wgbV9wYWdlTG9naWNh
bEhlaWdodENoYW5nZWQgOiAxOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIGJvb2wgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQgOiAxOwogICAgIGJvb2wgbV9s
YXlvdXREZWx0YVlTYXR1cmF0ZWQgOiAxOwogI2VuZGlmCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJp
dmF0ZToKICAgICBMYXlvdXRTaXplIG1fcGFnZU9mZnNldDsKICAgICBMYXlvdXRTaXplIG1fbGlu
ZUdyaWRPZmZzZXQ7CiAgICAgTGF5b3V0U2l6ZSBtX2xpbmVHcmlkUGFnaW5hdGlvbk9yaWdpbjsK
LSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZW5kZXJFbGVtZW50KiBt
X3JlbmRlcmVyIHsgbnVsbHB0ciB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
MTEgKzEwMiwxMSBAQCBSZW5kZXJPYmplY3Q6OlNldExheW91dE5lZWRlZEZvcmJpZGRlblNjCiAK
IHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyT2JqZWN0IHsKICAgICB2aXJ0dWFsIH5TYW1lU2l6ZUFz
UmVuZGVyT2JqZWN0KCkgPSBkZWZhdWx0OyAvLyBBbGxvY2F0ZSB2dGFibGUgcG9pbnRlci4KLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgV1RGX0FTU0VSVF9FTkFCTEVECiAgICAgYm9vbCB3ZWFr
UHRyRmFjdG9yV2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQ7CiAjZW5kaWYKICAgICB2b2lkKiBw
b2ludGVyc1s1XTsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNp
Z25lZCBtX2RlYnVnQml0ZmllbGRzIDogMjsKICNlbmRpZgogICAgIHVuc2lnbmVkIG1fYml0Zmll
bGRzOwpAQCAtMTI3LDcgKzEyNyw3IEBAIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUm
IG5vZGUpCiAgICAgLCBtX3BhcmVudChudWxscHRyKQogICAgICwgbV9wcmV2aW91cyhudWxscHRy
KQogICAgICwgbV9uZXh0KG51bGxwdHIpCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgLCBtX2hhc0FYT2JqZWN0KGZhbHNlKQogICAgICwgbV9zZXROZWVkc0xheW91dEZv
cmJpZGRlbihmYWxzZSkKICNlbmRpZgpAQCAtMTQzLDggKzE0Myw4IEBAIFJlbmRlck9iamVjdDo6
UmVuZGVyT2JqZWN0KE5vZGUmIG5vZGUpCiBSZW5kZXJPYmplY3Q6On5SZW5kZXJPYmplY3QoKQog
ewogICAgIHZpZXcoKS5kaWREZXN0cm95UmVuZGVyZXIoKTsKLSNpZm5kZWYgTkRFQlVHCiAgICAg
QVNTRVJUKCFtX2hhc0FYT2JqZWN0KTsKKyNpZm5kZWYgTkRFQlVHCiAgICAgcmVuZGVyT2JqZWN0
Q291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogICAgIEFTU0VSVCghaGFzUmFyZURhdGEoKSk7
CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNsZWFyTmVlZHNMYXlvdXQo
KQogICAgIHNldE5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0Qml0KGZhbHNlKTsKICAgICBp
ZiAoaXM8UmVuZGVyRWxlbWVudD4oKnRoaXMpKQogICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVt
ZW50PigqdGhpcykuc2V0QW5jZXN0b3JMaW5lQm94RGlydHkoZmFsc2UpOwotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05l
ZWRMYXlvdXQoKTsKICNlbmRpZgogfQpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjptYXJrQ29udGFpbmluZ0Jsb2Nrc0YKICAgICAgICAgc2NoZWR1bGVSZWxheW91dEZvclN1
YnRyZWUoKmFuY2VzdG9yKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxF
RAogdm9pZCBSZW5kZXJPYmplY3Q6OmNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlv
dXQoKQogewogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQoKSk7CkBAIC01NzUsNyArNTc1LDcgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmNoZWNrQmxvY2tQb3NpdGlvbmVkTwogICAgIGlmIChpczxSZW5k
ZXJCbG9jaz4oKnRoaXMpKQogICAgICAgICBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnRoaXMpLmNo
ZWNrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0UHJlZmVycmVkTG9naWNhbFdp
ZHRoc0RpcnR5KGJvb2wgc2hvdWxkQmVEaXJ0eSwgTWFya2luZ0JlaGF2aW9yIG1hcmtQYXJlbnRz
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNp
b24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgdXNlRGFya0FwcGVhcmFuY2UoKSBjb25zdDsKICAgICBPcHRpb25TZXQ8U3R5bGVD
b2xvcjo6T3B0aW9ucz4gc3R5bGVDb2xvck9wdGlvbnMoKSBjb25zdDsKIAotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgc2V0SGFzQVhPYmplY3QoYm9vbCBmbGFn
KSB7IG1faGFzQVhPYmplY3QgPSBmbGFnOyB9CiAgICAgYm9vbCBoYXNBWE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQVhPYmplY3Q7IH0KIApAQCAtMTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlck9iamVjdDsKICAgICAgICAgYm9vbCBtX3By
ZWV4aXN0aW5nRm9yYmlkZGVuOwogICAgIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCiAgICAgLy8gT2J0YWlucyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgYmxvY2sgKGluY2x1
ZGluZyB0aGlzIGJsb2NrKSB0aGF0IGNvbnRyaWJ1dGVzIGEgZmlyc3QtbGluZSBzdHlsZSB0byBv
dXIgaW5saW5lCiAgICAgLy8gY2hpbGRyZW4uCkBAIC04MTMsNyArODEzLDcgQEAgcHJvdGVjdGVk
OgogICAgIH0KIAogcHJpdmF0ZToKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBib29sIGlzU2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oKSBjb25zdCB7IHJldHVybiBtX3Nl
dE5lZWRzTGF5b3V0Rm9yYmlkZGVuOyB9CiAgICAgdm9pZCBzZXROZWVkc0xheW91dElzRm9yYmlk
ZGVuKGJvb2wgZmxhZykgeyBtX3NldE5lZWRzTGF5b3V0Rm9yYmlkZGVuID0gZmxhZzsgfQogI2Vu
ZGlmCkBAIC04MzMsNyArODMzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc1JhcmVEYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEoKTsgfQogICAgIHZvaWQgc2V0
SGFzUmFyZURhdGEoYm9vbCBiKSB7IG1fYml0ZmllbGRzLnNldEhhc1JhcmVEYXRhKGIpOyB9CiAK
LSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQmxvY2tQ
b3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKICNlbmRpZgogCkBAIC04NDMsNyArODQzLDcg
QEAgcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3QqIG1fcHJldmlvdXM7CiAgICAgUmVuZGVyT2Jq
ZWN0KiBtX25leHQ7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBi
b29sIG1faGFzQVhPYmplY3QgICAgICAgICAgICAgOiAxOwogICAgIGJvb2wgbV9zZXROZWVkc0xh
eW91dEZvcmJpZGRlbiA6IDE7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJRdW90ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclF1b3RlLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclF1b3RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB2
b2lkIFJlbmRlclF1b3RlOjpzdHlsZURpZENoYW5nZShTdHlsZURpCiAKIGNvbnN0IHVuc2lnbmVk
IG1heERpc3RpbmN0UXVvdGVDaGFyYWN0ZXJzID0gMTY7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIHZvaWQgY2hlY2tOdW1iZXJPZkRpc3RpbmN0
UXVvdGVDaGFyYWN0ZXJzKFVDaGFyIGNoYXJhY3RlcikKIHsKQEAgLTg3LDcgKzg3LDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tOdW1iZXJPZkRpc3RpbmN0UXVvdGVDaAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBzdHJ1Y3Qg
UXVvdGVzRm9yTGFuZ3VhZ2UgewogICAgIGNvbnN0IGNoYXIqIGxhbmd1YWdlOwpAQCAtMjU5LDcg
KzI1OSw3IEBAIHN0YXRpYyBjb25zdCBRdW90ZXNGb3JMYW5ndWFnZSogcXVvdGVzRm8KIAogICAg
IGNvbnN0IHVuc2lnbmVkIG1heExhbmd1YWdlTGVuZ3RoID0gODsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIE9uZSB0aW1lIGNoZWNrIHRoYXQgdGhl
IHRhYmxlIG1lZXRzIHRoZSBjb25zdHJhaW50cyB0aGF0IHRoZSBjb2RlIGJlbG93IHJlbGllcyBv
bi4KIAogICAgIHN0YXRpYyBib29sIGRpZE9uZVRpbWVDaGVjayA9IGZhbHNlOwpAQCAtMjg0LDcg
KzI4NCw3IEBAIHN0YXRpYyBjb25zdCBRdW90ZXNGb3JMYW5ndWFnZSogcXVvdGVzRm8KICAgICAg
ICAgICAgIGNoZWNrTnVtYmVyT2ZEaXN0aW5jdFF1b3RlQ2hhcmFjdGVycyhxdW90ZVRhYmxlW2ld
LmNsb3NlMik7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5B
QkxFRAogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbGFuZ3VhZ2UubGVuZ3RoKCk7CiAgICAgaWYg
KCFsZW5ndGggfHwgbGVuZ3RoID4gbWF4TGFuZ3VhZ2VMZW5ndGgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRl
ckFkam9pbmluZ0NlbGxBZnRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwmKTsKIAogICAgIHVzaW5n
IFJlbmRlckJsb2NrRmxvdzo6bm9kZUF0UG9pbnQ7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCBpc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkgY29uc3QgeyByZXR1
cm4gIXRhYmxlKCktPmNlbGxBZnRlcih0aGlzKSB8fCAhdGFibGUoKS0+Y2VsbEJlZm9yZSh0aGlz
KTsgfQogI2VuZGlmCiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
Nyw3ICs2NDcsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6Y29tcHV0ZU92ZXJmbG93CiAg
ICAgdW5zaWduZWQgdG90YWxDZWxsc0NvdW50ID0gbkVmZkNvbHMgKiB0b3RhbFJvd3M7CiAgICAg
dW5zaWduZWQgbWF4QWxsb3dlZE92ZXJmbG93aW5nQ2VsbHNDb3VudCA9IHRvdGFsQ2VsbHNDb3Vu
dCA8IGdNaW5UYWJsZVNpemVUb1VzZUZhc3RQYWludFBhdGhXaXRoT3ZlcmZsb3dpbmdDZWxsID8g
MCA6IGdNYXhBbGxvd2VkT3ZlcmZsb3dpbmdDZWxsUmF0aW9Gb3JGYXN0UGFpbnRQYXRoICogdG90
YWxDZWxsc0NvdW50OwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
Ym9vbCBoYXNPdmVyZmxvd2luZ0NlbGwgPSBmYWxzZTsKICNlbmRpZgogICAgIC8vIE5vdyB0aGF0
IG91ciBoZWlnaHQgaGFzIGJlZW4gZGV0ZXJtaW5lZCwgYWRkIGluIG92ZXJmbG93IGZyb20gY2Vs
bHMuCkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmNvbXB1dGVP
dmVyZmxvdwogICAgICAgICAgICAgaWYgKHIgPCB0b3RhbFJvd3MgLSAxICYmIGNlbGwgPT0gcHJp
bWFyeUNlbGxBdChyICsgMSwgYykpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChjZWxsKTsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgICAgIGhhc092ZXJmbG93aW5nQ2VsbCB8PSBjZWxsLT5oYXNW
aXN1YWxPdmVyZmxvdygpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoY2VsbC0+aGFzVmlzdWFs
T3ZlcmZsb3coKSAmJiAhbV9mb3JjZVNsb3dQYWludFBhdGhXaXRoT3ZlcmZsb3dpbmdDZWxsKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94
ZXMuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dExpbmVCb3hlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Miw3ICs1NjIsNyBAQCBi
b29sIFJlbmRlclRleHRMaW5lQm94ZXM6OmRpcnR5UmFuZ2UoUmVuCiAKIGlubGluZSB2b2lkIFJl
bmRlclRleHRMaW5lQm94ZXM6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogI2lmZGVmIENIRUNLX0NPTlNJU1RFTkNZ
CiAgICAgY29uc3QgSW5saW5lVGV4dEJveCogcHJldiA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRv
KiBjaGlsZCA9IG1fZmlyc3Q7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0VGV4dEJveCgpKSB7
CkBAIC01NzIsMTAgKzU3MiwxMCBAQCBpbmxpbmUgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpj
aGVja0NvCiAgICAgfQogICAgIEFTU0VSVChwcmV2ID09IG1fbGFzdCk7CiAjZW5kaWYKLSNlbmRp
ZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKIFJlbmRlclRleHRMaW5lQm94ZXM6On5SZW5kZXJUZXh0TGluZUJv
eGVzKCkKIHsKICAgICBBU1NFUlQoIW1fZmlyc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNv
bHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7
CiAgICAgVmVjdG9yPEludFJlY3Q+IGFic29sdXRlUmVjdHNGb3JSYW5nZShjb25zdCBSZW5kZXJU
ZXh0JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgYm9vbCB1c2VTZWxlY3Rpb25IZWln
aHQsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIH5SZW5kZXJUZXh0TGluZUJveGVzKCk7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFr
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MjcsNyArNjI3LDcgQEAgaW5saW5lIHZv
aWQgdHJ5SHlwaGVuYXRpbmcoUmVuZGVyVGV4dCYgdAogCiAgICAgQVNTRVJUKHBvcyAtIGxhc3RT
cGFjZSAtIHByZWZpeExlbmd0aCA+PSBtaW5pbXVtU3VmZml4TGVuZ3RoKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEhhc2hTZXQ8Y29uc3QgRm9udCo+
IGZhbGxiYWNrRm9udHM7CiAgICAgZmxvYXQgcHJlZml4V2lkdGggPSBoeXBoZW5XaWR0aCArIHRl
eHRXaWR0aCh0ZXh0LCBsYXN0U3BhY2UsIHByZWZpeExlbmd0aCwgZm9udCwgeFBvcywgaXNGaXhl
ZFBpdGNoLCBjb2xsYXBzZVdoaXRlU3BhY2UsIGZhbGxiYWNrRm9udHMpICsgbGFzdFNwYWNlV29y
ZFNwYWNpbmc7CiAgICAgQVNTRVJUKHhQb3MgKyBwcmVmaXhXaWR0aCA8PSBhdmFpbGFibGVXaWR0
aCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAkocmV2
aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBwcml2YXRlOgogICAgIEdyaWRT
cGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCBHcmlkU3BhblR5cGUgdHlwZSkKICAgICAg
ICAgOiBtX3R5cGUodHlwZSkKICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgICAgIEFTU0VSVChzdGFydExpbmUgPCBlbmRMaW5lKTsKICAgICAgICAg
aWYgKHR5cGUgPT0gVHJhbnNsYXRlZERlZmluaXRlKSB7CiAgICAgICAgICAgICBBU1NFUlQoc3Rh
cnRMaW5lID49IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3
IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyU3R5bGUgewogICAgIHN0cnVjdCBOb25Jbmhlcml0
ZWRGbGFncyB7CiAgICAgICAgIHVuc2lnbmVkIG1fYml0ZmllbGRzWzJdOwogICAgIH0gbV9ub25J
bmhlcml0ZWRGbGFnczsKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9B
U1NFUlRJT05TKQorI2lmIEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJ
T05TKQogICAgIGJvb2wgZGVsZXRpb25DaGVjazsKICNlbmRpZgogfTsKQEAgLTIzMSw3ICsyMzEs
NyBAQCBpbmxpbmUgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKFJlbmRlclN0CiAKIFJlbmRlclN0
eWxlOjp+UmVuZGVyU3R5bGUoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNF
Q1VSSVRZX0FTU0VSVElPTlMpCisjaWYgQVNTRVJUX0VOQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZ
X0FTU0VSVElPTlMpCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZGVs
ZXRpb25IYXNCZWd1bik7CiAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJl
dmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBSZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJl
bmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUpOwogICAgIHN0YXRpYyBSZW5kZXJT
dHlsZSBjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHBzZXVkb1N0eWxlKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VS
SVRZX0FTU0VSVElPTlMpCisjaWYgQVNTRVJUX0VOQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FT
U0VSVElPTlMpCiAgICAgYm9vbCBkZWxldGlvbkhhc0JlZ3VuKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWxldGlvbkhhc0JlZ3VuOyB9CiAjZW5kaWYKIApAQCAtMTkwNSw3ICsxOTA1LDcgQEAgcHJpdmF0
ZToKIAogICAgIERhdGFSZWY8U1ZHUmVuZGVyU3R5bGU+IG1fc3ZnU3R5bGU7CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorI2lmIEFTU0VSVF9F
TkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wgbV9kZWxldGlv
bkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1YnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlQnVpbGRlclJ1Ynku
Y3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5QWZ0ZXJCbG9jayhjb25zCiAgICAgICAgICYm
IGRvd25jYXN0PFJlbmRlckJsb2NrPigqb2JqZWN0KS5maXJzdENoaWxkKCktPnN0eWxlKCkuc3R5
bGVUeXBlKCkgPT0gUHNldWRvSWQ6OkFmdGVyOwogfQogCi0jaWZuZGVmIEFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSdWJ5Q2hpbGRGb3JO
b3JtYWxSZW1vdmFsKGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0KQogewogICAgIHJldHVybiBv
YmplY3QuaXNSdWJ5UnVuKCkKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
UnVieUNoaWxkRm9yTm9ybWFsUgogICAgIHx8IG9iamVjdC5pc1JlbmRlck11bHRpQ29sdW1uU2V0
KCkKICAgICB8fCBpc0Fub255bW91c1J1YnlJbmxpbmVCbG9jaygmb2JqZWN0KTsKIH0KLSNlbmRp
ZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHN0YXRpYyBpbmxpbmUgUmVuZGVyQmxvY2sq
IHJ1YnlCZWZvcmVCbG9jayhjb25zdCBSZW5kZXJFbGVtZW50KiBydWJ5KQogewpAQCAtMzg2LDkg
KzM4Niw3IEBAIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFJlbmRlclRyZWVCdWlsZGUKICAgICAv
LyBJZiB0aGUgY2hpbGQncyBwYXJlbnQgaXMgKnRoaXMgKG11c3QgYmUgYSBydWJ5IHJ1biBvciBn
ZW5lcmF0ZWQgY29udGVudCBvciBhbm9ueW1vdXMgYmxvY2spLAogICAgIC8vIGp1c3QgdXNlIHRo
ZSBub3JtYWwgcmVtb3ZlIG1ldGhvZC4KICAgICBpZiAoY2hpbGQucGFyZW50KCkgPT0gJnBhcmVu
dCkgewotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKICAgICAgICAgQVNTRVJUKGlzUnVieUNoaWxk
Rm9yTm9ybWFsUmVtb3ZhbChjaGlsZCkpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBtX2J1aWxk
ZXIuZGV0YWNoRnJvbVJlbmRlckVsZW1lbnQocGFyZW50LCBjaGlsZCk7CiAgICAgfQogICAgIC8v
IElmIHRoZSBjaGlsZCdzIHBhcmVudCBpcyBhbiBhbm95bW91cyBibG9jayAobXVzdCBiZSBnZW5l
cmF0ZWQgOmJlZm9yZS86YWZ0ZXIgY29udGVudCkKQEAgLTQxMCw5ICs0MDgsNyBAQCBSZW5kZXJQ
dHI8UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlCiAgICAgLy8gSWYgdGhlIGNoaWxkJ3Mg
cGFyZW50IGlzICp0aGlzIChtdXN0IGJlIGEgcnVieSBydW4gb3IgZ2VuZXJhdGVkIGNvbnRlbnQg
b3IgYW5vbnltb3VzIGJsb2NrKSwKICAgICAvLyBqdXN0IHVzZSB0aGUgbm9ybWFsIHJlbW92ZSBt
ZXRob2QuCiAgICAgaWYgKGNoaWxkLnBhcmVudCgpID09ICZwYXJlbnQpIHsKLSNpZm5kZWYgQVNT
RVJUX0RJU0FCTEVECiAgICAgICAgIEFTU0VSVChpc1J1YnlDaGlsZEZvck5vcm1hbFJlbW92YWwo
Y2hpbGQpKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gbV9idWlsZGVyLmJsb2NrQnVpbGRlcigp
LmRldGFjaChwYXJlbnQsIGNoaWxkKTsKICAgICB9CiAgICAgLy8gSWYgdGhlIGNoaWxkJ3MgcGFy
ZW50IGlzIGFuIGFub3ltb3VzIGJsb2NrIChtdXN0IGJlIGdlbmVyYXRlZCA6YmVmb3JlLzphZnRl
ciBjb250ZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRl
clRyZWVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgUmVuZGVyVHJlZVBvc2l0aW9uOjpj
b21wdXRlTmV4dFNpYmwKIHsKICAgICBBU1NFUlQoIW5vZGUucmVuZGVyZXIoKSk7CiAgICAgaWYg
KG1faGFzVmFsaWROZXh0U2libGluZykgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgICAgICBjb25zdCB1bnNpZ25lZCBvTlNxdWFyZWRBdm9pZGFuY2VMaW1p
dCA9IDIwOwogICAgICAgICBib29sIHNraXBBc3NlcnQgPSBtX3BhcmVudC5pc1JlbmRlclZpZXco
KSB8fCArK21fYXNzZXJ0aW9uTGltaXRDb3VudGVyID4gb05TcXVhcmVkQXZvaWRhbmNlTGltaXQ7
CiAgICAgICAgIEFTU0VSVChza2lwQXNzZXJ0IHx8IG5leHRTaWJsaW5nUmVuZGVyZXIobm9kZSkg
PT0gbV9uZXh0U2libGluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlvbi5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVBvc2l0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJFbGVt
ZW50JiBtX3BhcmVudDsKICAgICBXZWFrUHRyPFJlbmRlck9iamVjdD4gbV9uZXh0U2libGluZyB7
IG51bGxwdHIgfTsKICAgICBib29sIG1faGFzVmFsaWROZXh0U2libGluZyB7IGZhbHNlIH07Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgbV9h
c3NlcnRpb25MaW1pdENvdW50ZXIgeyAwIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNTQwNDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiwxMSArMTAyLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICA6IG1f
Y29udmVydGVyKG90aGVyLm1fY29udmVydGVyKQogICAgICAgICAgICAgLCBtX2Jhc2VPZk9mZnNl
dChvdGhlci5tX2Jhc2VPZk9mZnNldCkKICAgICAgICAgICAgICwgbV9sb2NhdGlvbihvdGhlci5t
X2xvY2F0aW9uKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICAgICAgLCBtX2FjdGl2ZShvdGhlci5tX2FjdGl2ZSkKICNlbmRpZgogICAgICAgICB7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICBvdGhl
ci5tX2FjdGl2ZSA9IGZhbHNlOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTExNyw3ICsxMTcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgc2l6ZV90IGRlbHRhID0gbV9jb252ZXJ0ZXIubV9yZXN1
bHQuc2l6ZSgpIC0gbV9iYXNlT2ZPZmZzZXQ7CiAgICAgICAgICAgICBBU1NFUlQoZGVsdGEgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOwogICAgICAgICAgICAgbV9jb252
ZXJ0ZXIub3ZlcndyaXRlMTYobV9sb2NhdGlvbiwgZGVsdGEpOwotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgbV9hY3RpdmUgPSBmYWxzZTsKICNl
bmRpZgogICAgICAgICB9CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU1ZH
VG9PVEZGb250Q29udmVydGVyJiBtX2NvbnZlcnRlcjsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1f
YmFzZU9mT2Zmc2V0OwogICAgICAgICBjb25zdCBzaXplX3QgbV9sb2NhdGlvbjsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgYm9vbCBtX2FjdGl2ZSA9
IHsgdHJ1ZSB9OwogI2VuZGlmCiAgICAgfTsKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIFNWR1Rv
T1RGRm9udENvbnZlcnRlcjo6YXBwZW5kQ0ZGVGFiCiAgICAgYXBwZW5kMzIoMSArIHNpemVPZlRv
cEluZGV4KTsgLy8gMS1pbmRleCBvZmZzZXQganVzdCBwYXN0IGVuZCBvZiBESUNUIGRhdGEKIAog
ICAgIC8vIERJQ1QgaW5mb3JtYXRpb24KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICB1bnNpZ25lZCB0b3BEaWN0U3RhcnQgPSBtX3Jlc3VsdC5zaXplKCk7CiAj
ZW5kaWYKICAgICBtX3Jlc3VsdC5hcHBlbmQob3BlcmFuZDMyQml0KTsKQEAgLTcxNywxMyArNzE3
LDEzIEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRDRkZUYWIKIAogR2x5cGgg
U1ZHVG9PVEZGb250Q29udmVydGVyOjpmaXJzdEdseXBoKGNvbnN0IFZlY3RvcjxHbHlwaCwgMT4m
IHYsIFVDaGFyMzIgY29kZXBvaW50KSBjb25zdAogewotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lm
ICFBU1NFUlRfRU5BQkxFRAogICAgIFVOVVNFRF9QQVJBTShjb2RlcG9pbnQpOwogI2VuZGlmCiAg
ICAgQVNTRVJUKCF2LmlzRW1wdHkoKSk7CiAgICAgaWYgKHYuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBh
dXRvIGNvZGVQb2ludHMgPSBTdHJpbmdWaWV3KG1fZ2x5cGhzW3ZbMF1dLmNvZGVwb2ludHMpLmNv
ZGVQb2ludHMoKTsKICAgICBhdXRvIGNvZGVQb2ludHNJdGVyYXRvciA9IGNvZGVQb2ludHMuYmVn
aW4oKTsKICAgICBBU1NFUlQoY29kZVBvaW50c0l0ZXJhdG9yICE9IGNvZGVQb2ludHMuZW5kKCkp
OwpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVu
ZEtFUk5UYQogICAgIGFwcGVuZDE2KDApOyAvLyBWZXJzaW9uCiAgICAgYXBwZW5kMTYoMik7IC8v
IE51bWJlciBvZiBzdWJ0YWJsZXMKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIGF1dG8gc3VidGFibGVzT2Zmc2V0ID0gbV9yZXN1bHQuc2l6ZSgpOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURp
c3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBTVkdUcmFuc2Zvcm1E
aXN0YW5jZTo6U1ZHVHJhbnNmb3JtRGlzdGFuCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBj
YXNlIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFC
TEVECiAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOgpAQCAtOTIsNyArOTIsNyBAQCBTVkdUcmFuc2Zv
cm1EaXN0YW5jZSBTVkdUcmFuc2Zvcm1EaXN0YW5jCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAg
ICBjYXNlIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9F
TkFCTEVECiAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgY2FzZSBTVkdUcmFuc2Zv
cm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOgpAQCAtMTI1LDcgKzEyNSw3IEBAIFNWR1Ry
YW5zZm9ybVZhbHVlIFNWR1RyYW5zZm9ybURpc3RhbmNlOjoKICAgICBzd2l0Y2ggKGZpcnN0LnR5
cGUoKSkgewogICAgIGNhc2UgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fTUFUUklY
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNp
ZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBjYXNl
IFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV046CkBAIC0xNjcsNyArMTY3
LDcgQEAgU1ZHVHJhbnNmb3JtVmFsdWUgU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OgogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9N
QVRSSVg6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxF
RAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBGQUxMVEhST1VHSDsKICNlbmRpZgogICAg
IGNhc2UgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKQEAgLTIxMSw3
ICsyMTEsNyBAQCBmbG9hdCBTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6ZGlzdGFuY2UoKSBjCiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFNWR1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNG
T1JNX01BVFJJWDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJ
U0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlm
CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOgpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNTQw
NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlKGNvbgogICAgIGlmICghU1VDQ0VFREVEKGhyKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRv
IG5hdGl2ZUltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlLT5HZXRQaXhlbFNpemUoKTsKICAgICBBU1NF
UlQobmF0aXZlSW1hZ2VTaXplLmhlaWdodCA9IHJlY3QoKS5zaXplKCkuaGVpZ2h0KCkpOwogICAg
IEFTU0VSVChuYXRpdmVJbWFnZVNpemUud2lkdGggPSByZWN0KCkuc2l6ZSgpLndpZHRoKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IEludGVybmFsU2V0dGluZ3NXcmFwcGVyKFBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9pbnRl
cm5hbFNldHRpbmdzKEludGVybmFsU2V0dGluZ3M6OmNyZWF0ZShwYWdlKSkgeyB9CiAgICAgdmly
dHVhbCB+SW50ZXJuYWxTZXR0aW5nc1dyYXBwZXIoKSB7IG1faW50ZXJuYWxTZXR0aW5ncy0+aG9z
dERlc3Ryb3llZCgpOyB9Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBpc1JlZkNvdW50ZWRXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogI2VuZGlmCiAgICAgSW50ZXJuYWxTZXR0aW5ncyogaW50ZXJuYWxTZXR0aW5ncygp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxTZXR0aW5ncy5nZXQoKTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAg
RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKICAgICBSZWZQ
dHI8V29ya2VyU2NyaXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJl
YWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAKICAgICB+UGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUoKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludERlZmlu
aXRpb25Mb2NrKCkpOwogICAgICAgICBBU1NFUlQocGFpbnREZWZpbml0aW9uTWFwKCkuaXNFbXB0
eSgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAJKHJldmlzaW9uIDI1
NDA0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTdGVwOjpldmFsdWF0ZShOb2RlJiBjb250ZXh0LCBO
b2RlUwogICAgIH0KIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogc3RhdGljIGlubGluZSBOb2RlOjpOb2RlVHlwZSBwcmltYXJ5Tm9kZVR5cGUoU3RlcDo6QXhp
cyBheGlzKQogewogICAgIHN3aXRjaCAoYXhpcykgewpAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRp
YyBpbmxpbmUgTm9kZTo6Tm9kZVR5cGUgcHJpbWFyeU5vZGUKICAgICAgICAgICAgIHJldHVybiBO
b2RlOjpFTEVNRU5UX05PREU7CiAgICAgfQogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAogLy8gRXZhbHVhdGUgTm9kZVRlc3Qgd2l0aG91dCBjb25zaWRlcmluZyBtZXJnZWQg
cHJlZGljYXRlcy4KIGlubGluZSBib29sIG5vZGVNYXRjaGVzQmFzaWNUZXN0KE5vZGUmIG5vZGUs
IFN0ZXA6OkF4aXMgYXhpcywgY29uc3QgU3RlcDo6Tm9kZVRlc3QmIG5vZGVUZXN0KQpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjAtMDEtMDUgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuYWJsZSBydW5uaW5nIGEgcmVsZWFzZSBidWlsZCB3
aXRoIGRlYnVnIEFTU0VSVHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU3NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmludmFsaWRhdGVBbmRDYW5jZWwpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3RvcmFnZTo6c2V0Q2FwYWNpdHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICh0b05TVVJMU2Vzc2lvblJl
c3BvbnNlRGlzcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29h
OjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OndhaXRGb3JNZXNzYWdlKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmg6CisgICAgICAgIChJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcjo6d2lsbEJlQWRkZWRUb01lc3NhZ2VSZWNlaXZlck1hcCk6CisgICAgICAgIChJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcjo6d2lsbEJlUmVtb3ZlZEZyb21NZXNzYWdlUmVjZWl2ZXJNYXAp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW06CisgICAg
ICAgIChJUEM6OnJlYWRGcm9tTWFjaFBvcnQpOgorICAgICAgICAqIFBsYXRmb3JtL21hYy9NYWNo
VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKHNldE1hY2hFeGNlcHRpb25Qb3J0KToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpDbGllbnQ6OkNsaWVudCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tOgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmg6CisgICAgICAgICogU2hh
cmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja2luZ1N0b3JlOjppbmNv
cnBvcmF0ZVVwZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2Fk
U3RhdGU6OlRyYW5zYWN0aW9uOjpUb2tlbjo6VG9rZW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6On5XZWJQYWdl
UHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBs
dWdpblN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpub3Rp
ZnlBbmREZXN0cm95U3RyZWFtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bk1vZGFsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpjaGVja0Rv
Y3VtZW50c0NhcHR1cmVTdGF0ZUNvbnNpc3RlbmN5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXBk
YXRlUHJvY2Vzc05hbWUpOgorCiAyMDIwLTAxLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlIGRvZXNuJ3QgYWx3YXlzIGNh
bGwgdXBkYXRlUmVuZGVyaW5nKCkgd2hlbiBhIHRlc3QgY29tcGxldGVzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAkocmV2aXNpb24g
MjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9u
OjppbnZhbGlkYXRlQW5kQ2FuY2VsCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykK
ICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnZhbGlkYXRlQW5kQ2FuY2VsKCk7
CiAjZW5kaWYKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBt
X2lzSW52YWxpZGF0ZWQgPSB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBQcmVmZXRjaENhY2hlIG1f
cHJlZmV0Y2hDYWNoZTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIGJvb2wgbV9pc0ludmFsaWRhdGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIFJlZlB0
cjxOZXR3b3JrQ2FjaGU6OkNhY2hlPiBtX2NhY2hlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODcsNyArOTg3LDcg
QEAgdm9pZCBTdG9yYWdlOjpzZXRDYXBhY2l0eShzaXplX3QgY2FwYWNpdAogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBjb25zdCBzaXplX3QgYXNzdW1lZEF2ZXJhZ2VSZWNvcmRTaXplID0gNTAg
PDwgMTA7CiAgICAgc2l6ZV90IG1heGltdW1SZWNvcmRDb3VudCA9IGNhcGFjaXR5IC8gYXNzdW1l
ZEF2ZXJhZ2VSZWNvcmRTaXplOwogICAgIC8vIH4xMCBiaXRzIHBlciBlbGVtZW50IGFyZSByZXF1
aXJlZCBmb3IgPDElIGZhbHNlIHBvc2l0aXZlIHJhdGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
c3RhdGljIE5TVVJMU2Vzc2lvblJlc3BvbnNlRGlzcG9zaXRpb24gdAogICAgIHN3aXRjaCAoZGlz
cG9zaXRpb24pIHsKICAgICBjYXNlIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6U3RvcEFsbExvYWRz
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNp
ZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBjYXNl
IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlOgpAQCAtOTI2LDcgKzkyNiw3IEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBib29s
IHNlc3Npb25zQ3JlYXRlZCA9IGZhbHNlOwogI2VuZGlmCiAKQEAgLTEwMjYsNyArMTAyNiw3IEBA
IE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKIHsKICAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXNz
aW9uc0NyZWF0ZWQgPSB0cnVlOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIwLDcgKzUy
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWkKIAogICAgIC8v
IERvbid0IGV2ZW4gc3RhcnQgd2FpdGluZyBpZiB3ZSBoYXZlIEludGVycnVwdFdhaXRpbmdJZlN5
bmNNZXNzYWdlQXJyaXZlcyBhbmQgdGhlcmUncyBhIHN5bmMgbWVzc2FnZSBhbHJlYWR5IGluIHRo
ZSBxdWV1ZS4KICAgICBpZiAoaGFzSW5jb21pbmdTeW5jaHJvbm91c01lc3NhZ2UgJiYgd2FpdEZv
ck9wdGlvbnMuY29udGFpbnMoV2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzKSkgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3dhaXRGb3JNZXNzYWdlTXV0
ZXgpOwogICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGhhdmluZyBtdWx0aXBsZSBjbGllbnRz
IHdhaXRpbmcgZm9yIG1lc3NhZ2VzLgogICAgICAgICBBU1NFUlQoIW1fd2FpdGluZ0Zvck1lc3Nh
Z2UpOwpJbmRleDogU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVJlY2VpdmVy
LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3Nh
Z2VSZWNlaXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHdpbGxCZUFkZGVkVG9NZXNzYWdlUmVjZWl2ZXJNYXAoKQogICAgIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9tZXNzYWdlUmVj
ZWl2ZXJNYXBDb3VudCsrOwogI2VuZGlmCiAgICAgfQpAQCAtNjMsMTIgKzYzLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbU1lc3NhZ2VSZWNlaXZlck1hcCgpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9tZXNzYWdlUmVjZWl2ZXJNYXBDb3VudCk7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fbWVzc2FnZVJlY2VpdmVy
TWFwQ291bnQtLTsKICNlbmRpZgogICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIHVuc2lnbmVkIG1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQgeyAw
IH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9D
b25uZWN0aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9Db25uZWN0aW9uQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgbWFjaF9tc2dfaGVhZGVyX3QqIHJlYWRGcm9t
TWFjaFBvCiAgICAgfQogCiAgICAgaWYgKGtyICE9IE1BQ0hfTVNHX1NVQ0NFU1MpIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgV2ViS2l0OjpzZXRD
cmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbigoX19icmlkZ2UgQ0ZTdHJp
bmdSZWYpW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJVbmhhbmRsZWQgZXJyb3IgY29kZSAl
eCBmcm9tIG1hY2hfbXNnLCByZWNlaXZlIHBvcnQgaXMgJXgiLCBrciwgbWFjaFBvcnRdKTsKICNl
bmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vbWFjL01hY2hVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vbWFjL01hY2hVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9NYWNoVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIHNldE1hY2hFeGNlcHRpb25Qb3J0KG1hY2hfcG9ydF90
IGV4CiAgICAgQVNTRVJUKE1BQ0hfUE9SVF9WQUxJRChleGNlcHRpb25Qb3J0KSk7CiAKICAgICAv
LyBBc3NlcnQgdGhhdCB3ZSBkb250IHRyeSB0byBjYWxsIHNldE1hY2hFeGNlcHRpb25Qb3J0IG1v
cmUgdGhhbiBvbmNlIHBlciBwcm9jZXNzLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIHN0YXRpYyBtYWNoX3BvcnRfdCB0YXNrRXhjZXB0aW9uUG9ydCA9IE1B
Q0hfUE9SVF9OVUxMOwogICAgIEFTU0VSVCh0YXNrRXhjZXB0aW9uUG9ydCA9PSBNQUNIX1BPUlRf
TlVMTCk7CiAgICAgdGFza0V4Y2VwdGlvblBvcnQgPSBleGNlcHRpb25Qb3J0OwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkU3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRP
bmx5LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVk
U3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIGlubGluZSBib29s
IGlzUG93ZXJPZjIodW5zaWduZWQgdikKIHsKICAgICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly93d3cu
Y3MudXRrLmVkdS9+dm9zZS9jLXN0dWZmL2JpdGhhY2tzLmh0bWwKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJQ2xpZW50LmgJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDbGllbnRJbnRlcmZhY2U+IGNsYXNzCiBwdWJsaWM6CiAgICAgQ2xp
ZW50KCkKICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgICAgIGF1dG8gaW50ZXJmYWNlU2l6ZXMgPSBJbnRlcmZhY2VTaXplczxDbGllbnRWZXJzaW9u
cz46OnNpemVzKCk7CiAgICAgICAgIEFTU0VSVChzdGQ6OmlzX3NvcnRlZChpbnRlcmZhY2VTaXpl
cy5iZWdpbigpLCBpbnRlcmZhY2VTaXplcy5lbmQoKSkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bQkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
UmVtb3RlT2JqZWN0Q29kZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgLSAo
aWQpaW5pdAogICAgIHJldHVybiBzZWxmOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBBU1NFUlQoX2N1cnJlbnRE
aWN0aW9uYXJ5ID09IF9yb290RGljdGlvbmFyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSBJc09iakNPYgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBJc09iakNPYmplY3Q8
VD4+IE9wdGlvbmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImLCBOU0FycmF5PENsYXNz
PiAqYWxsb3dlZENsYXNzZXMgPSBAWyBbVCBjbGFzc10gXSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IElzT2JqQ09iamVjdDxUPj4gT3B0aW9uYWw8UmV0YWluUHRyPFQ+PiBkZWNv
ZGUoRGVjb2RlciYsIENsYXNzIGFsbG93ZWRDbGFzcyk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYg
QVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIGlubGluZSBib29sIGlzT2JqZWN0Q2xhc3NBbGxvd2Vk
KGlkIG9iamVjdCwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzKQogewpAQCAtNTIsNyAr
NTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNPYmplY3RDbGFzc0FsbG93ZWQoCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZT4KIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IFQgKm9iamVjdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0b3JlLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQmFja2luZ1N0
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEJhY2tpbmdTdG9y
ZTo6aW5jb3Jwb3JhdGVVcGRhdGUoY29uCiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVy
bjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEludFNp
emUgdXBkYXRlU2l6ZSA9IHVwZGF0ZUluZm8udXBkYXRlUmVjdEJvdW5kcy5zaXplKCk7CiAgICAg
dXBkYXRlU2l6ZS5zY2FsZShtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICBBU1NFUlQoYml0bWFw
LT5zaXplKCkgPT0gdXBkYXRlU2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
ZW5lcmljQ2FsbGJhY2suaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBA
QCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8Q2FsbGJhY2tGdW5jdGlvbj4gbV9jYWxsYmFjazsK
IAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1f
b3JpZ2luVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmgJKHJldmlzaW9uIDI1NDA0NCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTcsMTQgKzk3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgY2xhc3MgVG9rZW4gewogICAgICAg
ICBwdWJsaWM6CiAgICAgICAgICAgICBUb2tlbihUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAgICAg
OiBtX3BhZ2VMb2FkU3RhdGUoKnRyYW5zYWN0aW9uLm1fcGFnZUxvYWRTdGF0ZSkKICNlbmRpZgog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLm1fcGFnZUxvYWRTdGF0
ZS0+bV9tYXlIYXZlVW5jb21taXR0ZWRDaGFuZ2VzID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgUGFn
ZUxvYWRTdGF0ZSYgbV9wYWdlTG9hZFN0YXRlOwogI2VuZGlmCiAgICAgICAgIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI1NDA0NCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxNCw3ICs1MTQsNyBAQCBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6Iik7CiAKICAgICBB
U1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1faWRlbnRpZmllcikgIT0gdGhpcyk7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgZm9yIChXZWJQYWdlUHJveHkq
IHBhZ2UgOiBtX3Byb2Nlc3MtPnBhZ2VzKCkpCiAgICAgICAgIEFTU0VSVChwYWdlICE9IHRoaXMp
OwogI2VuZGlmCkBAIC03MzY4LDcgKzczNjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRT
dGF0ZUFmdGVyUHJvY2VzCiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgLy8gRklYTUU6IEl0J3Mgd2VpcmQgdGhhdCByZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVk
KCkgaXMgY2FsbGVkIGV2ZW4gdGhvdWdoIHRoZSBwcm9jZXNzIGlzIGxhdW5jaGluZy4KICAgICBp
ZiAodGVybWluYXRpb25SZWFzb24gIT0gUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpOYXZpZ2F0
aW9uU3dhcCkKICAgICAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNz
UHJveHk6OlN0YXRlOjpMYXVuY2hpbmcgfHwgbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nl
c3NQcm94eTo6U3RhdGU6OlRlcm1pbmF0ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCShy
ZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMv
UHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsNyArMjIyLDcgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICBpZiAoIXByb2Nl
c3NMYXVuY2hlci0+aXNMYXVuY2hpbmcoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtYWNoX3BvcnRfdXJl
ZnNfdCBzZW5kUmlnaHRDb3VudCA9IDA7CiAgICAgICAgIG1hY2hfcG9ydF9nZXRfcmVmcyhtYWNo
X3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBNQUNIX1BPUlRfUklHSFRfU0VORCwgJnNlbmRS
aWdodENvdW50KTsKICAgICAgICAgQVNTRVJUKHNlbmRSaWdodENvdW50ID49IDEpOwpAQCAtMjY1
LDcgKzI2NSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAg
ICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVwbHkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkp
OwogICAgICAgICAgICAgQVNTRVJUKCFzdHJjbXAoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhy
ZXBseSwgIm1lc3NhZ2UtbmFtZSIpLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKSk7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1h
Y2hfcG9ydF91cmVmc190IHNlbmRSaWdodENvdW50ID0gMDsKICAgICAgICAgICAgIG1hY2hfcG9y
dF9nZXRfcmVmcyhtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBNQUNIX1BPUlRfUklH
SFRfU0VORCwgJnNlbmRSaWdodENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVChzZW5kUmlnaHRD
b3VudCA+PSAxKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxMiw3ICsxOTEyLDcgQEAgdm9pZCBXZWJQcm9jZXNz
OjpncmFudFVzZXJNZWRpYURldmljZVNhbgogCiBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tEb2N1
bWVudHNDYXB0dXJlU3RhdGVDb25zaXN0ZW5jeShjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5z
aW9uSURzKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGJvb2wgaXNDYXB0dXJpbmdBdWRpbyA9IFdURjo6YW55T2YoRG9jdW1lbnQ6OmFsbERvY3VtZW50
c01hcCgpLnZhbHVlcygpLCBbXShhdXRvKiBkb2N1bWVudCkgewogICAgICAgICByZXR1cm4gZG9j
dW1lbnQtPm1lZGlhU3RhdGUoKSAmIE1lZGlhUHJvZHVjZXI6OkF1ZGlvQ2FwdHVyZU1hc2s7CiAg
ICAgfSk7CkBAIC0xOTI0LDcgKzE5MjQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tEb2N1
bWVudHNDYXB0dXJlCiAgICAgICAgIEFTU0VSVChleHRlbnNpb25JRHMuZmluZE1hdGNoaW5nKFtd
KGF1dG8mIGlkKSB7IHJldHVybiBpZC5jb250YWlucygibWljcm9waG9uZSIpOyB9KSA9PSBub3RG
b3VuZCk7CiAgICAgaWYgKGlzQ2FwdHVyaW5nVmlkZW8pCiAgICAgICAgIEFTU0VSVChleHRlbnNp
b25JRHMuZmluZE1hdGNoaW5nKFtdKGF1dG8mIGlkKSB7IHJldHVybiBpZC5jb250YWlucygiY2Ft
ZXJhIik7IH0pID09IG5vdEZvdW5kKTsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVE
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmV2b2tlVXNlck1lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbklEcykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDI1NDA0NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDExICsxMzcsMTEg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbgogCiAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiBwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyOwogICAg
IGlmIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgcG9saWN5RGVjaXNpb25Db21w
bGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRU
aGlzKV0gewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAg
ICAgICAgbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UgPSBmYWxzZTsKICNlbmRpZgogICAg
ICAgICAgICAgLy8gSWYgbV9jb3JlTG9hZGVyIGJlY29tZXMgbnVsbCBhcyBhIHJlc3VsdCBvZiB0
aGUgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxiYWNrLCB3ZSBjYW4ndCB1c2UgdGhlIHNlbmQgZnVu
Y3Rpb24oKS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250
cm9sbGVyIG1faW50ZXJjZXB0Q29udHJvbGxlcjsKICAgICBzaXplX3QgbV9udW1CeXRlc1JlY2Vp
dmVkIHsgMCB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgYm9vbCBtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSB7IGZhbHNlIH07CiAjZW5kaWYK
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCShyZXZpc2lvbiAy
NTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgTmV0
c2NhcGVQbHVnaW5TdHJlYW06Ok5ldHNjYXBlUGx1Z2luU3RyZQogICAgICwgbV9vZmZzZXQoMCkK
ICAgICAsIG1fZmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgLCBtX3VybE5vdGlmeUhhc0JlZW5DYWxsZWQoZmFsc2UpCiAjZW5k
aWYgICAgCiAgICAgLCBtX2RlbGl2ZXJ5RGF0YVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywg
Jk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvUGx1Z2luKQpAQCAtMzY0LDcgKzM2
NCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06Om5vdGlmeUFuZERlc3QKICAgICBpZiAo
bV9zZW5kTm90aWZpY2F0aW9uKSB7CiAgICAgICAgIG1fcGx1Z2luLT5OUFBfVVJMTm90aWZ5KG1f
cmVxdWVzdFVSTFN0cmluZy51dGY4KCkuZGF0YSgpLCByZWFzb24sIG1fbm90aWZpY2F0aW9uRGF0
YSk7CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
ICAgIG1fdXJsTm90aWZ5SGFzQmVlbkNhbGxlZCA9IHRydWU7CiAjZW5kaWYgICAgCiAgICAgfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCShyZXZpc2lvbiAyNTQwNDQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
blN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gV2hldGhlciBOUFBfTmV3U3RyZWFtIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBjYWxsZWQuCiAg
ICAgYm9vbCBtX2lzU3RhcnRlZDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIGJvb2wgbV91cmxOb3RpZnlIYXNCZWVuQ2FsbGVkOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxNyw3ICs1MDE3LDcgQEAgdm9pZCBXZWJQYWdlOjpy
dW5Nb2RhbCgpCiAKICAgICBtX2lzUnVubmluZ01vZGFsID0gdHJ1ZTsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJ1bk1vZGFsKCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxXZWJQYWdlPiBwcm90ZWN0b3IoKnRoaXMpOwogI2Vu
ZGlmCiAgICAgUnVuTG9vcDo6cnVuKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1NDA0NCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NO
YW1lKCkKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
InVwZGF0ZVByb2Nlc3NOYW1lOiBGYWlsZWQgdG8gc2V0IHRoZSBkaXNwbGF5IG5hbWUgb2YgdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcywgZXJyb3IgY29kZTogJWxkIiwgc3RhdGljX2Nhc3Q8bG9uZz4o
ZXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3Ig
X0xTU2V0QXBwbGljYXRpb25JbmZvcm1hdGlvbkl0ZW0oKSB0byByZXR1cm4gMCBhbmQgeWV0IGZh
aWwgdG8gc2V0IHRoZSBkaXNwbGF5IG5hbWUgc28gd2UgbWFrZSBzdXJlIHRoZSBkaXNwbGF5IG5h
bWUgaGFzIGFjdHVhbGx5IGJlZW4gc2V0LgogICAgICAgICBTdHJpbmcgYWN0dWFsQXBwbGljYXRp
b25OYW1lID0gYWRvcHRDRigoQ0ZTdHJpbmdSZWYpX0xTQ29weUFwcGxpY2F0aW9uSW5mb3JtYXRp
b25JdGVtKGtMU0RlZmF1bHRTZXNzaW9uSUQsIF9MU0dldEN1cnJlbnRBcHBsaWNhdGlvbkFTTigp
LCBfa0xTRGlzcGxheU5hbWVLZXkpKS5nZXQoKTsKICAgICAgICAgQVNTRVJUKCFhY3R1YWxBcHBs
aWNhdGlvbk5hbWUuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBFbmFibGUgcnVubmluZyBhIHJlbGVhc2UgYnVpbGQgd2l0aCBkZWJ1
ZyBBU1NFUlRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFJbXBsOjpjbG9zZSk6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaDoKKwog
MjAyMC0wMS0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgc29tZSBzaGFyZWQgc2NoZW1lcyB0byB0aGUgV2ViS2l0Lnhjd29ya3NwYWNlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VBcmVhSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUwLDYgQEAgaW5saW5lIFN0
b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKAogICAgICwgbV9zZWN1cml0eU9yaWdpbihv
cmlnaW4pCiAgICAgLCBtX3N0b3JhZ2VNYXAoU3RvcmFnZU1hcDo6Y3JlYXRlKHF1b3RhKSkKICAg
ICAsIG1fc3RvcmFnZVN5bmNNYW5hZ2VyKFdURk1vdmUoc3luY01hbmFnZXIpKQotI2lmbmRlZiBO
REVCVUcKLSAgICAsIG1faXNTaHV0ZG93bihmYWxzZSkKLSNlbmRpZgogICAgICwgbV9hY2Nlc3ND
b3VudCgwKQogICAgICwgbV9jbG9zZURhdGFiYXNlVGltZXIoKnRoaXMsICZTdG9yYWdlQXJlYUlt
cGw6OmNsb3NlRGF0YWJhc2VUaW1lckZpcmVkKQogewpAQCAtODcsNyArODQsNyBAQCBTdG9yYWdl
QXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbChjb25zdCBTCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2lu
KGFyZWEubV9zZWN1cml0eU9yaWdpbikKICAgICAsIG1fc3RvcmFnZU1hcChhcmVhLm1fc3RvcmFn
ZU1hcCkKICAgICAsIG1fc3RvcmFnZVN5bmNNYW5hZ2VyKGFyZWEubV9zdG9yYWdlU3luY01hbmFn
ZXIpCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2lzU2h1dGRv
d24oYXJlYS5tX2lzU2h1dGRvd24pCiAjZW5kaWYKICAgICAsIG1fYWNjZXNzQ291bnQoMCkKQEAg
LTIwNiw3ICsyMDMsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2UoKQogICAgIGlmICht
X3N0b3JhZ2VBcmVhU3luYykKICAgICAgICAgbV9zdG9yYWdlQXJlYVN5bmMtPnNjaGVkdWxlRmlu
YWxTeW5jKCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lz
U2h1dGRvd24gPSB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDggKzkwLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBtX3N0
b3JhZ2VBcmVhU3luYzsKICAgICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZVN5bmNNYW5hZ2VyPiBt
X3N0b3JhZ2VTeW5jTWFuYWdlcjsKIAotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIG1faXNTaHV0
ZG93bjsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV9pc1NodXRkb3duIHsgZmFsc2Ug
fTsKICNlbmRpZgogICAgIHVuc2lnbmVkIG1fYWNjZXNzQ291bnQ7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV9jbG9zZURhdGFiYXNlVGltZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMS0wNSAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIHJ1bm5pbmcgYSByZWxlYXNlIGJ1
aWxkIHdpdGggZGVidWcgQVNTRVJUcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJI
aXN0b3J5UHJpdmF0ZSByZW1vdmVJdGVtRm9yVVJMU3RyaW5nOl0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViRnJhbWUubW06CisKIDIwMjAtMDEtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgc291Y2Ugb2YgV2ViS2l0MSB0ZXN0IGZsYWtp
bmVzcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eS5tbQkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgLSAoQk9P
TClyZW1vdmVJdGVtRm9yVVJMU3RyaW5nOihOU1N0cmluZwogCiAgICAgW19lbnRyaWVzQnlVUkwg
cmVtb3ZlT2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107CiAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVE
CisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVz
OmVudHJ5XTsKICNlbHNlCiAgICAgQk9PTCBpdGVtV2FzSW5EYXRlQ2FjaGVzID0gW3NlbGYgcmVt
b3ZlSXRlbUZyb21EYXRlQ2FjaGVzOmVudHJ5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA5
LDcgKzUwOSw3IEBAIC0gKHZvaWQpX2NsZWFyU2VsZWN0aW9uCiAgICAgICAgIFtkb2N1bWVudFZp
ZXcgZGVzZWxlY3RBbGxdOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAtIChCT09MKV9hdE1vc3RPbmVGcmFtZUhhc1NlbGVjdGlvbgogewogICAgIC8vIEZJ
WE1FOiA0MTg2MDUwIGlzIG9uZSBrbm93biBjYXNlIHRoYXQgbWFrZXMgdGhpcyBkZWJ1ZyBjaGVj
ayBmYWlsLgpAQCAtNTI0LDcgKzUyNCw3IEBAIC0gKEJPT0wpX2F0TW9zdE9uZUZyYW1lSGFzU2Vs
ZWN0aW9uCiAgICAgfQogICAgIHJldHVybiBZRVM7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NF
UlRfRU5BQkxFRAogCiAtIChXZWJGcmFtZSAqKV9maW5kRnJhbWVXaXRoU2VsZWN0aW9uCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAyMC0wMS0wNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgRW5hYmxlIHJ1bm5pbmcgYSByZWxlYXNlIGJ1aWxkIHdpdGggZGVidWcgQVNTRVJUcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc3NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdLUUNBOjpDQUQz
RFJlbmRlcmVyOjpzd2FwQ2hhaW4pOgorICAgICAgICAoV0tRQ0E6OkNBRDNEUmVuZGVyZXI6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIFdlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5k
ZXJlci5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6UmVsZWFz
ZSk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAyMDE5LTEyLTIzICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciB0byBzaW1wbGlmeSBicm9hZGNhc3Rp
bmcgdG8gYWxsIG1lZGlhIGVsZW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gMjU0MDQ0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NDMsNyArMjk0Myw3IEBAIFVMT05HIFdlYlZpZXc6
OlJlbGVhc2UoKQogCiAgICAgVUxPTkcgbmV3UmVmID0gLS1tX3JlZkNvdW50OwogICAgIGlmICgh
bmV3UmVmKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
ICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgZGVsZXRlKHRo
aXMpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAkocmV2aXNpb24gMjU0MDQ0KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MTcsNyArNjE3LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICBVTE9ORyBtX3JlZkNvdW50
IHsgMCB9OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJv
b2wgbV9kZWxldGlvbkhhc0JlZ3VuIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIEhXTkQgbV9ob3N0
V2luZG93IHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVy
ZXIuY3BwCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNyArMTQyLDcgQEAgQ0NvbVB0cjxJRGlyZWN0M0RTd2FwQ2hhaW45PiBDQUQzRFJlbmRl
cgogICAgIGlmICh1c2VEZWZhdWx0U3dhcENoYWluKSB7CiAgICAgICAgIENDb21QdHI8SURpcmVj
dDNEU3dhcENoYWluOT4gZGVmYXVsdFN3YXBDaGFpbjsKICAgICAgICAgaWYgKFNVQ0NFRURFRCht
X2QzZERldmljZS0+R2V0U3dhcENoYWluKDAsICZkZWZhdWx0U3dhcENoYWluKSkpIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIC8vIFNpbmNl
IHdlIGp1c3QgaW5pdGlhbGl6ZWQgb3IgcmVzZXQgdGhlIGRldmljZSwgaXRzIGRlZmF1bHQgc3dh
cCBjaGFpbiBzaG91bGQgYmUKICAgICAgICAgICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhbmQgc2l6
ZWQgdG8gbWF0Y2ggdGhpcyB3aW5kb3cuCiAgICAgICAgICAgICBEM0RQUkVTRU5UX1BBUkFNRVRF
UlMgcGFyYW1ldGVyczsKQEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgYm9vbCBoYXJkd2FyZUNh
cGFiaWxpdGllc0luZGljYXRlCiAKIGJvb2wgQ0FEM0RSZW5kZXJlcjo6aW5pdGlhbGl6ZShDV2lu
ZG93IHdpbmRvdywgY29uc3QgQ0dTaXplJiBzaXplKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghbV9kZXZpY2VUaHJlYWRJRCkKICAgICAgICAg
bV9kZXZpY2VUaHJlYWRJRCA9IDo6R2V0Q3VycmVudFRocmVhZElkKCk7CiAgICAgLy8gTVNETiBz
YXlzIHRoYXQgSURpcmVjdDNEOTo6Q3JlYXRlRGV2aWNlIG11c3QgImJlIGNhbGxlZCBmcm9tIHRo
ZSBzYW1lIHRocmVhZCB0aGF0IGhhbmRsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0ekNvcmVBZGRpdGlvbnMvQ0FEM0RS
ZW5kZXJlci5oCShyZXZpc2lvbiAyNTQwNDQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0REZXZpY2U5
PiBtX2QzZERldmljZTsKICAgICBDQVJlbmRlck9HTENvbnRleHQqIG1fcmVuZGVyT0dMQ29udGV4
dCB7IG51bGxwdHIgfTsKICAgICBDQ29tUHRyPElEaXJlY3QzRFBpeGVsU2hhZGVyOT4gbV9waXhl
bFNoYWRlcjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBE
V09SRCBtX2RldmljZVRocmVhZElEIHsgMCB9OwogI2VuZGlmCiAgICAgYm9vbCBtX2luaXRpYWxp
emVkIHsgZmFsc2UgfTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA0NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgcnVubmluZyBhIHJlbGVhc2UgYnVpbGQgd2l0
aCBkZWJ1ZyBBU1NFUlRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvT2JqQ0NvbnRyb2xsZXIubToKKyAgICAgICAg
KC1bT2JqQ0NvbnRyb2xsZXIgYWNjZXNzU3RvcmVkV2ViU2NyaXB0T2JqZWN0XSk6CisKIDIwMjAt
MDEtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
RHVtcFJlbmRlclRyZWUgZG9lc24ndCBhbHdheXMgY2FsbCB1cGRhdGVSZW5kZXJpbmcoKSB3aGVu
IGEgdGVzdCBjb21wbGV0ZXMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29u
dHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29u
dHJvbGxlci5tCShyZXZpc2lvbiAyNTQwNDQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
T2JqQ0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0NSw3IEBAIC0gKEJP
T0wpdGVzdFdyYXBwZXJSb3VuZFRyaXBwaW5nOihXZWJTY3IKIAogLSAodm9pZClhY2Nlc3NTdG9y
ZWRXZWJTY3JpcHRPYmplY3QKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBCT09MIGlzV2luZG93T2JqZWN0ID0gW3N0b3JlZFdlYlNjcmlwdE9iamVjdCBp
c0tpbmRPZkNsYXNzOltET01BYnN0cmFjdFZpZXcgY2xhc3NdXTsKICAgICBKU09iamVjdFJlZiBq
c09iamVjdCA9IFtzdG9yZWRXZWJTY3JpcHRPYmplY3QgSlNPYmplY3RdOwogICAgIEFTU0VSVCgo
anNPYmplY3QgJiYgaXNXaW5kb3dPYmplY3QpIHx8ICghanNPYmplY3QgJiYgIWlzV2luZG93T2Jq
ZWN0KSk7Cg==
</data>
<flag name="review"
          id="402564"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386819</attachid>
            <date>2020-01-06 01:22:17 -0800</date>
            <delta_ts>2020-01-06 12:55:25 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-205776.patch</filename>
            <type>text/plain</type>
            <size>374742</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDgpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAxLTA2ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IEFTU0VSVF9E
SVNBQkxFRCB0byBBU1NFUlRfRU5BQkxFRCwgYW5kIGZpeCBzb21lIHRlc3RzIG9mIE5ERUJVRyB0
aGF0IHNob3VsZCBhY3R1YWxseSB0ZXN0IGZvciBBU1NFUlRfRU5BQkxFRC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTc3NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmV0U3RyZWFtMi93YXNtL0hh
c2hTZXQuY3BwOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvQXNzZXJ0aW9ucy5oOgorICAg
ICAgICAqIFN0aXRjaE1hcmtlci93dGYvRGF0ZU1hdGguY3BwOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplRGF0ZXMpOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvSGFzaFRhYmxlLmg6Cisg
ICAgICAgICogU3RpdGNoTWFya2VyL3d0Zi9IYXNoZXIuaDoKKyAgICAgICAgKFdURjo6U3RyaW5n
SGFzaGVyOjphZGRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL05ldmVy
RGVzdHJveWVkLmg6CisgICAgICAgIChXVEY6OkxhenlOZXZlckRlc3Ryb3llZDo6Y29uc3RydWN0
KToKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL1N0YWNrQm91bmRzLmg6CisgICAgICAgIChX
VEY6OlN0YWNrQm91bmRzOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToKKyAgICAgICAgKiBTdGl0
Y2hNYXJrZXIvd3RmL1ZhbHVlQ2hlY2suaDoKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL1Zl
Y3Rvci5oOgorICAgICAgICAoV1RGOjptaW5DYXBhY2l0eT46OmNoZWNrQ29uc2lzdGVuY3kpOgor
ICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcDoKKyAg
ICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5oOgorICAgICAg
ICAqIFN0aXRjaE1hcmtlci93dGYvdGV4dC9TdHJpbmdDb21tb24uaDoKKyAgICAgICAgKFdURjo6
aGFzUHJlZml4V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbik6CisgICAgICAgICog
U3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiBTdGl0Y2hNYXJr
ZXIvd3RmL3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAqIFN0aXRjaE1hcmtlci93dGYvdGV4
dC9VbmlxdWVkU3RyaW5nSW1wbC5oOgorCiAyMDE5LTEyLTE2ICBBbnR0aSBLb2l2aXN0byAgPGFu
dHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgU3R5bGVCZW5jaCBzdWJ0ZXN0IGZvciBkeW5h
bWljIG1lZGlhIHF1ZXJ5IHBlcmZvcm1hbmNlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0pldFN0
cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0pl
dFN0cmVhbTIvd2FzbS9IYXNoU2V0LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9KZXRTdHJlYW0yL3dhc20vSGFzaFNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAKICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUg
QVNTRVJUX0RJU0FCTEVEIDEKKyNkZWZpbmUgQVNTRVJUX0VOQUJMRUQgMAogCiAjZGVmaW5lIERV
TVBfSEFTSFRBQkxFX1NUQVRTIDAKICNkZWZpbmUgRFVNUF9IQVNIVEFCTEVfU1RBVFNfUEVSX1RB
QkxFIDAKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0cnVjdCBDdXN0b21IYXNoVHJhaXRzIDogcHVi
bGljIEdlbmVyaWMKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5
cGVuYW1lIFQ+IFZhbHVlVHlwZSogbG9va3VwKGNvbnN0IFQmKTsKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IFZhbHVlVHlwZSogaW5saW5lTG9v
a3VwKGNvbnN0IFQmKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICB2b2lkIGNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0OwogI2Vsc2UKICAg
ICAgICAgc3RhdGljIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgeyB9CkBAIC0xMDg1LDcg
KzEwODUsNyBAQCBzdHJ1Y3QgQ3VzdG9tSGFzaFRyYWl0cyA6IHB1YmxpYyBHZW5lcmljCiAgICAg
ICAgIGl0ZXJhdG9yIG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1
cm4gaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25v
d25Hb29kKTsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlS25vd25Hb29kQ29uc3RJdGVy
YXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IodGhpcywg
cG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsgfQogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIHZvaWQgY2hlY2tU
YWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0OwogI2Vsc2UKICAgICAgICAgc3RhdGlj
IHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQpAQCAtMTE4Miw3ICsx
MTgyLDcgQEAgc3RydWN0IEN1c3RvbUhhc2hUcmFpdHMgOiBwdWJsaWMgR2VuZXJpYwogICAgICAg
ICByZXR1cm4ga2V5OwogICAgIH0KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRf
RU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMs
IHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRv
ciwgdHlwZW5hbWUgVD4KQEAgLTE5NTEsNyArMTk1MSw3IEBAIHN0cnVjdCBDdXN0b21IYXNoVHJh
aXRzIDogcHVibGljIEdlbmVyaWMKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBI
YXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB2
b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cywgS2V5VHJhaXRzPjo6Y2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3QKQEAgLTE5OTMsNyAr
MTk5Myw3IEBAIHN0cnVjdCBDdXN0b21IYXNoVHJhaXRzIDogcHVibGljIEdlbmVyaWMKICAgICAg
ICAgQVNTRVJUKG1fdGFibGVTaXplID09IG1fdGFibGVTaXplTWFzayArIDEpOwogICAgIH0KIAot
I2VuZGlmIC8vIEFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICNp
ZiBDSEVDS19IQVNIVEFCTEVfSVRFUkFUT1JTCiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3Rp
dGNoTWFya2VyL3d0Zi9Bc3NlcnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9TdGl0Y2hNYXJrZXIvd3RmL0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgUGVy
Zm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjMsMzkgKzYzLDM2IEBAIGV4dGVybiAiQyIgdm9pZCBfUmVhZFdyaXRlQmFycmllcih2
b2lkKTsKICNlbmRpZgogI2VuZGlmCiAKKyNpZm5kZWYgQVNTRVJUX0VOQUJMRUQKICNpZmRlZiBO
REVCVUcKLS8qIERpc2FibGUgQVNTRVJUKiBtYWNyb3MgaW4gcmVsZWFzZSBtb2RlLiAqLwotI2Rl
ZmluZSBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQgMQorI2RlZmluZSBBU1NFUlRfRU5BQkxF
RCAwCiAjZWxzZQotI2RlZmluZSBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQgMAorI2RlZmlu
ZSBBU1NFUlRfRU5BQkxFRCAxCiAjZW5kaWYKLQotI2lmbmRlZiBCQUNLVFJBQ0VfRElTQUJMRUQK
LSNkZWZpbmUgQkFDS1RSQUNFX0RJU0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAog
I2VuZGlmCiAKLSNpZm5kZWYgQVNTRVJUX0RJU0FCTEVECi0jZGVmaW5lIEFTU0VSVF9ESVNBQkxF
RCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNpZm5kZWYgQkFDS1RSQUNFX0RJU0FCTEVE
CisjZGVmaW5lIEJBQ0tUUkFDRV9ESVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAj
aWZuZGVmIEFTU0VSVF9NU0dfRElTQUJMRUQKLSNkZWZpbmUgQVNTRVJUX01TR19ESVNBQkxFRCBB
U1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgQVNTRVJUX01TR19ESVNBQkxFRCAh
QVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIEFTU0VSVF9BUkdfRElTQUJMRUQKLSNk
ZWZpbmUgQVNTRVJUX0FSR19ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNk
ZWZpbmUgQVNTRVJUX0FSR19ESVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAjaWZu
ZGVmIEZBVEFMX0RJU0FCTEVECi0jZGVmaW5lIEZBVEFMX0RJU0FCTEVEIEFTU0VSVElPTlNfRElT
QUJMRURfREVGQVVMVAorI2RlZmluZSBGQVRBTF9ESVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNl
bmRpZgogCiAjaWZuZGVmIEVSUk9SX0RJU0FCTEVECi0jZGVmaW5lIEVSUk9SX0RJU0FCTEVEIEFT
U0VSVElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBFUlJPUl9ESVNBQkxFRCAhQVNTRVJU
X0VOQUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIExPR19ESVNBQkxFRAotI2RlZmluZSBMT0dfRElT
QUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCisjZGVmaW5lIExPR19ESVNBQkxFRCAh
QVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBA
IC0yNjcsNyArMjY0LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9EVUVfVE9fQ1JB
UwogI3VuZGVmIEFTU0VSVAogI2VuZGlmCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNT
RVJUX0VOQUJMRUQKIAogI2RlZmluZSBBU1NFUlQoYXNzZXJ0aW9uKSAoKHZvaWQpMCkKICNkZWZp
bmUgQVNTRVJUX0FUKGFzc2VydGlvbiwgZmlsZSwgbGluZSwgZnVuY3Rpb24pICgodm9pZCkwKQpA
QCAtNDQ2LDcgKzQ0Myw3IEBAIFdURl9FWFBPUlRfUFJJVkFURSBOT19SRVRVUk5fRFVFX1RPX0NS
QVMKIAogLyogUkVMRUFTRV9BU1NFUlQgKi8KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFB
U1NFUlRfRU5BQkxFRAogI2RlZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24pIGRvIHsgXAog
ICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSBcCiAgICAgICAgIENSQVNIKCk7IFwKSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9EYXRlTWF0aC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0RhdGVNYXRoLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0Rh
dGVNYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDcgKzU1Myw3IEBAIExvY2FsVGltZU9m
ZnNldCBjYWxjdWxhdGVMb2NhbFRpbWVPZmZzZXQKIAogdm9pZCBpbml0aWFsaXplRGF0ZXMoKQog
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHN0YXRpYyBi
b29sIGFscmVhZHlJbml0aWFsaXplZDsKICAgICBBU1NFUlQoIWFscmVhZHlJbml0aWFsaXplZCk7
CiAgICAgYWxyZWFkeUluaXRpYWxpemVkID0gdHJ1ZTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMv
U3RpdGNoTWFya2VyL3d0Zi9IYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9IYXNoVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDE2LDcgKzQxNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBsb29rdXAoY29u
c3QgVCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5h
bWUgVD4gVmFsdWVUeXBlKiBpbmxpbmVMb29rdXAoY29uc3QgVCYpOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIHZvaWQgY2hlY2tUYWJsZUNvbnNp
c3RlbmN5KCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0aWMgdm9pZCBjaGVja1RhYmxlQ29u
c2lzdGVuY3koKSB7IH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAg
ICAgaXRlcmF0b3IgbWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVy
biBpdGVyYXRvcih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93
bkdvb2QpOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1ha2VLbm93bkdvb2RDb25zdEl0ZXJh
dG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBw
b3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCBjaGVja1Rh
YmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgY29uc3Q7CiAjZWxzZQogICAgICAgICBzdGF0aWMg
dm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplKCkgeyB9CkBAIC01NjgsNyArNTY4
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBrZXk7CiAgICAgfQogCi0jaWYg
QVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgpAQCAtMTMzNyw3ICsx
MzM3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAg
ICAgdm9pZCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHMsIEtleVRyYWl0cz46OmNoZWNrVGFibGVDb25zaXN0ZW5jeSgpIGNvbnN0CkBAIC0xMzc5
LDcgKzEzNzksNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgQVNTRVJUKG1fdGFibGVTaXpl
ID09IG1fdGFibGVTaXplTWFzayArIDEpOwogICAgIH0KIAotI2VuZGlmIC8vIEFTU0VSVF9ESVNB
QkxFRAorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICNpZiBDSEVDS19IQVNIVEFCTEVfSVRF
UkFUT1JTCiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9IYXNoZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvSGFzaGVy
LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0
Zi9IYXNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIgYSwgVUNoYXIgYikKICAgICB7CiAgICAgICAgIGlm
IChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOwog
I2VuZGlmCiAgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGlu
Z0NoYXJhY3RlciwgYSk7CiAgICAgICAgICAgICBtX3BlbmRpbmdDaGFyYWN0ZXIgPSBiOwotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgbV9oYXNQ
ZW5kaW5nQ2hhcmFjdGVyID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwpJbmRl
eDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL05ldmVyRGVzdHJveWVkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL05ldmVyRGVzdHJv
eWVkLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2Vy
L3d0Zi9OZXZlckRlc3Ryb3llZC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9pc0NvbnN0cnVjdGVkKTsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX2lzQ29uc3RydWN0
ZWQgPSB0cnVlOwogI2VuZGlmCiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgICAg
ICBleHBsaWNpdCBNYXliZVJlbGF4KFB0clR5cGUqIHB0cikgeyBwdHItPnJlbGF4QWRvcHRpb25S
ZXF1aXJlbWVudCgpOyB9CiAgICAgfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIC8vIExhenlOZXZlckRlc3Ryb3llZCBvYmplY3RzIGFyZSBhbHdheXMg
c3RhdGljLCBzbyB0aGlzIHZhcmlhYmxlIGlzIGluaXRpYWxpemVkIHRvIGZhbHNlLgogICAgIC8v
IEl0IG11c3Qgbm90IGJlIGluaXRpYWxpemVkIGR5bmFtaWNhbGx5OyB0aGF0IHdvdWxkIG5vdCBi
ZSB0aHJlYWQgc2FmZS4KICAgICBib29sIG1faXNDb25zdHJ1Y3RlZDsKSW5kZXg6IFBlcmZvcm1h
bmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9TdGFja0JvdW5kcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9TdGFja0JvdW5kcy5oCShyZXZpc2lvbiAy
NTQwNDgpCisrKyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvU3RhY2tCb3VuZHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdm9pZCogY3VycmVudFBvc2l0aW9uID0gJmN1cnJl
bnRQb3NpdGlvbjsKICAgICAgICAgQVNTRVJUKG1fb3JpZ2luICE9IG1fYm91bmQpOwogICAgICAg
ICBBU1NFUlQoaXNHcm93aW5nRG93bndhcmQoKQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0
Y2hNYXJrZXIvd3RmL1ZhbHVlQ2hlY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L1N0aXRjaE1hcmtlci93dGYvVmFsdWVDaGVjay5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvVmFsdWVDaGVjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1ZUNoZWNr
IHsKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFQmKSB7IH0KIH07CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHRlbXBsYXRlPHR5cGVu
YW1lIFA+IHN0cnVjdCBWYWx1ZUNoZWNrPFAqPiB7CiAgICAgdHlwZWRlZiBQKiBUcmFpdFR5cGU7
CiAgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBQKiBwKQpJbmRleDogUGVy
Zm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBl
cmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9WZWN0b3IuaAkocmV2aXNpb24gMjU0MDQ4
KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL1ZlY3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDk0LDcgKzE0OTQsNyBAQCBpbmxpbmUgTWFsbG9jUHRyPFQ+IFZlY3RvcjxU
LCBpbmxpbmVDYXBhCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlciwgc2l6ZV90IG1pbkNhcGFjaXR5PgogaW5saW5lIHZv
aWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGFjaXR5
Pjo6Y2hlY2tDb25zaXN0ZW5jeSgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkKICAgICAg
ICAgVmFsdWVDaGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5jeShhdChpKSk7CiAjZW5kaWYKQEAgLTE1
MjEsNyArMTUyMSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPFQsIGkK
ICAgICByZXR1cm4gIShhID09IGIpOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0
b3I8VD4+IHsKICAgICB0eXBlZGVmIFZlY3RvcjxUPiBUcmFpdFR5cGU7CiAgICAgc3RhdGljIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBWZWN0b3I8VD4mIHYpCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJp
bmdJbXBsLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hN
YXJrZXIvd3RmL3RleHQvQXRvbWljU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
Niw3ICs1MzYsNyBAQCBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nSW1wCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKIGJvb2wgQXRvbWljU3RyaW5nSW1wbDo6aXNJbkF0b21pY1N0cmluZ1RhYmxlKFN0
cmluZ0ltcGwqIHN0cmluZykKIHsKICAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7
CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJp
bmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3Rm
L3RleHQvQXRvbWljU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBQZXJmb3JtYW5j
ZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9BdG9taWNTdHJpbmdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkKCpzdHJp
bmdUYWJsZVByb3ZpZGVyLmF0b21pY1N0cmluZ1RhYmxlKCksICpzdHJpbmcpOwogICAgIH0KIAot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgYm9vbCBpc0luQXRvbWljU3RyaW5nVGFibGUoU3RyaW5nSW1wbCop
OwogI2VuZGlmCiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGxvb2tVcFNsb3dDYXNl
KFN0cmluZ0ltcGwmKTsKIH07CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKIC8vIEF0b21pY1N0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBs
IHdpbGwgQVNTRVJUCiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNp
c3RlbmN5CiAvLyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9TdHJpbmdDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9TdHJp
bmdDb21tb24uaAkocmV2aXNpb24gMjU0MDQ4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hN
YXJrZXIvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwNSw3ICs2
MDUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCB1bnNpZ25lCiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzPiBib29sIGlubGluZSBoYXNQcmVmaXhXaXRoTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0IFN0cmluZ0NsYXNzJiBzdHJpbmcsIGNvbnN0
IGNoYXIqIGxvd2VyY2FzZUxldHRlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQoKmxvd2VyY2FzZUxldHRl
cnMpOwogICAgIGZvciAoY29uc3QgY2hhciogbGV0dGVyID0gbG93ZXJjYXNlTGV0dGVyczsgKmxl
dHRlcjsgKytsZXR0ZXIpCiAgICAgICAgIEFTU0VSVCh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoKmxl
dHRlcikgPT0gKmxldHRlcik7CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TdGl0
Y2hNYXJrZXIvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBQZXJm
b3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCB1c2luZyBTdGF0aWNTdHJpbmdJbXBsID0gU3RyaW5n
SW1wbDo6U3RhCiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFN0cmluZ0ltcGwpID09IHNpemVvZihT
dGF0aWNTdHJpbmdJbXBsKSwgIiIpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAvLyBTdHJpbmdJbXBscyBjcmVhdGVkIGZyb20gU3RhdGljU3RyaW5nSW1wbCB3
aWxsIEFTU0VSVAogLy8gaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVjazxUPjo6Y2hlY2tDb25zaXN0
ZW5jeQogLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBieSBmYXN0TWFsbG9jLgpJbmRleDog
UGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL3RleHQvU3ltYm9sSW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi90ZXh0L1N5bWJvbElt
cGwuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIv
d3RmL3RleHQvU3ltYm9sSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcgQEAg
aW5saW5lIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKiBTeW1ib2xJbXBsOgogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxSZWdpc3RlcmVkU3ltYm9sSW1wbCo+KHRoaXMpOwogfQogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAvLyBTeW1ib2xJbXBscyBjcmVhdGVkIGZyb20g
U3RhdGljU3RyaW5nSW1wbCB3aWxsIEFTU0VSVAogLy8gaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVj
azxUPjo6Y2hlY2tDb25zaXN0ZW5jeQogLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBieSBm
YXN0TWFsbG9jLgpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL3RleHQv
VW5pcXVlZFN0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0aXRj
aE1hcmtlci93dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBQZXJmb3JtYW5jZVRlc3RzL1N0aXRjaE1hcmtlci93dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHByb3RlY3RlZDoKICAgICBVbmlx
dWVkU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcpIDogU3RyaW5nSW1wbChDcmVhdGVTeW1ib2wp
IHsgfQogfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogLy8g
VW5pcXVlZFN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNT
RVJUCiAvLyBpbiB0aGUgZ2VuZXJpYyBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3RlbmN5CiAv
LyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNjggQEAKKzIwMjAtMDEtMDYg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgQVNTRVJU
X0RJU0FCTEVEIHRvIEFTU0VSVF9FTkFCTEVELCBhbmQgZml4IHNvbWUgdGVzdHMgb2YgTkRFQlVH
IHRoYXQgc2hvdWxkIGFjdHVhbGx5IHRlc3QgZm9yIEFTU0VSVF9FTkFCTEVELgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1Nzc2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkaWQgdGhl
IGZvbGxvd2luZyBjaGFuZ2VzOgorCisgICAgICAgIDEuIFJlcGxhY2VkIEFTU0VSVF9ESVNBQkxF
RCB3aXRoIEFTU0VSVF9FTkFCTEVELiAgVGhpcyBjaGFuZ2UgZG9lcyBhd2F5CisgICAgICAgICAg
IHdpdGggdGhlIG5lZWQgZm9yIHRoZSBkb3VibGUgbmVnYXRpdmUgIUFTU0VSVF9ESVNBQkxFRCB0
ZXN0IHRoYXQgaXMgY29tbW9ubHkKKyAgICAgICAgICAgdXNlZCBhbGwgb3ZlciB0aGUgY29kZSwg
dGhlcmVieSBpbXByb3ZpbmcgY29kZSByZWFkYWJpbGl0eS4KKworICAgICAgICAgICBJbiBBc3Nl
cnRpb25zLmgsIHRoZXJlIGlzIGFsc28gQkFDS1RSQUNFX0RJU0FCTEVELCBBU1NFUlRfTVNHX0RJ
U0FCTEVELAorICAgICAgICAgICBBU1NFUlRfQVJHX0RJU0FCTEVELCBGQVRBTF9ESVNBQkxFRCwg
RVJST1JfRElTQUJMRUQsIExPR19ESVNBQkxFRCwgYW5kCisgICAgICAgICAgIFJFTEVBU0VfTE9H
X0RJU0FCTEVELiAgV2Ugc2hvdWxkIHJlcGxhY2UgdGhvc2Ugd2l0aCAuLi5fRU5BQkxFRCBlcXVp
dmFsZW50cworICAgICAgICAgICBhcyB3ZWxsLiAgV2VsbCBkbyB0aGF0IGluIGFub3RoZXIgcGF0
Y2guICBGb3Igbm93LCB0aGV5IGFyZSBsZWZ0IGFzIGlzIHRvCisgICAgICAgICAgIG1pbmltaXpl
IHRoZSBzaXplIG9mIHRoaXMgcGF0Y2guCisgICAgICAgICAgIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzgwLgorCisgICAgICAgIDIuIEZpeGVkIHNvbWUg
Y29kZSB3YXMgZ3VhcmRlZCB3aXRoICIjaWZuZGVmIE5ERUJVRyIgdGhhdCBzaG91bGQgYWN0dWFs
bHkgYmUKKyAgICAgICAgICAgZ3VhcmRlZCBieSAiI2lmIEFTU0VSVF9FTkFCTEVEIiBpbnN0ZWFk
LgorCisgICAgICAgIDMuIEluIGNhc2VzIHdoZXJlIHRoZSBjaGFuZ2UgaXMgbWluaW1hbCwgd2Ug
bW92ZSBzb21lIGNvZGUgYXJvdW5kIHNvIHRoYXQgd2UgY2FuCisgICAgICAgICAgIHRlc3QgZm9y
ICIjaWYgQVNTRVJUX0VOQUJMRUQiIGluc3RlYWQgb2YgIiNpZiAhQVNTRVJUX0VOQUJMRUQiLgor
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJN
NjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OnJlcGxhY2VXaXRo
TG9hZCk6CisgICAgICAgIChKU0M6OkFSTTY0QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEFkZHJlc3ND
b21wdXRhdGlvbik6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oOgorICAg
ICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OkxvY2FsV3JpdGVyOjpMb2NhbFdyaXRlcik6Cisg
ICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVm
ZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUHJvYmVT
dGFjay5jcHA6CisgICAgICAgIChKU0M6OlByb2JlOjpTdGFjazo6U3RhY2spOgorICAgICAgICAq
IGFzc2VtYmxlci9Qcm9iZVN0YWNrLmg6CisgICAgICAgICogYjMvQjNGb2xkUGF0aENvbnN0YW50
cy5jcHA6CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM01l
bW9yeVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6Ok1lbW9yeVZhbHVlOjpNZW1vcnlWYWx1
ZSk6CisgICAgICAgICogYjMvQjNPcGNvZGUuY3BwOgorICAgICAgICAqIGIzL0IzVHlwZS5oOgor
ICAgICAgICAqIGIzL0IzVHlwZU1hcC5oOgorICAgICAgICAqIGIzL0IzV2lkdGguaDoKKyAgICAg
ICAgKiBiMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6
OnByZXBhcmVGb3JHZW5lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6R2VuZXJhdGVB
bmRBbGxvY2F0ZVJlZ2lzdGVyczo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBbGxv
Y2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmg6CisgICAgICAgICogYjMvYWly
L0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyQXJnLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAgICAgICogYjMv
YWlyL0FpckNvZGUuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyRW1pdFNodWZmbGUuY3BwOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjplbWl0U2h1ZmZsZSk6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpj
cmVhdGVFeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAg
ICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwOgorICAgICAgICAoSlNDOjp2YXJpYW50TGlzdFdpdGhWYXJpYW50KToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmVu
c3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9ja0hhc2g6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoK
KyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvUmVnaXN0ZXJJ
RC5oOgorICAgICAgICAoSlNDOjpSZWdpc3RlcklEOjpSZWdpc3RlcklEKToKKyAgICAgICAgKEpT
Qzo6UmVnaXN0ZXJJRDo6c2V0SW5kZXgpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAq
IGRlYnVnZ2VyL0RlYnVnZ2VyRXZhbEVuYWJsZXIuaDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJF
dmFsRW5hYmxlcjo6RGVidWdnZXJFdmFsRW5hYmxlcik6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
RXZhbEVuYWJsZXI6On5EZWJ1Z2dlckV2YWxFbmFibGVyKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6b2JzZXJ2ZVRyYW5zaXRpb25zKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWdpc3RlcmVkIGNvbnN0
KToKKyAgICAgICAgKiBkZmcvREZHQXJpdGhNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZG9l
c092ZXJmbG93KToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Jhc2lj
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpkaWRMaW5rKToKKyAgICAg
ICAgKiBkZmcvREZHQ0ZBUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNGQVBoYXNlOjpw
ZXJmb3JtQmxvY2tDRkEpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKEpT
Qzo6REZHOjp2YWxpZGF0aW9uRW5hYmxlZCk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbW1vbkRhdGE6OmZpbmFsaXplQ2F0Y2hFbnRyeXBv
aW50cyk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOgorICAgICAgICAq
IGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAg
ICogZGZnL0RGR0VkZ2UuaDoKKyAgICAgICAgKEpTQzo6REZHOjpFZGdlOjptYWtlV29yZCk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvZGUuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvZGU6OmZpbmFsaXplT1NSRW50cnlwb2ludHMpOgorICAgICAgICAq
IGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDb252ZXJz
aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1Njb3JlQm9hcmQuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpTY29yZUJvYXJkOjphc3NlcnRDbGVhcik6CisgICAgICAgICogZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2xvd1BhdGhHZW5lcmF0b3I6
OmdlbmVyYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJpbmFyeVN3aXRjaFN0cmluZ1JlY3Vy
c2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0
ZXJmbHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU1ha2VSb3BlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToK
KyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjphc3NlcnRJc1JlZ2lzdGVyZWQgY29uc3QpOgorICAgICAgICAq
IGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHVmly
dHVhbFJlZ2lzdGVyQWxsb2NhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpWaXJ0
dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZUTExpbmsu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjYWxsUHJl
ZmxpZ2h0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y2FsbENoZWNr
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y3Jhc2gpOgorICAgICAg
ICAqIGZ0bC9GVExPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpvcGVyYXRpb25N
YXRlcmlhbGl6ZU9iamVjdEluT1NSKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5LmNw
cDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmFzc2VydE5vVW5zd2VwdCk6CisgICAg
ICAgICogaGVhcC9HQ1NlZ21lbnRlZEFycmF5Lmg6CisgICAgICAgIChKU0M6OkdDQXJyYXlTZWdt
ZW50OjpHQ0FycmF5U2VnbWVudCk6CisgICAgICAgICogaGVhcC9HQ1NlZ21lbnRlZEFycmF5SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpHQ1NlZ21lbnRlZEFycmF5PFQ+OjpjbGVhcik6CisgICAg
ICAgIChKU0M6OkdDU2VnbWVudGVkQXJyYXk8VD46OmV4cGFuZCk6CisgICAgICAgIChKU0M6OkdD
U2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJldmlvdXMpOgorICAgICAgICAqIGhlYXAvSGFu
ZGxlU2V0LmNwcDoKKyAgICAgICAgKiBoZWFwL0hhbmRsZVNldC5oOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgor
ICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
OmFzc2VydFZhbGlkQ2VsbCBjb25zdCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphc3Nl
cnRNYXJrc05vdFN0YWxlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6OmJlZ2luTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjplbmRNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmFzc2VydE5v
VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5jcHA6CisgICAgICAg
ICogaGVhcC9QcmVjaXNlQWxsb2NhdGlvbi5oOgorICAgICAgICAoSlNDOjpQcmVjaXNlQWxsb2Nh
dGlvbjo6YXNzZXJ0VmFsaWRDZWxsIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKToKKyAgICAgICAg
KEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5KToKKyAgICAgICAgKiBo
ZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29s
VHlwZXMuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8SlNP
Tjo6QXJyYXlPZjxUPj46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKToKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weToKKyAgICAgICAgKENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdl
bmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0aW9uX2Zvcl9vYmplY3RfZGVjbGFyYXRpb24pOgorICAg
ICAgICAoQ3BwUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKToKKyAgICAgICAg
KENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXNzZXJ0
aW9uX2Zvcl9lbnVtKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQ6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg6CisgICAgICAgIChKU0M6OkpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyOjpKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlcik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZv
KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6cHJlcGFyZUNhbGxPcGVyYXRpb24pOgorICAgICAgICAqIGppdC9CaW5hcnlT
d2l0Y2guY3BwOgorICAgICAgICAoSlNDOjpCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaCk6Cisg
ICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6
OnNldHVwU3R1YkFyZ3MpOgorICAgICAgICAqIGppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHA6Cisg
ICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjplbWl0RGVsdGFDaGVjayk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjphc3NlcnRTdGFja1BvaW50ZXJPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVXaXRob3V0TGlua2luZyk6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2xvb3BfaGludCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9mcm9tX3Njb3BlKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZSk6
CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5rUG9seW1vcnBo
aWNDYWxsKToKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpT
Qzo6ZW1pdFBvaW50ZXJWYWxpZGF0aW9uKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMpOgorICAgICAg
ICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOgorICAgICAgICAqIHBhcnNlci9MZXhl
ci5jcHA6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OmlzU2FmZUJ1
aWx0aW5JZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleEV4cGVjdElkZW50
aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAoSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlcjo6c2V0TmVlZHNPdmVyZmxvd0NoZWNrKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQXJndW1lbnRCdWZmZXI6OmNsZWFyTmVlZHNPdmVyZmxvd0NoZWNrKToKKyAgICAgICAg
KiBydW50aW1lL0J1dHRlcmZseS5oOgorICAgICAgICAoSlNDOjpDb250aWd1b3VzRGF0YTo6Q29u
dGlndW91c0RhdGEpOgorICAgICAgICAoSlNDOjpDb250aWd1b3VzRGF0YTo6RGF0YTo6RGF0YSk6
CisgICAgICAgICogcnVudGltZS9IYXNoTWFwSW1wbC5oOgorICAgICAgICAoSlNDOjpIYXNoTWFw
SW1wbDo6Y2hlY2tDb25zaXN0ZW5jeSBjb25zdCk6CisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBs
Ojphc3NlcnRCdWZmZXJJc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjptZXRob2RUYWJsZSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJp
YW50cyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnZhbGlkYXRlUHV0T3duRGF0YVByb3BlcnR5KToKKyAgICAgICAg
KiBydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdDo6YXNzZXJ0VmFyaWFibGVJc0luVGhpc09iamVjdCk6Cisg
ICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6TGl0ZXJh
bFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJh
bFBhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlND
OjpzY3JpYmJsZUZyZWVDZWxscyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Y29tcHV0ZUNhblVz
ZUpJVCk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6Y2FuVXNl
SklUKToKKyAgICAgICAgKiBydW50aW1lL1Zhck9mZnNldC5oOgorICAgICAgICAoSlNDOjpWYXJP
ZmZzZXQ6OmNoZWNrU2FuaXR5IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBJbXBs
Lmg6CisgICAgICAgIChKU0M6OldlYWtNYXBJbXBsOjpjaGVja0NvbnNpc3RlbmN5IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6V2Vha01hcEltcGw6OmFzc2VydEJ1ZmZlcklzRW1wdHkgY29uc3QpOgor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OnZhbGlkYXRlSW5zdCk6CisgICAgICAgICogd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6Cisg
ICAgICAgICogd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
RnVuY3Rpb25QYXJzZXI6OnZhbGlkYXRpb25GYWlsIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9y
OjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6UGxhbjo6dHJ5UmVtb3ZlQ29udGV4dEFuZENhbmNlbElmTGFzdCk6Cisg
ICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oOgorICAgICAgICAqIHdhc20vV2FzbVNl
Y3Rpb25zLmg6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KToKKyAgICAgICAgKiB3YXNt
L1dhc21Xb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6Oldhc206OldvcmtsaXN0OjplbnF1ZXVl
KToKKyAgICAgICAgKiB3YXNtL2pzL0pTVG9XYXNtLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6
Y3JlYXRlSlNUb1dhc21XcmFwcGVyKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpwcmV2aW91c0lu
c3RhbmNlT2Zmc2V0IGNvbnN0KToKKwogMjAyMC0wMS0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgRnVydGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdl
IGJ5IHN0YW5kYXJkaXppbmcgaGV4IGZvcm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlv
bgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5j
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNkZWZpbmUgQVNTRVJUX0RJU0FCTEVEIDAKKyNkZWZpbmUgQVNTRVJUX0VOQUJMRUQgMQogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgVVNFKENGKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkocmV2aXNpb24gMjU0MDQ4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk02NEFzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBwZXJm
b3JtSklUTWVtY3B5KHdoZXJlLCAmaW5zbiwgc2l6ZW9mKGludCkpOwogICAgICAgICAgICAgY2Fj
aGVGbHVzaCh3aGVyZSwgc2l6ZW9mKGludCkpOwogICAgICAgICB9Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTWVt
T3BTaXplIHNpemU7CiAgICAgICAgICAgICBib29sIFY7CkBAIC0yNjMyLDcgKzI2MzIsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQob3BjID09IE1lbU9wX0xPQUQpOwogICAgICAgICAg
ICAgQVNTRVJUKCEoaW1tMTIgJiB+MHgxZmYpKTsKICAgICAgICAgfQotI2VuZGlmCisjZW5kaWYg
Ly8gQVNTRVJUX0VOQUJMRUQKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEFk
ZHJlc3NDb21wdXRhdGlvbih2b2lkKiB3aGVyZSkKQEAgLTI2NTMsNyArMjY1Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHBlcmZvcm1KSVRNZW1jcHkod2hlcmUsICZpbnNuLCBzaXplb2YoaW50
KSk7CiAgICAgICAgICAgICBjYWNoZUZsdXNoKHdoZXJlLCBzaXplb2YoaW50KSk7CiAgICAgICAg
IH0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBEYXRhc2l6ZSBzZjsKICAgICAgICAgICAgIEFkZE9wIG9wOwpAQCAt
MjY2OSw3ICsyNjY5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKCFzaGlmdCk7CiAg
ICAgICAgICAgICBBU1NFUlQoIShpbW0xMiAmIH4weGZmOCkpOwogICAgICAgICB9Ci0jZW5kaWYK
KyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGF0
Y2hQb2ludGVyKHZvaWQqIHdoZXJlLCB2b2lkKiB2YWx1ZVB0cikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGJ1ZmZlci5lbnN1cmVTcGFjZShyZXF1aXJlZFNwYWNlKTsKICAgICAg
ICAgICAgICAgICBtX3N0b3JhZ2VCdWZmZXIgPSBidWZmZXIubV9zdG9yYWdlLmJ1ZmZlcigpOwog
ICAgICAgICAgICAgICAgIG1faW5kZXggPSBidWZmZXIubV9pbmRleDsKLSNpZiAhZGVmaW5lZChO
REVCVUcpCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICAgICBtX2luaXRpYWxJbmRl
eCA9IG1faW5kZXg7CiAgICAgICAgICAgICAgICAgbV9yZXF1aXJlZFNwYWNlID0gcmVxdWlyZWRT
cGFjZTsKICNlbmRpZgpAQCAtMjc2LDcgKzI3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgQXNzZW1ibGVyQnVmZmVyJiBtX2J1ZmZlcjsKICAgICAgICAgICAgIGNoYXIqIG1fc3Rv
cmFnZUJ1ZmZlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7Ci0jaWYgIWRlZmluZWQo
TkRFQlVHKQorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICB1bnNpZ25lZCBtX2luaXRp
YWxJbmRleDsKICAgICAgICAgICAgIHVuc2lnbmVkIG1fcmVxdWlyZWRTcGFjZTsKICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3Bw
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBMaW5r
QnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKAogICAgICAgICAgICAganVtcHNUb0xpbmtb
aV0uc2V0RnJvbSh3cml0ZVB0cik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBqdW1wQ291bnQ7ICsraSkKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIU1hY3JvQXNzZW1ibGVyOjpjYW5Db21wYWN0KGp1bXBzVG9MaW5r
W2ldLnR5cGUoKSkpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1Byb2JlU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw3ICsxMDQsNyBAQCBTdGFjazo6U3RhY2soU3RhY2smJiBvdGhlcikKICAgICAsIG1fcGFn
ZXMoV1RGTW92ZShvdGhlci5tX3BhZ2VzKSkKIHsKICAgICBtX3NhdmVkU3RhY2tQb2ludGVyID0g
b3RoZXIubV9zYXZlZFN0YWNrUG9pbnRlcjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBvdGhlci5tX2lzVmFsaWQgPSBmYWxzZTsKICNlbmRpZgogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Qcm9iZVN0YWNrLmgJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUHJvYmVTdGFj
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzV3JpdGVzVG9GbHVzaCgpOwogICAgIHZvaWQgZmx1c2hXcml0ZXMoKTsKIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0
dXJuIG1faXNWYWxpZDsgfQogI2VuZGlmCiAKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcml2YXRlOgog
ICAgIFN0YWNrQm91bmRzIG1fc3RhY2tCb3VuZHM7CiAgICAgSGFzaE1hcDx2b2lkKiwgc3RkOjp1
bmlxdWVfcHRyPFBhZ2U+PiBtX3BhZ2VzOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2lzVmFsaWQgeyB0cnVlIH07CiAjZW5kaWYKIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xkUGF0aENvbnN0YW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRm9sZFBhdGhDb25zdGFudHMu
Y3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGb2xk
UGF0aENvbnN0YW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgVmVjdG9yPE92ZXJyaWRlPiYgZm9yVmFsdWUgPQogICAgICAgICAgICAg
ICAgIG92ZXJyaWRlcy5hZGQodmFsdWUsIFZlY3RvcjxPdmVycmlkZT4oKSkuaXRlcmF0b3ItPnZh
bHVlOwogCi0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAg
aWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBPdmVycmlk
ZSYgb3RoZXJPdmVycmlkZSA6IGZvclZhbHVlKQogICAgICAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKG90aGVyT3ZlcnJpZGUsIG90aGVyT3ZlcnJpZGUuYmxvY2sgIT0gb3ZlcnJpZGUuYmxv
Y2spOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJUb0Fpci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBACiAjaW5j
bHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKLSNpZiBB
U1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9X
QVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTM2ODgsNyArMzY4OCw3IEBAIHZvaWQgbG93ZXJU
b0FpcihQcm9jZWR1cmUmIHByb2NlZHVyZSkKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAK
LSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5f
VFlQRV9XQVJOSU5HU19FTkQKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNNZW1vcnlWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgx
LDcgQEAgTWVtb3J5VmFsdWU6Ok1lbW9yeVZhbHVlKE1lbW9yeVZhbHVlOjpNZQogICAgICwgbV9y
YW5nZShyYW5nZSkKICAgICAsIG1fZmVuY2VSYW5nZShmZW5jZVJhbmdlKQogewotICAgIGlmICgh
QVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIHN3
aXRjaCAoa2luZC5vcGNvZGUoKSkgewogICAgICAgICBjYXNlIExvYWQ6CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEwNiw3ICsxMDYsNyBAQCBNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoTWVtb3J5
VmFsdWU6Ok1lCiBNZW1vcnlWYWx1ZTo6TWVtb3J5VmFsdWUoTWVtb3J5VmFsdWU6Ok1lbW9yeVZh
bHVlTG9hZEltcGxpZWQsIEtpbmQga2luZCwgT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHBvaW50ZXIs
IE1lbW9yeVZhbHVlOjpPZmZzZXRUeXBlIG9mZnNldCwgSGVhcFJhbmdlIHJhbmdlLCBIZWFwUmFu
Z2UgZmVuY2VSYW5nZSkKICAgICA6IE1lbW9yeVZhbHVlKGtpbmQsIEludDMyLCBvcmlnaW4sIHBv
aW50ZXIsIG9mZnNldCwgcmFuZ2UsIGZlbmNlUmFuZ2UpCiB7Ci0gICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgc3dpdGNoIChraW5k
Lm9wY29kZSgpKSB7CiAgICAgICAgIGNhc2UgTG9hZDhaOgogICAgICAgICBjYXNlIExvYWQ4UzoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKLSNp
ZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQ
RV9XQVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgT3BjCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0j
aWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZ
UEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQjNDb21tb24uaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNp
ZiAhQVNTRVJUX0VOQUJMRUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgogI2Vu
ZGlmCiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
LCBKU0M6OkIzCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisj
aWYgIUFTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5k
aWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZU1hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGVNYXAuaAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZU1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQjNUeXBlLmgiCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKIElHTk9SRV9SRVRVUk5fVFlQRV9XQVJOSU5HU19CRUdJTgogI2VuZGlmCiAKQEAgLTEwMyw3
ICsxMDMsNyBAQCBwcml2YXRlOgogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKIAotI2lmIEFT
U0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dB
Uk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dp
ZHRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2lkdGguaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkIzQmFuay5oIgogI2lu
Y2x1ZGUgIkIzVHlwZS5oIgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFC
TEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRpZgogCkBAIC0xNDMs
NyArMTQzLDcgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpCMwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5B
QkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0Fu
ZEdlbmVyYXRlQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAkocmV2
aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0
ZVJlZ2lzdGVyc0FuZFN0YWNrQW5kR2VuZXJhdGVDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg2LDcgKzI4Niw3IEBAIHZvaWQgR2VuZXJhdGVBbmRBbGxvY2F0ZVJlZ2lzdGVyczo6cHJlcGEK
ICAgICAgICAgZGF0YS5zcGlsbFNsb3QgPSBtX2NvZGUuYWRkU3RhY2tTbG90KDgsIFN0YWNrU2xv
dEtpbmQ6OlNwaWxsKTsKICAgICAgICAgZGF0YS5yZWcgPSBSZWcoKTsKICAgICAgICAgbV9tYXBb
dG1wXSA9IGRhdGE7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgICAgIG1fYWxsVG1wc1t0bXAuYmFuaygpXS5hcHBlbmQodG1wKTsKICNlbmRpZgogICAgIH07
CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBHZW5lcmF0ZUFuZEFsbG9jYXRlUmVnaXN0ZXJzOjpw
cmVwYQogICAgIGxvd2VyU3RhY2tBcmdzKG1fY29kZSk7CiAKICAgICAvLyBWZXJpZnkgbm9uZSBv
ZiB0aGVzZSBwYXNzZXMgYWRkIGFueSB0bXBzLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGZvckVhY2hCYW5rKFsmXSAoQmFuayBiYW5rKSB7CiAgICAgICAg
IEFTU0VSVChtX2FsbFRtcHNbYmFua10uc2l6ZSgpIC0gbV9yZWdpc3RlcnNbYmFua10uc2l6ZSgp
ID09IG1fY29kZS5udW1UbXBzKGJhbmspKTsKICAgICB9KTsKQEAgLTQxNyw3ICs0MTcsNyBAQCB2
b2lkIEdlbmVyYXRlQW5kQWxsb2NhdGVSZWdpc3RlcnM6OmdlbmVyCiAgICAgICAgIH0KIAogICAg
ICAgICBmb3JFYWNoQmFuayhbJl0gKEJhbmsgYmFuaykgewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgZXZlcnl0aGlu
ZyBpcyBzcGlsbGVkIGF0IGJsb2NrIGJvdW5kYXJpZXMuIFdlIGRvIHRoaXMgYWZ0ZXIgd2UgcHJv
Y2VzcyBlYWNoIGJsb2NrCiAgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdhbGsg
YWxsIFRtcHMsIHNpbmNlICNUbXBzID4+ICNBdmFpbGFibGUgcmVncy4gSW5zdGVhZCwgd2Ugd2Fs
ayB0aGUgcmVnaXN0ZXIgZmlsZSBhdAogICAgICAgICAgICAgLy8gZWFjaCBibG9jayBib3VuZGFy
eSBhbmQgY2xlYXIgZW50cmllcyBpbiB0aGlzIG1hcC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVS
ZWdpc3RlcnNBbmRTdGFja0FuZEdlbmVyYXRlQ29kZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tB
bmRHZW5lcmF0ZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRl
OgogCiAgICAgVG1wTWFwPFRtcERhdGE+IG1fbWFwOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgVmVjdG9yPFRtcD4gbV9hbGxUbXBzW251bUJhbmtzXTsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRl
UmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxv
Y2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3
ICsxNjIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc0JlZW5TaW1wbGlmaWVkKEluZGV4
VHlwZSB0bXBJbmRleCkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgaWYgKCEhbV9jb2FsZXNj
ZWRUbXBzW3RtcEluZGV4XSkKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0QWxpYXModG1wSW5k
ZXgpICE9IHRtcEluZGV4KTsKICAgICAgICAgfQpAQCAtNjQ4LDcgKzY0OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gYWRkZWQgdG8gdGhlIHNlbGVjdCBzdGFjaywgaXQncyBub3Qgb24gZWl0aGVy
IGxpc3QsIGJ1dCBvbmx5IG9uIHRoZSBzZWxlY3Qgc3RhY2suCiAgICAgICAgIC8vIE9uY2Ugb24g
dGhlIHNlbGVjdCBzdGFjaywgbG9naWNhbGx5LCBpdCdzIG5vIGxvbmdlciBpbiB0aGUgaW50ZXJm
ZXJlbmNlIGdyYXBoLgogICAgICAgICBhdXRvIGFzc2VydEludmFyaWFudHMgPSBbJl0gKCkgewot
ICAgICAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgICAgIGlmICghQVNTRVJU
X0VOQUJMRUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFzaG91
bGRWYWxpZGF0ZUlSQXRFYWNoUGhhc2UoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC02
ODksNyArNjg5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChj
aGFuZ2VkKTsKIAotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAo
QVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9zaW1wbGlmeVdvcmtsaXN0
LnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQobV9zcGlsbFdvcmtsaXN0LmlzRW1wdHkoKSk7
CiAgICAgICAgICAgICBJbmRleFR5cGUgZmlyc3ROb25SZWdJbmRleCA9IG1fbGFzdFByZWNvbG9y
ZWRSZWdpc3RlckluZGV4ICsgMTsKQEAgLTcyNyw3ICs3MjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgICAgICAvLyBObyBjb2FsZXNjaW5nIHdpbGwgcmVtb3ZlIHRoZSBpbnRlcmZlcmVuY2UuCiAg
ICAgICAgICAgICBtb3ZlSW5kZXggPSBVSU5UX01BWDsKIAotICAgICAgICAgICAgaWYgKCFBU1NF
UlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAg
ICAgICAgICAgIGlmIChpc1ByZWNvbG9yZWQodikpCiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChpc1ByZWNvbG9yZWQodSkpOwogICAgICAgICAgICAgfQpAQCAtOTEwLDcgKzkxMCw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIGlmICh0cmFjZURlYnVnKQogICAgICAgICAgICAgICAgIGRh
dGFMb2dMbigiTW92aW5nIHRtcCAiLCB0bXBJbmRleCwgIiBmcm9tIHNwaWxsIGxpc3QgdG8gc2lt
cGxpZnkgbGlzdCBiZWNhdXNlIGl0J3MgZGVncmVlIGlzIG5vdyBsZXNzIHRoYW4gayIpOwogCi0g
ICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgICAgIGlmIChBU1NFUlRf
RU5BQkxFRCkKICAgICAgICAgICAgICAgICBBU1NFUlQobV91bnNwaWxsYWJsZVRtcHMuY29udGFp
bnModG1wSW5kZXgpIHx8IG1fc3BpbGxXb3JrbGlzdC5jb250YWlucyh0bXBJbmRleCkpOwogICAg
ICAgICAgICAgbV9zcGlsbFdvcmtsaXN0LnF1aWNrQ2xlYXIodG1wSW5kZXgpOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGUFJJbmZvLmgiCiAjaW5jbHVkZSAiR1BSSW5m
by5oIgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiBJR05PUkVf
UkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRpZgogCkBAIC0zODMsNyArMzgzLDcgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEFyZwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogSUdOT1JF
X1JFVFVSTl9UWVBFX1dBUk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJBcmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgIkIzV2lkdGguaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAotI2lmIEFT
U0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBFX1dB
Uk5JTkdTX0JFR0lOCiAjZW5kaWYKIApAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkIzOjpBaQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotI2lm
IEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogSUdOT1JFX1JFVFVSTl9UWVBF
X1dBUk5JTkdTX0VORAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgUHJvY2VkdXJlOwogCi0jaWYgQVNTRVJUX0RJ
U0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1Nf
QkVHSU4KICNlbmRpZgogCkBAIC0zOTIsNyArMzkyLDcgQEAgcHJpdmF0ZToKIAogfSB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VS
VF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbWl0U2h1ZmZsZS5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRW1p
dFNodWZmbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTMgKzEzOSwxMyBAQCBWZWN0b3I8
SW5zdD4gZW1pdFNodWZmbGUoCiAgICAgICAgIH0pOwogICAgIAogICAgIC8vIEZpcnN0IHZhbGlk
YXRlIHRoYXQgdGhpcyBpcyB0aGUga2luZCBvZiBzaHVmZmxlIHRoYXQgd2Uga25vdyBob3cgdG8g
ZGVhbCB3aXRoLgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGZvciAoY29uc3QgU2h1ZmZsZVBhaXImIHBhaXIgOiBwYWlycykgewogICAgICAgICBBU1NFUlQo
cGFpci5zcmMoKS5pc0JhbmsoYmFuaykpOwogICAgICAgICBBU1NFUlQocGFpci5kc3QoKS5pc0Jh
bmsoYmFuaykpOwogICAgICAgICBBU1NFUlQocGFpci5kc3QoKS5pc1RtcCgpIHx8IHBhaXIuZHN0
KCkuaXNNZW1vcnkoKSk7CiAgICAgfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRp
ZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgLy8gVGhlcmUgYXJlIHR3byBwb3NzaWJsZSBraW5k
cyBvZiBvcGVyYXRpb25zIHRoYXQgd2Ugd2lsbCBkbzoKICAgICAvLwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdQogICAgIG1ldGFkYXRhLm92ZXJy
aWRlTmFtZShuYW1lKTsKICAgICBtZXRhZGF0YS5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKIAotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEIHx8IE9wdGlvbnM6OnZh
bGlkYXRlQnl0ZWNvZGUoKSkgeworICAgIGlmIChVTkxJS0VMWShBU1NFUlRfRU5BQkxFRCB8fCBP
cHRpb25zOjp2YWxpZGF0ZUJ5dGVjb2RlKCkpKSB7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmVGcm9tUGFyc2VyOwogICAgICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKICAgICAgICAgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGlzQnVpbHRp
bkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5ODMsNyArMTk4Myw3IEBAIFR5cGVkQXJyYXlUeXBlIEFjY2Vzc0Nhc2U6OnRvVHlw
ZWRBcnJheVQKICAgICB9CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKIHZvaWQgQWNjZXNzQ2FzZTo6Y2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShyZXF1aXJlc0ludDMyUHJvcGVy
dHlDaGVjaygpICYmIHJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgpKSk7CkBAIC0xOTkzLDcg
KzE5OTMsNyBAQCB2b2lkIEFjY2Vzc0Nhc2U6OmNoZWNrQ29uc2lzdGVuY3koU3RydWN0CiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHJlcXVpcmVzSWRlbnRpZmllck5hbWVNYXRjaCgpKTsKICAgICB9
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNyArMjM5LDcgQEAgcHVibGljOgogICAg
IEJveDxJZGVudGlmaWVyPiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CiAKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpOwogI2Vsc2UKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShTdHJ1Y3R1cmVTdHViSW5mbyYpIHsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3Bw
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgQ2FsbFZhcmlh
bnRMaXN0IHZhcmlhbnRMaXN0V2l0aFZhcmlhbnQoYwogICAgIGlmICghIXZhcmlhbnRUb0FkZCkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YXJpYW50VG9BZGQpOwogICAgIAotICAgIGlmICghQVNT
RVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IGkgKyAxOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdFtpXSAhPSByZXN1bHRbal0pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3ODMsNyArMTc4Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjplbnN1cmVDYXRjaExpdmVu
ZXNzSXNDb20KICAgICBPcENhdGNoIG9wID0gaW5zdHJ1Y3Rpb24tPmFzPE9wQ2F0Y2g+KCk7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSBvcC5tZXRhZGF0YSh0aGlzKTsKICAgICBpZiAoISFtZXRhZGF0
YS5tX2J1ZmZlcikgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGJvb2wg
Zm91bmQgPSBmYWxzZTsKICAgICAgICAgYXV0byogcmFyZURhdGEgPSBtX3JhcmVEYXRhLmdldCgp
OwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmVuc3VyZUNhdGNoTGl2ZW5l
c3NJc0NvbQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChmb3VuZCk7
Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgICAgICByZXR1cm47CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
a0hhc2guY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxMCBA
QCB2b2lkIENvZGVCbG9ja0hhc2g6OmR1bXAoUHJpbnRTdHJlYW0mIG91CiB7CiAgICAgc3RkOjph
cnJheTxjaGFyLCA3PiBidWZmZXIgPSBpbnRlZ2VyVG9TaXhDaGFyYWN0ZXJIYXNoU3RyaW5nKG1f
aGFzaCk7CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgQ29kZUJsb2NrSGFzaCByZWNvbXB1dGUoYnVmZmVyLmRhdGEoKSk7CiAgICAgQVNTRVJUKHJl
Y29tcHV0ZSA9PSAqdGhpcyk7Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmIC8v
IEFTU0VSVF9FTkFCTEVECiAgICAgCiAgICAgb3V0LnByaW50KGJ1ZmZlci5kYXRhKCkpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzQsNyAr
Mzc0LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6c2V0Q2FjaGVUeXBlKENhYwogICAgIG1f
Y2FjaGVUeXBlID0gbmV3Q2FjaGVUeXBlOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpjaGVja0NvbnNpc3RlbmN5
KCkKIHsKICAgICBpZiAodGhpc1ZhbHVlSXNJblRoaXNHUFIoKSkgewpAQCAtMzgzLDcgKzM4Myw3
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmNoZWNrQ29uc2lzdGVuY3kKICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaGFzQ29uc3RhbnRJZGVudGlmaWVyKTsKICAgICB9CiB9Ci0jZW5kaWYKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB0aGlzVmFsdWVJc0luVGhpc0dQUigpIGNvbnN0IHsgcmV0dXJuIGFj
Y2Vzc1R5cGUgPT0gQWNjZXNzVHlwZTo6R2V0QnlJZFdpdGhUaGlzOyB9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICNlbHNlCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSB7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQxLDggKzk0
MSw4IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKIAogUmVnaXN0
ZXJJRCogRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgaWYgKFVOTElLRUxZKG1f
aWRlbnQgPT0gZ2VuZXJhdG9yLnZtKCkucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXNz
ZXJ0UHJpdmF0ZU5hbWUoKSkpIHsKLSAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICBp
ZiAoIUFTU0VSVF9FTkFCTEVEKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShtX2lkZW50ID09IGdl
bmVyYXRvci52bSgpLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzc2VydFByaXZhdGVO
YW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZ2VuZXJhdG9y
LmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0ZXJJRC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvUmVnaXN0ZXJJRC5oCShyZXZpc2lv
biAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL1JlZ2lzdGVy
SUQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCgpCiAgICAgICAgICAgICA6IG1fcmVmQ291bnQoMCkKICAgICAgICAg
ICAgICwgbV9pc1RlbXBvcmFyeShmYWxzZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgICAgICwgbV9kaWRTZXRJbmRleChmYWxzZSkKICNlbmRpZgogICAgICAg
ICB7CkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3Jl
ZkNvdW50KDApCiAgICAgICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
cikKICAgICAgICAgICAgICwgbV9pc1RlbXBvcmFyeShmYWxzZSkKLSNpZm5kZWYgTkRFQlVHCisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICwgbV9kaWRTZXRJbmRleCh0cnVlKQogI2Vu
ZGlmCiAgICAgICAgIHsKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICA6IG1fcmVmQ291bnQoMCkKICAgICAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyKGluZGV4KSkKICAgICAgICAgICAgICwgbV9pc1RlbXBvcmFyeShmYWxzZSkK
LSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICwgbV9kaWRT
ZXRJbmRleCh0cnVlKQogI2VuZGlmCiAgICAgICAgIHsKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBzZXRJbmRleChWaXJ0dWFsUmVnaXN0ZXIgaW5kZXgp
CiAgICAgICAgIHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
ICAgIG1fZGlkU2V0SW5kZXggPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICBtX3ZpcnR1YWxS
ZWdpc3RlciA9IGluZGV4OwpAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBpbnQgbV9yZWZDb3VudDsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdmlydHVhbFJl
Z2lzdGVyOwogICAgICAgICBib29sIG1faXNUZW1wb3Jhcnk7Ci0jaWZuZGVmIE5ERUJVRworI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGJvb2wgbV9kaWRTZXRJbmRleDsKICNlbmRpZgogICAg
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgRGVidWdn
ZXI6OnJlbW92ZUJyZWFrcG9pbnQoQnJlYWtwb2kKICAgICB0b2dnbGVCcmVha3BvaW50KCpicmVh
a3BvaW50LCBCcmVha3BvaW50RGlzYWJsZWQpOwogCiAgICAgQnJlYWtwb2ludHNMaXN0JiBicmVh
a3BvaW50cyA9ICpicmVha3NJdC0+dmFsdWU7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgIGZvciAoQnJlYWtwb2lu
dCogY3VycmVudCA9IGJyZWFrcG9pbnRzLmhlYWQoKTsgY3VycmVudCAmJiAhZm91bmQ7IGN1cnJl
bnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGN1cnJlbnQtPmlkID09IGJyZWFr
cG9pbnQtPmlkKQogICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgIH0KICAgICBBU1NFUlQo
Zm91bmQpOwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogICAgIG1fYnJlYWtw
b2ludElEVG9CcmVha3BvaW50LnJlbW92ZShpZEl0KTsKICAgICBicmVha3BvaW50cy5yZW1vdmUo
YnJlYWtwb2ludCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJFdmFsRW5hYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckV2YWxFbmFibGVyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckV2YWxFbmFibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgRGVidWdnZXJFdmFsRW5hYmxlcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2RlIG1vZGUgPSBNb2RlOjpFdmFsT25DdXJy
ZW50Q2FsbEZyYW1lKQogICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX21vZGUo
bW9kZSkKICNlbmRpZgogICAgICAgICAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9ldmFsV2FzRGlzYWJsZWQgPSAhZ2xvYmFsT2JqZWN0LT5ldmFsRW5hYmxlZCgpOwog
ICAgICAgICAgICAgaWYgKG1fZXZhbFdhc0Rpc2FibGVkKQogICAgICAgICAgICAgICAgIGdsb2Jh
bE9iamVjdC0+c2V0RXZhbEVuYWJsZWQodHJ1ZSwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgICAgICBpZiAobV9tb2RlID09IE1vZGU6OkV2YWxPbkdsb2JhbE9iamVjdEF0RGVi
dWdnZXJFbnRyeSkKICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnNldEdsb2JhbE9iamVj
dEF0RGVidWdnZXJFbnRyeShnbG9iYWxPYmplY3QpOwogI2VuZGlmCkBAIC02Miw3ICs2Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ds
b2JhbE9iamVjdDsKICAgICAgICAgICAgIGlmIChtX2V2YWxXYXNEaXNhYmxlZCkKICAgICAgICAg
ICAgICAgICBnbG9iYWxPYmplY3QtPnNldEV2YWxFbmFibGVkKGZhbHNlLCBnbG9iYWxPYmplY3Qt
PmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gTW9kZTo6RXZhbE9uR2xv
YmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5KQogICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+
c2V0R2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5KG51bGxwdHIpOwogI2VuZGlmCkBAIC03Miw3
ICs3Miw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSlNHbG9iYWxPYmplY3QqIG1fZ2xvYmFs
T2JqZWN0OwogICAgIGJvb2wgbV9ldmFsV2FzRGlzYWJsZWQgeyBmYWxzZSB9OwotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIERlYnVnZ2VyRXZhbEVuYWJsZXI6
Ok1vZGUgbV9tb2RlOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNp
b24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Mzc4LDcgKzQzNzgsNyBAQCB2b2lk
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgQWJzdHJhY3RWYWx1ZTo6
VHJhbnNpdGlvbnNPYnNlcnZlciB0cmFuc2l0aW9uc09ic2VydmVyKHZlY3Rvcik7CiAgICAgZm9y
QWxsVmFsdWVzKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbnNPYnNlcnZlcik7CiAgICAgCi0gICAg
aWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjbGFpbSB0byBiZSBpbiBhIGNsb2JiZXJlZCBzdGF0ZSBi
ZWNhdXNlIG5vbmUgb2YgdGhlIFRyYW5zaXRpb246OnByZXZpb3VzIHN0cnVjdHVyZXMgYXJlIHdh
dGNoYWJsZS4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdmVjdG9yLnNpemUoKTsgaS0tOykK
ICAgICAgICAgICAgIEFTU0VSVCghdmVjdG9yW2ldLnByZXZpb3VzLT5kZmdTaG91bGRXYXRjaCgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVl
LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3IEBAIEZpbHRy
YXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6bm9ybWFsaXoKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiB2b2lkIEFic3Ry
YWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogewogICAgIGlmICghKG1fdHlwZSAm
IFNwZWNDZWxsKSkgewpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6YXNz
ZXJ0SXNSZWdpc3RlcmVkKEcKIHsKICAgICBtX3N0cnVjdHVyZS5hc3NlcnRJc1JlZ2lzdGVyZWQo
Z3JhcGgpOwogfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiBSZXN1bHRUeXBlIEFic3RyYWN0VmFsdWU6OnJlc3VsdFR5cGUoKSBjb25zdAog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDcgQEAgc3RydWN0IEFic3Ry
YWN0VmFsdWUgewogICAgICAgICBpZiAob3RoZXIuaXNDbGVhcigpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgQWJzdHJhY3RWYWx1ZSBvbGRNZSA9ICp0aGlzOwogI2VuZGlmCiAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CkBAIC00MzEsMTIgKzQzMSwxMiBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB8fCAhYXJyYXlNb2Rlc0FyZUNsZWFyT3JUb3AobV9h
cnJheU1vZGVzKTsKICAgICB9CiAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBj
aGVja0NvbnNpc3RlbmN5KCkgY29uc3QgeyB9Ci0gICAgdm9pZCBhc3NlcnRJc1JlZ2lzdGVyZWQo
R3JhcGgmKSBjb25zdCB7IH0KLSNlbHNlCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKICAgICB2b2lkIGFzc2Vy
dElzUmVnaXN0ZXJlZChHcmFwaCYpIGNvbnN0OworI2Vsc2UKKyAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKSBjb25zdCB7IH0KKyAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChHcmFwaCYpIGNv
bnN0IHsgfQogI2VuZGlmCiAKICAgICBSZXN1bHRUeXBlIHJlc3VsdFR5cGUoKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhNb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcml0aE1vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBpbmxpbmUgYm9vbCBkb2VzT3ZlcmZsb3coQXJpdGg6
Ok1vZGUgbW9kCiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSBBcml0aDo6Tm90U2V0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAh
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBjYXNlIEFy
aXRoOjpVbmNoZWNrZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgQmFz
aWNCbG9jazo6QmFzaWNCbG9jayhCeXRlY29kZUluZGV4IGJ5dAogICAgICwgaW50ZXJzZWN0aW9u
T2ZDRkFIYXNWaXNpdGVkKHRydWUpCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKICAgICAsIGlz
Q2F0Y2hFbnRyeXBvaW50KGZhbHNlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICwgaXNMaW5rZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIGlzUmVhY2hhYmxl
KGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RydWN0IEJhc2ljQmxv
Y2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIAogICAgIHZvaWQgZGlkTGluaygpCiAgICAg
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBpc0xp
bmtlZCA9IHRydWU7CiAjZW5kaWYKICAgICB9CkBAIC0xOTcsNyArMTk3LDcgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CiAg
ICAgYm9vbCBpc0NhdGNoRW50cnlwb2ludDsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5kaWYKICAgICBib29sIGlzUmVh
Y2hhYmxlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRAog
ICAgICAgICAgICAgICAgICYmIG1fc3RhdGUuZGlkQ2xvYmJlck9yRm9sZGVkKCkgIT0gd3JpdGVz
T3ZlcmxhcChtX2dyYXBoLCBub2RlLCBKU0NlbGxfc3RydWN0dXJlSUQpKQogICAgICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCB0b0NTdHJpbmcoIkFJLWNsb2JiZXJpemUgZGlz
YWdyZWVtZW50OyBBSSBzYXlzICIsIG1fc3RhdGUuY2xvYmJlclN0YXRlKCksICIgd2hpbGUgY2xv
YmJlcml6ZSBzYXlzICIsIHdyaXRlU2V0KG1fZ3JhcGgsIG5vZGUpKS5kYXRhKCkpOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHJldmlzaW9uIDI1
NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgzLDcgKzgzLDcgQEAgaW5saW5lIGJvb2wgc2hvdWxkRHVtcEdyYXBoQXRFYWNo
UGhhc2UoQwogCiBpbmxpbmUgYm9vbCB2YWxpZGF0aW9uRW5hYmxlZCgpCiB7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQog
ICAgIHJldHVybiBPcHRpb25zOjp2YWxpZGF0ZUdyYXBoKCkgfHwgT3B0aW9uczo6dmFsaWRhdGVH
cmFwaEF0RWFjaFBoYXNlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uRGF0YS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBA
QCB2b2lkIENvbW1vbkRhdGE6OmZpbmFsaXplQ2F0Y2hFbnRyeXBvaW50CiAgICAgc3RkOjpzb3J0
KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwKICAgICAg
ICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2lu
dERhdGEmIGIpIHsgcmV0dXJuIGEuYnl0ZWNvZGVJbmRleCA8IGIuYnl0ZWNvZGVJbmRleDsgfSk7
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpICsgMSA8IGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIEFTU0VSVChjYXRjaEVudHJ5cG9pbnRzW2ldLmJ5dGVjb2RlSW5kZXggPD0gY2F0Y2hFbnRy
eXBvaW50c1tpICsgMV0uYnl0ZWNvZGVJbmRleCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2lu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0cnVjdCBBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnRBZGFwdG8KIAogdGVtcGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludFNl
dFR5cGUsIHR5cGVuYW1lIEFkYXB0b3IgPSBTZXRQb2ludGVyQWRhcHRvcjxXYXRjaHBvaW50U2V0
VHlwZT4+CiBjbGFzcyBHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzIHsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB0eXBlZGVmIEhhc2hNYXA8V2F0Y2hwb2lu
dFNldFR5cGUsIGJvb2w+IFN0YXRlTWFwOwogI2VuZGlmCiBwdWJsaWM6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
OSw3ICsyNDksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBEYXRhVmlld1NldDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgY2Fz
ZSBBcnJheVBvcDoKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CkBAIC0zOTksMTEgKzM5OSwxMSBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBWYWx1ZVBv
dzoKICAgICBjYXNlIFZhbHVlQml0Tm90OgogICAgIGNhc2UgVmFsdWVOZWdhdGU6Ci0jZWxzZQot
ICAgIC8vIFNlZSBjb21tZW50IGF0IHRoZSB0b3AgZm9yIHdoeSBiZSBkZWZhdWx0IGZvciBhbGwg
bm9kZXMgc2hvdWxkIGJlIHRvCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKKyAgICAvLyBT
ZWUgY29tbWVudCBhdCB0aGUgdG9wIGZvciB3aHkgdGhlIGRlZmF1bHQgZm9yIGFsbCBub2RlcyBz
aG91bGQgYmUgdG8KICAgICAvLyByZXR1cm4gdHJ1ZS4KICAgICBkZWZhdWx0OgotI2VuZGlmCisj
ZW5kaWYgLy8gbm90IEFTU0VSVF9FTkFCTEVECiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Y2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0VkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0VkZ2UuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdFZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBBU1NFUlQodXNlS2luZCA+PSAwICYmIHVzZUtpbmQgPCBMYXN0VXNlS2luZCk7CiAgICAg
ICAgIHN0YXRpY19hc3NlcnQoKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oTGFzdFVzZUtpbmQpIDw8
IDIpIDwgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgc2hpZnQoKSksICJXZSByZWx5IG9u
IHRoaXMgYmVpbmcgdHJ1ZSB0byBub3QgY2xvYmJlciB0aGUgbm9kZSBwb2ludGVyLiIpOwogICAg
ICAgICB1aW50cHRyX3QgcmVzdWx0ID0gc2hpZnRlZFZhbHVlIHwgKHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4odXNlS2luZCkgPDwgMikgfCAoREZHOjpkb2VzS2lsbChraWxsU3RhdHVzKSA8PCAxKSB8
IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oREZHOjppc1Byb3ZlZChwcm9vZlN0YXR1cykpOwotICAg
ICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQp
IHsKICAgICAgICAgICAgIHVuaW9uIFUgewogICAgICAgICAgICAgICAgIFUoKSB7IHdvcmQgPSAw
OyB9CiAgICAgICAgICAgICAgICAgdWludHB0cl90IHdvcmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0MzgsOSArMjQzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCi0KLQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5
IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBT
ZXRBcmd1bWVudERlZmluaXRlbHk6CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnRNYXliZToKQEAg
LTI1MzAsMTAgKzI1MjgsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Q
b2ludDoKICAgICAgICAgY2FzZSBDcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHk6CiAgICAgICAgICAg
ICBicmVhazsKLSNlbHNlCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCisjZW5kaWYgLy8gbm90IEFTU0VSVF9F
TkFCTEVECiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBA
IHZvaWQgSklUQ29kZTo6ZmluYWxpemVPU1JFbnRyeXBvaW50cygpCiAgICAgfTsKICAgICBzdGQ6
OnNvcnQob3NyRW50cnkuYmVnaW4oKSwgb3NyRW50cnkuZW5kKCksIGNvbXBhcmF0b3IpOwogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byB2ZXJpZnlJ
c1NvcnRlZCA9IFsmXSAoYXV0byYgb3NyVmVjdG9yKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgKyAxIDwgb3NyVmVjdG9yLnNpemUoKTsgKytpKQogICAgICAgICAgICAgQVNTRVJU
KG9zclZlY3RvcltpXS5tX2J5dGVjb2RlSW5kZXggPD0gb3NyVmVjdG9yW2kgKyAxXS5tX2J5dGVj
b2RlSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNyArNDk0LDcgQEAgcHVibGljOgog
ICAgICAgICBmb3IgKE5vZGUqIGlkZW50aWZpZXIgOiB0b0VzY2FwZSkKICAgICAgICAgICAgIGVz
Y2FwZUFsbG9jYXRpb24oaWRlbnRpZmllcik7CiAKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGVudHJ5IDogbV9hbGxvY2F0aW9ucykKICAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKGVudHJ5LCBlbnRyeS52YWx1ZS5pc0VzY2FwZWRBbGxvY2F0aW9uKCkgfHwgb3RoZXIu
bV9hbGxvY2F0aW9ucy5jb250YWlucyhlbnRyeS5rZXkpKTsKICAgICAgICAgfQpAQCAtNTE5LDcg
KzUxOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXNzZXJ0SXNWYWxpZCgpIGNvbnN0CiAgICAg
ewotICAgICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgICAgICBpZiAoIUFTU0VSVF9FTkFC
TEVEKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFBvaW50ZXJzIHNob3VsZCBw
b2ludCB0byBhbiBhY3R1YWwgYWxsb2NhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGlj
dGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgR2V0U3RhY2ssIG5vZGUtPm9yaWdpbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fc3RhY2tBY2Nlc3NEYXRh
LmFkZCh2YXJpYWJsZS0+b3BlcmFuZCgpLCB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSkpKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXJndW1l
bnRHZXR0ZXJzLmFkZChjaGlsZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50
TWFwcGluZy5hZGQobm9kZSwgY2hpbGROb2RlKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Njb3JlQm9hcmQuaAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTY29yZUJvYXJkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYXNzZXJ0Q2xl
YXIoKQogICAgIHsKLSAgICAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICAgICAgaWYgKCFB
U1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIC8v
IEZvciBldmVyeSBlbnRyeSBpbiB0aGUgdXNlZCBsaXN0IHRoZSB1c2UgY291bnQgb2YgdGhlIHZp
cnR1YWwgcmVnaXN0ZXIgc2hvdWxkIGJlIHplcm8sIG9yIG1heCwgZHVlIHRvIGl0IGJlaW5nIGEg
cHJlc2VydmVkIGxvY2FsLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93
UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaml0LT5tX29yaWdpbiA9IG1fb3JpZ2luOwog
ICAgICAgICBnZW5lcmF0ZUludGVybmFsKGppdCk7CiAgICAgICAgIGppdC0+bV9vdXRPZkxpbmVT
dHJlYW1JbmRleCA9IFdURjo6bnVsbG9wdDsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
CisgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIGppdC0+bV9qaXQuYWJv
cnRXaXRoUmVhc29uKERGR1Nsb3dQYXRoR2VuZXJhdG9yRmVsbFRocm91Z2gpOwogICAgIH0KICAg
ICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbGFiZWwoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsOyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDgsNyArMTIwOCw3
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBjYXNlIERh
dGFGb3JtYXRKU0NlbGw6IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAg
ICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgY2hlY2tDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzKGdwcikpOwog
ICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR0lzTm90Q2VsbCk7CiAgICAgICAg
ICAgICBjaGVja0NlbGwubGluaygmbV9qaXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODg4LDcgKzE4ODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrCiAgICAgfQogICAgIAogICAgIC8vIFBlcmZvcm0gdGhlIG1vc3QgYmFzaWMgdmVy
aWZpY2F0aW9uIHRoYXQgY2hpbGRyZW4gaGF2ZSBiZWVuIHVzZWQgY29ycmVjdGx5LgotICAgIGlm
ICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAg
IGZvciAoYXV0byYgaW5mbyA6IG1fZ2VuZXJhdGlvbkluZm8pCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVCghaW5mby5hbGl2ZSgpKTsKICAgICB9CkBAIC0xMDk1OCw3ICsxMDk1OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCaW5hcnlTd2l0Y2hTdHIKICAgICAgICAgLy8gV2UndmUg
YWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIGlucHV0IHN0cmluZyBpcyBhIHByZWZpeCBvZiBhbGwg
b2YgdGhlIGNhc2VzLAogICAgICAgICAvLyBzbyB3ZSBqdXN0IGNoZWNrIGxlbmd0aCB0byBqdW1w
IHRvIHRoYXQgY2FzZS4KICAgICAgICAgCi0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7
CisgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgQVNTRVJUKGNhc2Vz
W2JlZ2luXS5zdHJpbmctPmxlbmd0aCgpID09IGNvbW1vbkNoYXJzKTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJlZ2luICsgMTsgaSA8IGVuZDsgKytpKQogICAgICAgICAgICAgICAg
IEFTU0VSVChjYXNlc1tpXS5zdHJpbmctPmxlbmd0aCgpID4gY29tbW9uQ2hhcnMpOwpAQCAtMTE5
NzUsNyArMTE5NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVCdXR0ZXJm
CiAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9QdHIoc2l6ZUdQUiwgc2NyYXRjaDEpOwogICAgIG1f
aml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMigzKSwgc2NyYXRjaDEpOwogICAgIG1faml0LmFkZDMy
KFRydXN0ZWRJbW0zMihzaXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaDEsIHNjcmF0Y2gy
KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBkaWROb3RPdmVyZmxvdyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHNjcmF0Y2gyLCBzaXplR1BSKTsKICAgICBtX2ppdC5hYm9ydFdp
dGhSZWFzb24oVW5jaGVja2VkT3ZlcmZsb3cpOwogICAgIGRpZE5vdE92ZXJmbG93LmxpbmsoJm1f
aml0KTsKQEAgLTEzNDgyLDE0ICsxMzQ4MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQWxsb2NhdGVOZXdBCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsK
ICAgICBpZiAoc2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlKQogICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05f
TEVOR1RIKSkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGVsc2UgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBsZW5ndGhJc1dpdGhpbkxpbWl0
czsKICAgICAgICAgbGVuZ3RoSXNXaXRoaW5MaW1pdHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QmVsb3csIHNpemVHUFIsIFRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RPUkFHRV9D
T05TVFJVQ1RJT05fTEVOR1RIKSk7CiAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihVbmNo
ZWNrZWRPdmVyZmxvdyk7CiAgICAgICAgIGxlbmd0aElzV2l0aGluTGltaXRzLmxpbmsoJm1faml0
KTsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgLy8gV2Ug
Y2FuIHVzZSByZXN1bHRHUFIgYXMgYSBzY3JhdGNoIHJpZ2h0IG5vdy4KICAgICBlbWl0QWxsb2Nh
dGVCdXR0ZXJmbHkoc3RvcmFnZUdQUiwgc2l6ZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIs
IHJlc3VsdEdQUiwgc2xvd0Nhc2VzKTsKQEAgLTE0MDEwLDcgKzE0MDEwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEFTU0VSVF9F
TkFCTEVEKSB7CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgb2sgPSBtX2ppdC5icmFu
Y2gzMigKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwg
YWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRX
aXRoUmVhc29uKERGR05lZ2F0aXZlU3RyaW5nTGVuZ3RoKTsKQEAgLTE0MDU0LDcgKzE0MDU0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoQVNTRVJUX0VOQUJM
RUQpIHsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG9rID0gbV9qaXQuYnJhbmNoMzIoCiAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgYWxsb2NhdG9yR1BS
LCBUcnVzdGVkSW1tMzIoMCkpOwogICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHTmVn
YXRpdmVTdHJpbmdMZW5ndGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAyNTQwNDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphc3NlcnRJc1JlZ2lzdGVyZWQoR3JhcGgm
IGdyYXBoKSBjb25zdAogewogICAgIGlmIChpc1RvcCgpKQpAQCAtNDEsNyArNDEsNyBAQCB2b2lk
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gc2l6ZSgpOyBpLS07KQogICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQoYXQoaSku
Z2V0KCkpOwogfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNsb2JiZXIoKQogewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCAr
OTAsMTAgQEAgcHVibGljOgogICAgICAgICBtX3NldC5tX3BvaW50ZXIgPSB0b3BWYWx1ZTsKICAg
ICB9CiAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3NlcnRJc1JlZ2lzdGVy
ZWQoR3JhcGgmKSBjb25zdCB7IH0KLSNlbHNlCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB2b2lk
IGFzc2VydElzUmVnaXN0ZXJlZChHcmFwaCYpIGNvbnN0OworI2Vsc2UKKyAgICB2b2lkIGFzc2Vy
dElzUmVnaXN0ZXJlZChHcmFwaCYpIGNvbnN0IHsgfQogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBj
bG9iYmVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyMSw3ICs0MjEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlmIChBU1NFUlRf
RElTQUJMRUQpCisgICAgICAgICAgICAgICAgaWYgKCFBU1NFUlRfRU5BQkxFRCkKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4o
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWaXJ0dWFsUmVnaXN0ZXJBbGxvY2F0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgaWYgKCFibG9jay0+aXNSZWFjaGFibGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICAgICAgaWYgKEFTU0VS
VF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdXNhZ2Ugb2YgaGlnaGVzdC1u
dW1iZXJlZCB2aXJ0dWFsIHJlZ2lzdGVycy4KICAgICAgICAgICAgICAgICBzY29yZUJvYXJkLnNv
cnRGcmVlKCk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TGluay5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgaml0Lmp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIodm0p
OwogICAgICAgICAgICAgbm9FeGNlcHRpb24ubGluaygmaml0KTsKIAotICAgICAgICAgICAgaWYg
KCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewog
ICAgICAgICAgICAgICAgIGppdC5sb2FkNjQodm0uYWRkcmVzc09mRXhjZXB0aW9uKCksIEdQUklu
Zm86OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBqaXQuaml0QXNzZXJ0SXNOdWxsKEdQUkluZm86
OnJlZ1QxKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIx
LDcgKzEyMSw3IEBAIG5hbWVzcGFjZSB7CiAKIHN0ZDo6YXRvbWljPGludD4gY29tcGlsZUNvdW50
ZXI7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIE5PX1JFVFVS
Tl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgZnRsVW5yZWFjaGFibGUoCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxvY2tJbmRleCwgdW5zaWduZWQgbm9kZUluZGV4KQog
ewpAQCAtMTMxLDcgKzEzMSw3IEBAIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQg
ZnRsVW4KICAgICBkYXRhTG9nKCIuXG4iKTsKICAgICBDUkFTSCgpOwogfQotI2VuZGlmCisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogLy8gVXNpbmcgdGhpcyBpbnN0ZWFkIG9mIHR5cGVDaGVj
aygpIGhlbHBzIHRvIHJlZHVjZSB0aGUgbG9hZCBvbiBCMywgYnkgY3JlYXRpbmcKIC8vIHNpZ25p
ZmljYW50bHkgbGVzcyBkZWFkIGNvZGUuCkBAIC0xNzU2Niw3ICsxNzU2Niw3IEBAIHByaXZhdGU6
CiAgICAgICAgIG1fb3V0LnN0b3JlMzIoCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKGNh
bGxTaXRlSW5kZXguYml0cygpKSwKICAgICAgICAgICAgIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIo
Q2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKSk7Ci0jaWYgIVVTRShC
VUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8ICFBU1NFUlRfRElTQUJMRUQKKyNpZiAhVVNFKEJVSUxU
SU5fRlJBTUVfQUREUkVTUykgfHwgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9vdXQuc3RvcmVQ
dHIobV9jYWxsRnJhbWUsIG1fb3V0LmFic29sdXRlKCZ2bSgpLnRvcENhbGxGcmFtZSkpOwogI2Vu
ZGlmCiAgICAgfQpAQCAtMTc1OTgsNyArMTc1OTgsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUV4Y2Vw
dGlvbkZ1enooKSkgewotI2lmICFVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSB8fCAhQVNTRVJU
X0RJU0FCTEVECisjaWYgIVVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpIHx8IEFTU0VSVF9FTkFC
TEVECiAgICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1
dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAjZW5kaWYKICAgICAgICAgICAgIG1fb3V0LmNhbGwo
Vm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkV4Y2VwdGlvbkZ1enopLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpKTsKQEAgLTE4MTcwLDcgKzE4MTcwLDcgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgICAgIEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IGJsb2NrLT5pbmRleDsKICAgICAgICAg
dW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZSA/IG5vZGUtPmluZGV4KCkgOiBVSU5UX01BWDsKLSNp
ZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9vdXQucGF0
Y2hwb2ludChWb2lkKS0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewogICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKQEAg
LTE4MTgxLDcgKzE4MTgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobm9kZS0+b3AoKSksIEdQUkluZm86OnJlZ1Qy
KTsKICAgICAgICAgICAgICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKEZUTENyYXNoKTsKICAgICAg
ICAgICAgIH0pOwotI2Vsc2UKKyNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fb3V0
LmNhbGwoCiAgICAgICAgICAgICBWb2lkLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
ZnRsVW5yZWFjaGFibGUpLApAQCAtMTgxODksNyArMTgxODksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgLy8gdGhhdCB3b3VsZCBjYXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJs
b2NrKCkpKSwgbV9vdXQuY29uc3RJbnQzMihibG9ja0luZGV4KSwKICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50MzIobm9kZUluZGV4KSk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxF
RAogICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEsNyArNDExLDcgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aQogICAgICAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGFycmF5SW5kZXgsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZXNbaV0pKTsKICAgICAgICAgICAg
IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAg
ICAgLy8gV2UgYXZvaWQgdGhpcyBPKG5eMikgbG9vcCB3aGVuIGFzc2VydHMgYXJlIGRpc2FibGVk
LCBidXQgdGhlIGNvbmRpdGlvbiBjaGVja2VkIGhlcmUKICAgICAgICAgICAgIC8vIG11c3QgaG9s
ZCB0byBlbnN1cmUgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBhYm92ZSBsb29wIGJlY2F1c2Ugb2Yg
aG93IHdlIGFsbG9jYXRlIHRoZSBhcnJheS4KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgdGFy
Z2V0SW5kZXggPSAwOyB0YXJnZXRJbmRleCA8IGFycmF5U2l6ZTsgKyt0YXJnZXRJbmRleCkgewpA
QCAtNDM0LDcgKzQzNCw3IEBAIGV4dGVybiAiQyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUKGZvdW5kKTsKICAg
ICAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIApAQCAtNTQwLDcgKzU0MCw3IEBAIGV4dGVybiAi
QyIgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICAgICAgSlNBcnJheSogcmVzdWx0
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIGFycmF5U2l6ZSk7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICAgICAgLy8gRW5zdXJlIHdlIHNlZSBpbmRpY2VzIGZvciBldmVyeXRo
aW5nIGluIHRoZSByYW5nZTogWzAsIG51bVByb3BlcnRpZXMpCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKQEAgLTU1Myw3ICs1NTMsNyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlQoZm91bmQp
OwogICAgICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAgICAgICAg
IFZlY3RvcjxKU1ZhbHVlLCA4PiBhcmd1bWVudHM7CiAgICAgICAgIGFyZ3VtZW50cy5ncm93KG51
bVByb3BlcnRpZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsNyArMjk2LDcg
QEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6
YXNzZXJ0Tm9VbnN3ZXB0KCkKIHsKLSAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAgIGlmICgh
QVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBpZiAobV9iaXRzLnVu
c3dlcHQoKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1Nl
Z21lbnRlZEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NTZWdtZW50ZWRBcnJheS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgR0NBcnJheVNlZ21lbnQgOiBwdWJsaWMgRG91Ymx5TGluawogcHVibGljOgog
ICAgIEdDQXJyYXlTZWdtZW50KCkKICAgICAgICAgOiBEb3VibHlMaW5rZWRMaXN0Tm9kZTxHQ0Fy
cmF5U2VnbWVudDxUPj4oKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgICAgICAsIG1fdG9wKDApCiAjZW5kaWYKICAgICB7CkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKIAogICAgIEdDQXJyYXlTZWdtZW50KiBtX3ByZXY7CiAgICAgR0NBcnJheVNlZ21lbnQq
IG1fbmV4dDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBz
aXplX3QgbV90b3A7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9HQ1NlZ21lbnRlZEFycmF5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBHQ1NlZ21lbnRlZEFycmF5PFQ+
OjpjbGVhcigpCiAgICAgfQogICAgIG1fdG9wID0gMDsKICAgICBtX251bWJlck9mU2VnbWVudHMg
PSAxOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fc2Vn
bWVudHMuaGVhZCgpLT5tX3RvcCA9IDA7CiAjZW5kaWYKIH0KQEAgLTc1LDcgKzc1LDcgQEAgdm9p
ZCBHQ1NlZ21lbnRlZEFycmF5PFQ+OjpleHBhbmQoKQogICAgIEdDQXJyYXlTZWdtZW50PFQ+KiBu
ZXh0U2VnbWVudCA9IEdDQXJyYXlTZWdtZW50PFQ+OjpjcmVhdGUoKTsKICAgICBtX251bWJlck9m
U2VnbWVudHMrKzsKICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBuZXh0U2VnbWVudC0+bV90b3AgPSAwOwogI2VuZGlmCiAKQEAgLTE3NCw5ICsxNzQs
NyBAQCBpbmxpbmUgc2l6ZV90IEdDU2VnbWVudGVkQXJyYXk8VD46OnRvcCgpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotI2lmIEFTU0VSVF9ESVNBQkxFRAotaW5saW5lIHZvaWQgR0NTZWdt
ZW50ZWRBcnJheTxUPjo6dmFsaWRhdGVQcmV2aW91cygpIHsgfQotI2Vsc2UKKyNpZiBBU1NFUlRf
RU5BQkxFRAogaW5saW5lIHZvaWQgR0NTZWdtZW50ZWRBcnJheTxUPjo6dmFsaWRhdGVQcmV2aW91
cygpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwpAQCAtMTg0LDcgKzE4Miw5IEBAIGlubGlu
ZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXQKICAgICAgICAgY291bnQrKzsKICAg
ICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gbV9udW1iZXJPZlNlZ21lbnRzKTsKIH0KLSNl
bmRpZgorI2Vsc2UKK2lubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OnZhbGlkYXRlUHJl
dmlvdXMoKSB7IH0KKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KIGlubGluZSB2b2lkIEdDU2VnbWVudGVkQXJyYXk8VD46OmFwcGVuZChUIHZhbHVlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuY3BwCShyZXZpc2lvbiAy
NTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgdW5zaWduZWQgSGFuZGxlU2V0Ojpwcm90ZWN0
ZWRHbG9iYWxPYmplYwogICAgIHJldHVybiBjb3VudDsKIH0KIAotI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKSB8fCAhQVNTRVJUX0RJU0FCTEVECisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pIHx8
IEFTU0VSVF9FTkFCTEVECiBib29sIEhhbmRsZVNldDo6aXNMaXZlTm9kZShOb2RlKiBub2RlKQog
ewogICAgIGlmIChub2RlLT5wcmV2KCktPm5leHQoKSAhPSBub2RlKQpAQCAtMTEyLDYgKzExMiw2
IEBAIGJvb2wgSGFuZGxlU2V0Ojppc0xpdmVOb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAg
IHJldHVybiB0cnVlOwogfQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEdDX1ZBTElEQVRJT04p
IHx8IEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4
OCw3IEBAIHByaXZhdGU6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdyb3coKTsKICAg
ICAKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEVO
QUJMRShHQ19WQUxJREFUSU9OKSB8fCBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNMaXZlTm9k
ZShOb2RlKik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjg5LDcgKzIyODksNyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFs
bG9jYXRpb25MaW1pdHMoKQogICAgIC8vIEl0J3MgdXAgdG8gdGhlIHVzZXIgdG8gZW5zdXJlIHRo
YXQgZXh0cmFNZW1vcnlTaXplKCkgZW5kcyB1cCBjb3JyZXNwb25kaW5nIHRvIGFsbG9jYXRpb24t
dGltZQogICAgIC8vIGV4dHJhIG1lbW9yeSByZXBvcnRpbmcuCiAgICAgY3VycmVudEhlYXBTaXpl
ICs9IGV4dHJhTWVtb3J5U2l6ZSgpOwotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
aWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVy
Zmxvdz4gY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZSA9IG1fdG90YWxCeXRlc1Zpc2l0ZWQ7CiAgICAg
ICAgIGNoZWNrZWRDdXJyZW50SGVhcFNpemUgKz0gZXh0cmFNZW1vcnlTaXplKCk7CiAgICAgICAg
IEFTU0VSVCghY2hlY2tlZEN1cnJlbnRIZWFwU2l6ZS5oYXNPdmVyZmxvd2VkKCkgJiYgY2hlY2tl
ZEN1cnJlbnRIZWFwU2l6ZS51bnNhZmVHZXQoKSA9PSBjdXJyZW50SGVhcFNpemUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMSArOTYsNyBA
QCBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIFdvcmtsaXN0OwogfQogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotI2RlZmluZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAxCi0jZWxz
ZQotI2RlZmluZSBFTkFCTEVfREZHX0RPRVNfR0NfVkFMSURBVElPTiAwCi0jZW5kaWYKKyNkZWZp
bmUgRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT04gQVNTRVJUX0VOQUJMRUQKIGNvbnN0ZXhw
ciBib29sIHZhbGlkYXRlREZHRG9lc0dDID0gRU5BQkxFX0RGR19ET0VTX0dDX1ZBTElEQVRJT047
CiAKIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlNDZWxsKj4gUHJvdGVjdENvdW50U2V0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUsMTIgKzI2NSwxMiBAQCB2b2lkIE1hcmtlZEJsb2NrOjpyZXNl
dE1hcmtzKCkKICAgICBmb290ZXIoKS5tX21hcmtpbmdWZXJzaW9uID0gTWFya2VkU3BhY2U6Om51
bGxWZXJzaW9uOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiB2b2lkIE1hcmtlZEJsb2NrOjphc3NlcnRNYXJrc05vdFN0YWxlKCkKIHsKICAgICBBU1NFUlQo
Zm9vdGVyKCkubV9tYXJraW5nVmVyc2lvbiA9PSB2bSgpLmhlYXAub2JqZWN0U3BhY2UoKS5tYXJr
aW5nVmVyc2lvbigpKTsKIH0KLSNlbmRpZiAvLyAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAogYm9vbCBNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZSgpCiB7CkBA
IC0zNjEsMTMgKzM2MSwxMyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmRpZFJlbW92ZUZy
b21ECiAgICAgYmxvY2tGb290ZXIoKS5tX3N1YnNwYWNlID0gbnVsbHB0cjsKIH0KIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogdm9pZCBNYXJrZWRCbG9jazo6YXNz
ZXJ0VmFsaWRDZWxsKFZNJiB2bSwgSGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQoJnZtID09ICZ0aGlzLT52bSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChjb25zdF9j
YXN0PE1hcmtlZEJsb2NrKj4odGhpcyktPmhhbmRsZSgpLmNlbGxBbGlnbihjZWxsKSA9PSBjZWxs
KTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1MiwxMCArMzUyLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGhhc0FueU1hcmtlZCgp
IGNvbnN0OwogICAgIHZvaWQgbm90ZU1hcmtlZCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAg
IHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENlbGwqKSBjb25zdCB7IH0KLSNlbHNlCisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICB2b2lkIGFzc2VydFZhbGlkQ2VsbChWTSYsIEhlYXBDZWxs
KikgY29uc3Q7CisjZWxzZQorICAgIHZvaWQgYXNzZXJ0VmFsaWRDZWxsKFZNJiwgSGVhcENlbGwq
KSBjb25zdCB7IH0KICNlbmRpZgogICAgICAgICAKICAgICBXZWFrU2V0JiB3ZWFrU2V0KCk7CkBA
IC0zNjUsMTAgKzM2NSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgRGVwZW5kZW5jeSBhYm91dFRv
TWFyayhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbik7CiAgICAgICAgIAotI2lmIEFTU0VSVF9E
SVNBQkxFRAotICAgIHZvaWQgYXNzZXJ0TWFya3NOb3RTdGFsZSgpIHsgfQotI2Vsc2UKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXNzZXJ0TWFya3NOb3RT
dGFsZSgpOworI2Vsc2UKKyAgICB2b2lkIGFzc2VydE1hcmtzTm90U3RhbGUoKSB7IH0KICNlbmRp
ZgogICAgICAgICAKICAgICB2b2lkIHJlc2V0TWFya3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDM3LDcgKzQzNyw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiAgICAgICAg
ICAgICBhbGxvY2F0aW9uLT5mbGlwKCk7CiAgICAgfQogCi0gICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgZm9yRWFjaEJsb2NrKAog
ICAgICAgICAgICAgWyZdIChNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykgewogICAgICAgICAg
ICAgICAgIGlmIChibG9jay0+YXJlTWFya3NTdGFsZSgpKQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZv
aWQgTWFya2VkU3BhY2U6OmVuZE1hcmtpbmcoKQogICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJl
Y2lzZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb247IGkgPCBtX3ByZWNpc2VBbGxv
Y2F0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNbaV0tPmNs
ZWFyTmV3bHlBbGxvY2F0ZWQoKTsKIAotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
aWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIGZvciAoUHJlY2lzZUFsbG9jYXRpb24qIGFs
bG9jYXRpb24gOiBtX3ByZWNpc2VBbGxvY2F0aW9ucykKICAgICAgICAgICAgIEFTU0VSVF9VTlVT
RUQoYWxsb2NhdGlvbiwgIWFsbG9jYXRpb24tPmlzTmV3bHlBbGxvY2F0ZWQoKSk7CiAgICAgfQpA
QCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiAK
IHZvaWQgTWFya2VkU3BhY2U6OmFzc2VydE5vVW5zd2VwdCgpCiB7Ci0gICAgaWYgKEFTU0VSVF9E
SVNBQkxFRCkKKyAgICBpZiAoIUFTU0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAgICAg
Zm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgWyZdIChCbG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5
KSAtPiBJdGVyYXRpb25TdGF0dXMgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
UHJlY2lzZUFsbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1ByZWNpc2VBbGxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBQcmVjaXNlQWxsb2NhdGlvbjo6ZHVtcChQcmludFN0
cmVhbQogICAgIG91dC5wcmludChSYXdQb2ludGVyKHRoaXMpLCAiOihjZWxsIGF0ICIsIFJhd1Bv
aW50ZXIoY2VsbCgpKSwgIiB3aXRoIHNpemUgIiwgbV9jZWxsU2l6ZSwgIiBhbmQgYXR0cmlidXRl
cyAiLCBtX2F0dHJpYnV0ZXMsICIpIik7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKIHZvaWQgUHJlY2lzZUFsbG9jYXRpb246OmFzc2VydFZhbGlkQ2VsbChW
TSYgdm0sIEhlYXBDZWxsKiBjZWxsKSBjb25zdAogewogICAgIEFTU0VSVCgmdm0gPT0gJnRoaXMt
PnZtKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUHJlY2lzZUFsbG9jYXRp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9QcmVjaXNlQWxs
b2NhdGlvbi5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9QcmVjaXNlQWxsb2NhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMTAgKzE0MiwxMCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkKCkgeyB9CiAgICAgCi0jaWYgQVNT
RVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3NlcnRWYWxpZENlbGwoVk0mLCBIZWFwQ2VsbCopIGNv
bnN0IHsgfQotI2Vsc2UKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgYXNzZXJ0VmFsaWRD
ZWxsKFZNJiwgSGVhcENlbGwqKSBjb25zdDsKKyNlbHNlCisgICAgdm9pZCBhc3NlcnRWYWxpZENl
bGwoVk0mLCBIZWFwQ2VsbCopIGNvbnN0IHsgfQogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBzd2Vl
cCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFNsb3RWaXNpdG9yOjpTbG90
VmlzaXRvcihIZWFwJiBoZWFwLCBDU3QKICAgICAsIG1fbWFya2luZ1ZlcnNpb24oTWFya2VkU3Bh
Y2U6OmluaXRpYWxWZXJzaW9uKQogICAgICwgbV9oZWFwKGhlYXApCiAgICAgLCBtX2NvZGVOYW1l
KGNvZGVOYW1lKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICwgbV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24oZmFsc2UpCiAgICAgLCBtX2lz
RHJhaW5pbmcoZmFsc2UpCiAjZW5kaWYKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFNsb3RWaXNp
dG9yOjphcHBlbmRKU0NlbGxPckF1eGlsaWFyCiAgICAgCiAgICAgLy8gSW4gZGVidWcgbW9kZSwg
d2UgdmFsaWRhdGUgYmVmb3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdo
YXQgdGhlIHByb2JsZW0KICAgICAvLyB3YXMuIEl0J3MgYWxzbyBzbG93ZXIsIHNvIHdlIGRvbid0
IGRvIGl0IG5vcm1hbGx5LgotICAgIGlmICghQVNTRVJUX0RJU0FCTEVEICYmIGlzSlNDZWxsS2lu
ZChoZWFwQ2VsbC0+Y2VsbEtpbmQoKSkpCisgICAgaWYgKEFTU0VSVF9FTkFCTEVEICYmIGlzSlND
ZWxsS2luZChoZWFwQ2VsbC0+Y2VsbEtpbmQoKSkpCiAgICAgICAgIHZhbGlkYXRlQ2VsbChzdGF0
aWNfY2FzdDxKU0NlbGwqPihoZWFwQ2VsbCkpOwogICAgIAogICAgIGlmIChIZWFwOjp0ZXN0QW5k
U2V0TWFya2VkKG1fbWFya2luZ1ZlcnNpb24sIGhlYXBDZWxsKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2
LDcgKzI2Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gUHV0IHBhZGRpbmcgaGVyZSB0byBtaXRpZ2F0
ZSBmYWxzZSBzaGFyaW5nIGJldHdlZW4gbXVsdGlwbGUgU2xvdFZpc2l0b3JzLgogICAgIGNoYXIg
cGFkZGluZ1s2NF07CiBwdWJsaWM6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgYm9vbCBtX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICAg
ICBib29sIG1faXNEcmFpbmluZzsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm90b2NvbFR5cGVzLmgJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UHJvdG9jb2xUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNiArNTcsMTYgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IEJpbmRpbmdUcmFpdAogCiAgICAgc3RhdGljIHZvaWQgYXNz
ZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogICAgIHsKLSNpZiBB
U1NFUlRfRElTQUJMRUQKLSAgICAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSNlbHNlCisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgICAg
ICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFycmF5OwogICAgICAgICBib29sIGNhc3RTdWNjZWVkZWQg
PSB2YWx1ZS0+YXNBcnJheShhcnJheSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY2FzdFN1Y2Nl
ZWRlZCwgY2FzdFN1Y2NlZWRlZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
cnJheS0+bGVuZ3RoKCk7IGkrKykKICAgICAgICAgICAgIEJpbmRpbmdUcmFpdHM8VD46OmFzc2Vy
dFZhbHVlSGFzRXhwZWN0ZWRUeXBlKGFycmF5LT5nZXQoaSkuZ2V0KCkpOwotI2VuZGlmIC8vICFB
U1NFUlRfRElTQUJMRUQKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlw
ZXNfaW1wbGVtZW50YXRpb24ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNf
aW1wbGVtZW50YXRpb24ucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw5ICsyMTMsNyBAQCBjbGFz
cyBDcHBQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lCiAKICAgICAgICAgbGluZXMuYXBw
ZW5kKCd2b2lkIEJpbmRpbmdUcmFpdHM8JXM+Ojphc3NlcnRWYWx1ZUhhc0V4cGVjdGVkVHlwZShK
U09OOjpWYWx1ZSogdmFsdWUpJyAlIChDcHBHZW5lcmF0b3IuY3BwX3Byb3RvY29sX3R5cGVfZm9y
X3R5cGUob2JqZWN0X2RlY2xhcmF0aW9uLnR5cGUpKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCIi
InsKLSNpZiBBU1NFUlRfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwotI2Vsc2UK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsKICAgICBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7CiAgICAgYm9vbCBjYXN0U3VjY2VlZGVkID0gdmFs
dWUtPmFzT2JqZWN0KG9iamVjdCk7CkBAIC0yNTUsNyArMjUzLDkgQEAgY2xhc3MgQ3BwUHJvdG9j
b2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZQogICAgICAgICBpZiBzaG91bGRfY291bnRfcHJvcGVy
dGllczoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlmIChmb3VuZFByb3BlcnRpZXND
b3VudCAhPSBvYmplY3QtPnNpemUoKSknKQogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
ICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAlc1xcbiIsIG9iamVj
dC0+dG9KU09OU3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOycpCi0gICAgICAgIGxpbmVzLmFwcGVu
ZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNl
bHNlIC8vIEFTU0VSVF9FTkFCTEVEJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVU5VU0VE
X1BBUkFNKHZhbHVlKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRCcpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAgICAgICAgIHJldHVybiAnXG4n
LmpvaW4obGluZXMpCiAKQEAgLTI2Myw5ICsyNjMsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5cGVz
SW1wbGVtZW50YXRpb25HZW5lCiAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgbGluZXMuYXBw
ZW5kKCd2b2lkICVzKEpTT046OlZhbHVlKiB2YWx1ZSknICUgQ3BwR2VuZXJhdG9yLmNwcF9hc3Nl
cnRpb25fbWV0aG9kX2Zvcl90eXBlX21lbWJlcihlbnVtX21lbWJlciwgb2JqZWN0X2RlY2xhcmF0
aW9uKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcj
aWYgQVNTRVJUX0RJU0FCTEVEJykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVU5VU0VEX1BB
UkFNKHZhbHVlKTsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyNlbHNlJykKKyAgICAgICAgbGlu
ZXMuYXBwZW5kKCcjaWYgQVNTRVJUX0VOQUJMRUQnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7JykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
U3RyaW5nIHJlc3VsdDsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBib29sIGNhc3RTdWNj
ZWVkZWQgPSB2YWx1ZS0+YXNTdHJpbmcocmVzdWx0KTsnKQpAQCAtMjczLDcgKzI3MSw5IEBAIGNs
YXNzIENwcFByb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmUKIAogICAgICAgICBhc3NlcnRf
Y29uZGl0aW9uID0gJyB8fCAnLmpvaW4oWydyZXN1bHQgPT0gIiVzIicgJSBlbnVtX3ZhbHVlIGZv
ciBlbnVtX3ZhbHVlIGluIGVudW1fbWVtYmVyLnR5cGUuZW51bV92YWx1ZXMoKV0pCiAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVCglcyk7JyAlIGFzc2VydF9jb25kaXRpb24pCi0gICAg
ICAgIGxpbmVzLmFwcGVuZCgnI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQnKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJyNlbHNlIC8vIEFTU0VSVF9FTkFCTEVEJykKKyAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRCcpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCiAKICAg
ICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1
aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAkod29ya2luZyBjb3B5
KQpAQCAtNzA5LDIyICs3MDksMjAgQEAgT3B0aW9uYWw8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVz
dDo6Q2FzdAogCiB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6
Q2FzdGVkQW5pbWFscz46OmFzc2VydFZhbHVlSGFzRXhwZWN0ZWRUeXBlKEpTT046OlZhbHVlKiB2
YWx1ZSkKIHsKLSNpZiBBU1NFUlRfRElTQUJMRUQKLSAgICBVTlVTRURfUEFSQU0odmFsdWUpOwot
I2Vsc2UKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVF9BUkcodmFsdWUsIHZhbHVlKTsK
ICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc1N0
cmluZyhyZXN1bHQpOwogICAgIEFTU0VSVChjYXN0U3VjY2VlZGVkKTsKICAgICBBU1NFUlQocmVz
dWx0ID09ICJEdWNrcyIgfHwgcmVzdWx0ID09ICJIZW5zIiB8fCByZXN1bHQgPT0gIkNyb3dzIiB8
fCByZXN1bHQgPT0gIkZsYW1pbmdvcyIpOwotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNl
bHNlIC8vIEFTU0VSVF9FTkFCTEVECisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogfQogCiB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90
b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6YXNzZXJ0VmFsdWVIYXNFeHBlY3RlZFR5cGUo
SlNPTjo6VmFsdWUqIHZhbHVlKQogewotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7Ci0jZWxzZQorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUX0FSRyh2
YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKICAgICBib29s
IGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KTsKQEAgLTc1OCw3ICs3NTYs
OSBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6CiAgICAgaW50IGZv
dW5kUHJvcGVydGllc0NvdW50ID0gNTsKICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0g
b2JqZWN0LT5zaXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4g
b2JqZWN0OiAlc1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0j
ZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2Vsc2UgLy8gQVNTRVJUX0VOQUJMRUQKKyAgICBV
TlVTRURfUEFSQU0odmFsdWUpOworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9CiAKIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmVlZGluZ0Nhc3Q+IEJpbmRpbmdUcmFp
dHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6VGVzdDo6VHlwZU5lZWRpbmdDYXN0Pjo6cnVudGltZUNh
c3QoUmVmUHRyPEpTT046OlZhbHVlPiYmIHZhbHVlKQpAQCAtNzc0LDkgKzc3NCw3IEBAIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpUeXBlTmUKIAogdm9pZCBCaW5kaW5nVHJhaXRz
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRlc3Q6OlJlY3Vyc2l2ZU9iamVjdDE+Ojphc3NlcnRWYWx1
ZUhhc0V4cGVjdGVkVHlwZShKU09OOjpWYWx1ZSogdmFsdWUpCiB7Ci0jaWYgQVNTRVJUX0RJU0FC
TEVECi0gICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKLSNlbHNlCisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBBU1NFUlRfQVJHKHZhbHVlLCB2YWx1ZSk7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4g
b2JqZWN0OwogICAgIGJvb2wgY2FzdFN1Y2NlZWRlZCA9IHZhbHVlLT5hc09iamVjdChvYmplY3Qp
OwpAQCAtNzkyLDE0ICs3OTAsMTQgQEAgdm9pZCBCaW5kaW5nVHJhaXRzPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OgogICAgIH0KICAgICBpZiAoZm91bmRQcm9wZXJ0aWVzQ291bnQgIT0gb2JqZWN0LT5z
aXplKCkpCiAgICAgICAgIEZBVEFMKCJVbmV4cGVjdGVkIHByb3BlcnRpZXMgaW4gb2JqZWN0OiAl
c1xuIiwgb2JqZWN0LT50b0pTT05TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0jZW5kaWYgLy8g
IUFTU0VSVF9ESVNBQkxFRAorI2Vsc2UgLy8gQVNTRVJUX0VOQUJMRUQKKyAgICBVTlVTRURfUEFS
QU0odmFsdWUpOworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiB9CiAKIHZvaWQgQmluZGluZ1Ry
YWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0OjpSZWN1cnNpdmVPYmplY3QyPjo6YXNzZXJ0
VmFsdWVIYXNFeHBlY3RlZFR5cGUoSlNPTjo6VmFsdWUqIHZhbHVlKQogewotI2lmIEFTU0VSVF9E
SVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7Ci0jZWxzZQorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgQVNTRVJUX0FSRyh2YWx1ZSwgdmFsdWUpOwogICAgIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IG9iamVjdDsKICAgICBib29sIGNhc3RTdWNjZWVkZWQgPSB2YWx1ZS0+YXNPYmplY3Qob2Jq
ZWN0KTsKQEAgLTgxNSw3ICs4MTMsOSBAQCB2b2lkIEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6CiAgICAgfQogICAgIGlmIChmb3VuZFByb3BlcnRpZXNDb3VudCAhPSBvYmplY3Qt
PnNpemUoKSkKICAgICAgICAgRkFUQUwoIlVuZXhwZWN0ZWQgcHJvcGVydGllcyBpbiBvYmplY3Q6
ICVzXG4iLCBvYmplY3QtPnRvSlNPTlN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKLSNlbmRpZiAv
LyAhQVNTRVJUX0RJU0FCTEVECisjZWxzZSAvLyBBU1NFUlRfRU5BQkxFRAorICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUHJvdG9jb2wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9GcmFt
ZVRyYWNlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvRnJhbWVUcmFjZXJzLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9GcmFtZVRyYWNlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcg
KzEwNiw3IEBAIHB1YmxpYzoKIGNsYXNzIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJh
Y2VyIHsKIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIDogbV92bSh2bSkKICNlbmRpZgog
ICAgIHsKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChyZWludGVy
cHJldF9jYXN0PHZvaWQqPihjYWxsRnJhbWUpIDwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odm0u
dG9wRW50cnlGcmFtZSkpOwogICAgICAgICBhc3NlcnRTdGFja1BvaW50ZXJJc0FsaWduZWQoKTsK
ICNpZiBVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKQotICAgICAgICAvLyBJZiAhQVNTRVJUX0RJ
U0FCTEVEIGFuZCBVU0UoQlVJTFRJTl9GUkFNRV9BRERSRVNTKSwgcHJlcGFyZUNhbGxPcGVyYXRp
b24oKSB3aWxsIHB1dCB0aGUgZnJhbWUgcG9pbnRlciBpbnRvIHZtLnRvcENhbGxGcmFtZS4KKyAg
ICAgICAgLy8gSWYgQVNTRVJUX0VOQUJMRUQgYW5kIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1Mp
LCBwcmVwYXJlQ2FsbE9wZXJhdGlvbigpIHdpbGwgcHV0IHRoZSBmcmFtZSBwb2ludGVyIGludG8g
dm0udG9wQ2FsbEZyYW1lLgogICAgICAgICAvLyBXZSBjYW4gZW5zdXJlIGhlcmUgdGhhdCBhIGNh
bGwgdG8gcHJlcGFyZUNhbGxPcGVyYXRpb24oKSAob3IgaXRzIGVxdWl2YWxlbnQpIGlzIG5vdCBt
aXNzaW5nIGJ5IGNvbXBhcmluZyB2bS50b3BDYWxsRnJhbWUgdG8KICAgICAgICAgLy8gdGhlIHJl
c3VsdCBvZiBfX2J1aWx0aW5fZnJhbWVfYWRkcmVzcyB3aGljaCBpcyBwYXNzZWQgaW4gYXMgY2Fs
bEZyYW1lLgogICAgICAgICBBU1NFUlQodm0udG9wQ2FsbEZyYW1lID09IGNhbGxGcmFtZSk7CkBA
IC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgfkpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyKCkKICAgICB7CiAgICAgICAgIC8vIEZpbGwgdm0udG9wQ2FsbEZyYW1lIHdp
dGggaW52YWxpZCB2YWx1ZSB3aGVuIGxlYXZpbmcgZnJvbSBKSVQgb3BlcmF0aW9uIGZ1bmN0aW9u
cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcgKzMzNSw3
IEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcihWTSYgdm0pCiAgICAgLCBtX2Nsb29wU3RhY2so
dm0pCiAjZW5kaWYKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgYXNzZXJ0T25jZUtleTsKICAgICBzdGQ6OmNhbGxf
b25jZShhc3NlcnRPbmNlS2V5LCBbXSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBOVU1CRVJfT0ZfQllURUNPREVfSURTOyArK2kpIHsKQEAgLTM0Myw3ICszNDMsNyBAQCBJbnRl
cnByZXRlcjo6SW50ZXJwcmV0ZXIoVk0mIHZtKQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Z2V0T3Bjb2RlSUQoZ2V0T3Bjb2RlKG9wY29kZUlEKSkgPT0gb3Bjb2RlSUQpOwogICAgICAgICB9
CiAgICAgfSk7Ci0jZW5kaWYgLy8gVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkKKyNlbmRp
ZiAvLyBBU1NFUlRfRU5BQkxFRAogfQogCiBJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKQEAg
LTM1MSw3ICszNTEsNyBAQCBJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIH0KIAogI2lmIEVO
QUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCi0jaWYgIVVTRShMTElOVF9FTUJFRERFRF9PUENP
REVfSUQpIHx8ICFBU1NFUlRfRElTQUJMRUQKKyNpZiAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09E
RV9JRCkgfHwgQVNTRVJUX0VOQUJMRUQKIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIEludGVy
cHJldGVyOjpvcGNvZGVJRFRhYmxlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxPcGNvZGUsIE9wY29kZUlEPj4gb3Bjb2RlSURUYWJsZTsKQEAgLTM2NSwxMCArMzY1LDEw
IEBAIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4mIEludGVycHJldGVyOjoKIAogICAgIHJldHVy
biBvcGNvZGVJRFRhYmxlOwogfQotI2VuZGlmIC8vICFVU0UoTExJTlRfRU1CRURERURfT1BDT0RF
X0lEKSB8fCAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYgLy8gIVVTRShMTElOVF9FTUJFRERFRF9P
UENPREVfSUQpIHx8IEFTU0VSVF9FTkFCTEVECiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dP
VE9fT1BDT0RFUykKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
Ym9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKICNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19PUENPREVTKQpAQCAtMzc5LDcgKzM3OSw3IEBAIGJvb2wgSW50ZXJwcmV0
ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUKICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgb3Bj
b2RlIDw9IG9wX2VuZDsKICNlbmRpZgogfQotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBjbGFzcyBHZXRTdGFja1RyYWNlRnVuY3RvciB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgaW5saW5lIE9wY29kZUlEIGdldE9w
Y29kZUlEKE9wY29kZSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgc3RhdGljIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKICNlbmRpZgogCkBAIC0x
NDQsOSArMTQ0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKLSNpZiAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09E
RV9JRCkgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmICFVU0UoTExJTlRfRU1CRURERURfT1BDT0RF
X0lEKSB8fCBBU1NFUlRfRU5BQkxFRAogICAgICAgICBzdGF0aWMgSGFzaE1hcDxPcGNvZGUsIE9w
Y29kZUlEPiYgb3Bjb2RlSURUYWJsZSgpOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRC4KLSNl
bmRpZiAvLyAhVVNFKExMSU5UX0VNQkVEREVEX09QQ09ERV9JRCkgfHwgIUFTU0VSVF9ESVNBQkxF
RAorI2VuZGlmIC8vICFVU0UoTExJTlRfRU1CRURERURfT1BDT0RFX0lEKSB8fCBBU1NFUlRfRU5B
QkxFRAogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX09QQ09ERVMpCiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBBc3NlbWJs
eUhlbHBlcnM6OmNsZWFyU2FtcGxpbmdGbGFnKAogfQogI2VuZGlmCiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICNpZiBVU0UoSlNWQUxVRTY0KQogdm9pZCBBc3Nl
bWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoR1BSUmVnIGdwcikKIHsKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0QXJndW1lbnRDCiAgICAgb2su
bGluayh0aGlzKTsKIH0KIAotI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBB
U1NFUlRfRU5BQkxFRAogCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6aml0UmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKFZNJiB2bSkKIHsKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6ZW1pdFN0b3JlU3RydWN0dXJlCiAgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmVQ
dHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVl
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGppdC5zdG9yZTY0KFRydXN0ZWRJbW02NChzdHJ1
Y3R1cmVQdHItPmlkQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAg
ICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0g
aml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSk7
CiAgICAgICAgIGppdC5hYm9ydFdpdGhSZWFzb24oQUhTdHJ1Y3R1cmVJRElzVmFsaWQpOwogICAg
ICAgICBjb3JyZWN0U3RydWN0dXJlLmxpbmsoJmppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZUNhbGxPcGVyYXRpb24oVk0m
IHZtKQogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKHZtKTsKLSNpZiAhVVNFKEJVSUxUSU5f
RlJBTUVfQUREUkVTUykgfHwgIUFTU0VSVF9ESVNBQkxFRAorI2lmICFVU0UoQlVJTFRJTl9GUkFN
RV9BRERSRVNTKSB8fCBBU1NFUlRfRU5BQkxFRAogICAgICAgICBzdG9yZVB0cihHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgJnZtLnRvcENhbGxGcmFtZSk7CiAjZW5kaWYKICAgICB9CkBAIC0x
Mjc3LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWJ1Z0NhbGwoVk0mLCBWX0RlYnVn
T3BlcmF0aW9uX0VQUCBmdW5jdGlvbiwgdm9pZCogYXJndW1lbnQpOwogCiAgICAgLy8gVGhlc2Ug
bWV0aG9kcyBKSVQgZ2VuZXJhdGUgZHluYW1pYywgZGVidWctb25seSBjaGVja3MgLSBha2luIHRv
IEFTU0VSVHMuCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
dm9pZCBqaXRBc3NlcnRJc0ludDMyKEdQUlJlZyk7CiAgICAgdm9pZCBqaXRBc3NlcnRJc0pTSW50
MzIoR1BSUmVnKTsKICAgICB2b2lkIGppdEFzc2VydElzSlNOdW1iZXIoR1BSUmVnKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0JpbmFyeVN3aXRjaC5jcHAJKHJldmlzaW9uIDI1
NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQmluYXJ5U3dpdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBCaW5hcnlTd2l0Y2g6OkJpbmFyeVN3aXRjaChH
UFJSZWcgdmFsdWUsCiAgICAgaWYgKEJpbmFyeVN3aXRjaEludGVybmFsOjp2ZXJib3NlKQogICAg
ICAgICBkYXRhTG9nKCJTb3J0ZWQgY2FzZXM6ICIsIGxpc3REdW1wKG1fY2FzZXMpLCAiXG4iKTsK
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBtX2Nhc2VzLnNpemUoKTsgKytpKQogICAgICAgICBBU1NFUlQobV9j
YXNlc1tpIC0gMV0gPCBtX2Nhc2VzW2ldLCBpLCBtX2Nhc2VzLnNpemUoKSwgbV9jYXNlc1tpXS52
YWx1ZSwgbV9jYXNlc1tpXS5pbmRleCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODks
NyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIE51bWJlck9mUmVnaXN0ZXJzLCB0
eXBlbmFtZSBSZWdUeXBlPgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cFN0dWJBcmdzKHN0
ZDo6YXJyYXk8UmVnVHlwZSwgTnVtYmVyT2ZSZWdpc3RlcnM+IGRlc3RpbmF0aW9ucywgc3RkOjph
cnJheTxSZWdUeXBlLCBOdW1iZXJPZlJlZ2lzdGVycz4gc291cmNlcykKICAgICB7Ci0gICAgICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewog
ICAgICAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OwogICAgICAgICAgICAgZm9yIChSZWdUeXBlIGRl
c3QgOiBkZXN0aW5hdGlvbnMpCiAgICAgICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKQEAgLTEw
NCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihzb3VyY2VzW2ldLCBkZXN0aW5hdGlvbnNbaV0pKTsKICAgICAgICAgfQogCi0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGF1dG8gbnVt
VW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CiAgICAgICAgICAgICBSZWdpc3Rl
clNldCBzZXQ7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBDYWxsRnJh
bWVTaHVmZmxlcjo6c3BpbGwoQ2FjaGVkUmVjbwogCiB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpl
bWl0RGVsdGFDaGVjaygpCiB7Ci0gICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKKyAgICBpZiAoIUFT
U0VSVF9FTkFCTEVEKQogICAgICAgICByZXR1cm47CiAKICAgICBHUFJSZWcgc2NyYXRjaEdQUiB7
IGdldEZyZWVHUFIoKSB9OwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZs
ZXI6OnByZXBhcmVBbnkoKQogICAgIC8vIHN0YWNrLCBhbmQgd3JpdHRlbiBldmVyeXRoaW5nIHdl
IGhhZCB0byB0byB0aGUgc3RhY2suCiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2co
IiAgQ2FsbGVlIGZyYW1lIGlzIGZ1bGx5IHNldCB1cFxuIik7Ci0gICAgaWYgKCFBU1NFUlRfRElT
QUJMRUQpIHsKKyAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgZm9yIChWaXJ0dWFs
UmVnaXN0ZXIgcmVnID0gZmlyc3ROZXcoKTsgcmVnIDw9IGxhc3ROZXcoKTsgcmVnICs9IDEpCiAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHJlZywgIWdldE5ldyhyZWcpKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBKSVQ6OmVtaXROb3RpZnlXcml0ZShHUFJSZWcgcG9pbnRlcgogCiB2b2lkIEpJVDo6YXNz
ZXJ0U3RhY2tQb2ludGVyT2Zmc2V0KCkKIHsKLSAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQorICAg
IGlmICghQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhZGRQdHIo
VHJ1c3RlZEltbTMyKHN0YWNrUG9pbnRlck9mZnNldEZvcihtX2NvZGVCbG9jaykgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QwKTsKQEAgLTc3MCw3ICs3NzAsNyBA
QCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIG1vdmUo
cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGVtaXROYWtl
ZENhbGwobV92bS0+Z2V0Q1RJU3R1Yihhcml0eUZpeHVwR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8
Tm9QdHJUYWc+KCkpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIG1fYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgoKTsgLy8gUmVzZXQgdGhp
cywgaW4gb3JkZXIgdG8gZ3VhcmQgaXRzIHVzZSB3aXRoIEFTU0VSVHMuCiAjZW5kaWYKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDU5LDcgKzEwNTksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9o
aW50KGNvbnN0IEluCiAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PcHRpbWl6ZSwg
JnZtKCksIG1fYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSk7CiAgICAgICAgIEp1bXAgbm9PcHRpbWl6
ZWRFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOwotICAgICAgICBp
ZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAg
ICAgICAgICAgIEp1bXAgb2sgPSBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZXR1
cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PigxMDAwKSkpKTsKICAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRVbnJl
YXNvbmFibGVMb29wSGludEp1bXBUYXJnZXQpOwogICAgICAgICAgICAgb2subGluayh0aGlzKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQwLDcg
Kzg0MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9mcm9tX3Njb3BlKGNvbnN0IEkKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbW92ZShyZWdUMCwgYmFzZSk7CiAgICAgICAgICAgICBsb2Fk
MzIob3BlcmFuZFNsb3QsIG9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCkgeworICAgICAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAg
SnVtcCBpc091dE9mTGluZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgb2Zmc2V0LCBU
cnVzdGVkSW1tMzIoZmlyc3RPdXRPZkxpbmVPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBhYm9y
dFdpdGhSZWFzb24oSklUT2Zmc2V0SXNOb3RPdXRPZkxpbmUpOwogICAgICAgICAgICAgICAgIGlz
T3V0T2ZMaW5lLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyMSw3ICs4MjEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZnJvbV9zY29wZShjb25zdCBJ
CiAgICAgICAgICAgICB9KSk7CiAKICAgICAgICAgICAgIGxvYWQzMihvcGVyYW5kU2xvdCwgb2Zm
c2V0KTsKLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAgICBp
ZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBKdW1wIGlzT3V0T2ZMaW5lID0g
YnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCBvZmZzZXQsIFRydXN0ZWRJbW0zMihmaXJzdE91
dE9mTGluZU9mZnNldCkpOwogICAgICAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRPZmZz
ZXRJc05vdE91dE9mTGluZSk7CiAgICAgICAgICAgICAgICAgaXNPdXRPZkxpbmUubGluayh0aGlz
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE0NSw3ICsxMTQ1LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xv
YmFsT2JqZWN0KgogICAgICAgICAgICAgICAgIG5ld0Nhc2VWYWx1ZSA9IGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4odmFyaWFudC5pbnRlcm5hbEZ1bmN0aW9uKCkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7
CiAgICAgICAgICAgICBpZiAoY2FzZVZhbHVlcy5jb250YWlucyhuZXdDYXNlVmFsdWUpKSB7CiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiRVJST1I6IEF0dGVtcHQgdG8gYWRkIGR1cGxpY2F0ZSBj
YXNlIHZhbHVlLlxuIik7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygiRXhpc3RpbmcgY2FzZSB2
YWx1ZXM6ICIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogdGVtcGxhdGU8dHlwZW5hbWUgVGFnVHlwZT4KIGlubGluZSB2b2lkIGVt
aXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHBvaW50ZXJHUFIs
IFRhZ1R5cGUgdGFnKQogewotICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCisgICAgaWYgKCFBU1NF
UlRfRU5BQkxFRCkKICAgICAgICAgcmV0dXJuOwogICAgIENDYWxsSGVscGVyczo6SnVtcCBpc05v
blplcm8gPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIHBvaW50ZXJH
UFIpOwogICAgIGppdC5hYm9ydFdpdGhSZWFzb24oVEdJbnZhbGlkUG9pbnRlcik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRpb25zKFZN
JiB2bSkKICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oKHJlaW50ZXJw
cmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPEpTQ2VsbD4qPigweDQwMDApLT5zbG90KCkpKSAtIDB4NDAw
MCkpOwogCiAgICAgLy8gRklYTUU6IG1ha2UgdGhlc2UgYXNzZXJ0aW9ucyBsZXNzIGhvcnJpYmxl
LgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFZlY3Rvcjxp
bnQ+IHRlc3RWZWN0b3I7CiAgICAgdGVzdFZlY3Rvci5yZXNpemUoNDIpOwogICAgIEFTU0VSVChi
aXR3aXNlX2Nhc3Q8dWludDMyX3QqPigmdGVzdFZlY3Rvcilbc2l6ZW9mKHZvaWQqKS9zaXplb2Yo
dWludDMyX3QpICsgMV0gPT0gNDIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcgQEAKICNkZWZpbmUgT0ZGTElORV9BU01fQUREUkVT
UzY0IDAKICNlbmRpZgogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKICNlbHNlCiAjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA1LDcgKzkwNSw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSAKICAgICB9CiB9CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgaXNTYWZlQnVpbHRpbklkZW50
aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKIHsKICAgICBpZiAoIWlkZW50
KQpAQCAtOTI0LDcgKzkyNCw3IEBAIGJvb2wgaXNTYWZlQnVpbHRpbklkZW50aWZpZXIoVk0mIHZt
LCBjb24KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlm
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKICAgICAKIHRlbXBsYXRlIDw+CiB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIE9wdGlv
blNldDxMZXhlckZsYWdzPiBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMywxMSAr
MzMzLDExIEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD4KICAgICBy
ZXR1cm4gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIobV92bSwgY2hhcmFj
dGVycywgbGVuZ3RoKTsKIH0KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAotQUxXQVlTX0lOTElORSBi
b29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0
dXJuIHRydWU7IH0KLSNlbHNlCisjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgaXNTYWZlQnVpbHRp
bklkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyKik7Ci0jZW5kaWYKKyNlbHNlCitBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTYWZlQnVpbHRpbklkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlm
aWVyKikgeyByZXR1cm4gdHJ1ZTsgfQorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4
RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuKiB0b2tlblJlY29yZCwgT3B0aW9uU2V0PExleGVyRmxh
Z3M+IGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKQEAgLTM3NSw3ICszNzUsNyBAQCBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFCiAKICAgICAvLyBDcmVhdGUgdGhl
IGlkZW50aWZpZXIgaWYgbmVlZGVkCiAgICAgaWYgKGxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJG
bGFnczo6RG9udEJ1aWxkS2V5d29yZHMpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgICAgICYmICFtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24KICNlbmRpZgog
ICAgICAgICApCkBAIC0zOTAsNyArMzkwLDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6bGV4RQogICAgIEFTU0VSVCh0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA+PSB0
b2tlbkxvY2F0aW9uLT5saW5lU3RhcnRPZmZzZXQpOwogICAgIHRva2VuUmVjb3JkLT5tX3N0YXJ0
UG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHRva2VuUmVjb3JkLT5tX2VuZFBvc2l0aW9u
ID0gY3VycmVudFBvc2l0aW9uKCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpZiAo
IWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1fdm0sIHRva2VuRGF0YS0+aWRlbnQpKQogICAgICAg
ICAgICAgcmV0dXJuIEVSUk9SVE9LOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTUgKzE2NSwxNSBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gJnNsb3RGb3IoMCk7CiAgICAgfQogCi0jaWYgQVNTRVJUX0RJ
U0FCTEVECi0gICAgdm9pZCBzZXROZWVkc092ZXJmbG93Q2hlY2soKSB7IH0KLSAgICB2b2lkIGNs
ZWFyTmVlZHNPdmVyZmxvd0NoZWNrKCkgeyB9Ci0jZWxzZQorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgdm9pZCBzZXROZWVkc092ZXJmbG93Q2hlY2soKSB7IG1fbmVlZHNPdmVyZmxvd0NoZWNrID0g
dHJ1ZTsgfQogICAgIHZvaWQgY2xlYXJOZWVkc092ZXJmbG93Q2hlY2soKSB7IG1fbmVlZHNPdmVy
Zmxvd0NoZWNrID0gZmFsc2U7IH0KIAogICAgIGJvb2wgbV9uZWVkc092ZXJmbG93Q2hlY2sgeyBm
YWxzZSB9OwotI2VuZGlmCisjZWxzZQorICAgIHZvaWQgc2V0TmVlZHNPdmVyZmxvd0NoZWNrKCkg
eyB9CisgICAgdm9pZCBjbGVhck5lZWRzT3ZlcmZsb3dDaGVjaygpIHsgfQorI2VuZGlmIC8vIEFT
U0VSVF9FTkFCTEVECiAgICAgaW50IG1fc2l6ZTsKICAgICBpbnQgbV9jYXBhY2l0eTsKICAgICBF
bmNvZGVkSlNWYWx1ZSBtX2lubGluZUJ1ZmZlcltpbmxpbmVDYXBhY2l0eV07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaAkocmV2aXNpb24gMjU0MDQ4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IENvbnRpZ3VvdXNEYXRhIHsKICAgICBDb250aWd1
b3VzRGF0YSgpID0gZGVmYXVsdDsKICAgICBDb250aWd1b3VzRGF0YShUKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKQogICAgICAgICA6IG1fZGF0YShkYXRhKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICNlbmRpZgogICAg
IHsKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IENvbnRpZ3VvdXNEYXRhIHsKICAgICBzdHJ1Y3Qg
RGF0YSB7CiAgICAgICAgIERhdGEoVCYgbG9jYXRpb24sIEluZGV4aW5nVHlwZSBpbmRleGluZ01v
ZGUpCiAgICAgICAgICAgICA6IG1fZGF0YShsb2NhdGlvbikKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICwgbV9pc1dyaXRhYmxlKCFpc0NvcHlP
bldyaXRlKGluZGV4aW5nTW9kZSkpCiAjZW5kaWYKICAgICAgICAgewpAQCAtMTAzLDcgKzEwMyw3
IEBAIHN0cnVjdCBDb250aWd1b3VzRGF0YSB7CiAKIAogICAgICAgICBUJiBtX2RhdGE7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGJvb2wgbV9pc1dy
aXRhYmxlOwogI2VuZGlmCiAgICAgfTsKQEAgLTExNCwxMyArMTE0LDEzIEBAIHN0cnVjdCBDb250
aWd1b3VzRGF0YSB7CiAgICAgVCYgYXRVbnNhZmUoc2l6ZV90IGluZGV4KSB7IEFTU0VSVChpbmRl
eCA8IG1fbGVuZ3RoKTsgcmV0dXJuIG1fZGF0YVtpbmRleF07IH0KIAogICAgIFQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2RhdGE7IH0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0K
ICNlbmRpZgogCiBwcml2YXRlOgogICAgIFQqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzaXplX3QgbV9sZW5ndGggeyAw
IH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNo
TWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hhc2hNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwMyw3ICs3MDMsNyBAQCBw
cml2YXRlOgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25z
dAogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEFT
U0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSogaXRlciA9IG1f
aGVhZC0+bmV4dCgpOwogICAgICAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGVuZCA9IG1fdGFp
bC5nZXQoKTsKICAgICAgICAgICAgIHVpbnQzMl90IHNpemUgPSAwOwpAQCAtNzI5LDcgKzcyOSw3
IEBAIHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0QnVmZmVySXNFbXB0
eSgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAg
ICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2NhcGFjaXR5OyBpKyspCiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzRW1wdHkoYnVm
ZmVyKClbaV0pKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIs
NyArMjkyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKAogaW5s
aW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKFZNJiB2bSkgY29uc3QK
IHsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKFN0cnVjdHVyZSog
cm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+c3RydWN0dXJlKHZtKSkKICAgICAgICAgQVNTRVJU
KHJvb3RTdHJ1Y3R1cmUgPT0gcm9vdFN0cnVjdHVyZS0+c3RydWN0dXJlKHZtKSk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShy
ZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA5LDcgKzkwOSw3IEBAIEpTRnVuY3Rpb246OlBy
b3BlcnR5U3RhdHVzIEpTRnVuY3Rpb246OnIKICAgICByZXR1cm4gUHJvcGVydHlTdGF0dXM6OlJl
aWZpZWQ7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHZv
aWQgSlNGdW5jdGlvbjo6YXNzZXJ0VHlwZUluZm9GbGFnSW52YXJpYW50cygpCiB7CiAgICAgLy8g
SWYgeW91IGNoYW5nZSB0aGlzLCB5b3UnbGwgbmVlZCB0byB1cGRhdGUgc3BlY3VsYXRpb25Gcm9t
Q2xhc3NJbmZvLgpAQCAtOTE5LDYgKzkxOSw2IEBAIHZvaWQgSlNGdW5jdGlvbjo6YXNzZXJ0VHlw
ZUluZm9GbGFnSW52YXIKICAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZm8gIT0g
SlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VO
QUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwxMCAr
MjEwLDEwIEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlTdGF0dXMgcmVpZnlMYXp5TmFtZUlmTmVl
ZGVkKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUpOwogICAgIFByb3BlcnR5U3Rh
dHVzIHJlaWZ5TGF6eUJvdW5kTmFtZUlmTmVlZGVkKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBQcm9w
ZXJ0eU5hbWUpOwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECi0gICAgdm9pZCBhc3NlcnRUeXBlSW5m
b0ZsYWdJbnZhcmlhbnRzKCkgeyB9Ci0jZWxzZQorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdm9p
ZCBhc3NlcnRUeXBlSW5mb0ZsYWdJbnZhcmlhbnRzKCk7CisjZWxzZQorICAgIHZvaWQgYXNzZXJ0
VHlwZUluZm9GbGFnSW52YXJpYW50cygpIHsgfQogI2VuZGlmCiAKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
aGFzTwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3du
UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSk7CiB9CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbEZy
YW1lLT5hcmd1bWVudCgwKS5pc0Jvb2xlYW4oKSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZQogICAgIFJFTEVBU0VfQVNTRVJUX1dJ
VEhfTUVTU0FHRShmYWxzZSwgIkpTIGFzc2VydGlvbiBmYWlsZWQgYXQgbGluZSAldSBpbjpcbiVz
XG4iLCBsaW5lLCBjb2RlQmxvY2stPnNvdXJjZUNvZGVGb3JUb29scygpLmRhdGEoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlm
IC8vIEFTU0VSVF9FTkFCTEVECiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkBAIC0xMTY4LDcgKzEx
NjgsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5OYU4sIGpzTmFOKCksIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPkluZmluaXR5LCBqc051bWJlcihzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OmluZmluaXR5KCkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
CiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkLCBqc1VuZGVmaW5lZCgpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSks
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIEdsb2Jh
bFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hc3NlcnRQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDEsIFN0cmluZygpLCBhc3Nl
cnRDYWxsKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogI2VuZGlmCiAgICAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTExLDcgKzUxMSw3IEBAIHB1Ymxp
YzoKICAgICBDb25zb2xlQ2xpZW50KiBtX2NvbnNvbGVDbGllbnQgeyBudWxscHRyIH07CiAgICAg
T3B0aW9uYWw8dW5zaWduZWQ+IG1fc3RhY2tUcmFjZUxpbWl0OwogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgY29uc3QgSlNHbG9iYWxPYmplY3QqIG1fZ2xv
YmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5IHsgbnVsbHB0ciB9OwogI2VuZGlmCiAKQEAgLTk2Myw3
ICs5NjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVz
c2FnZSA9IGVycm9yTWVzc2FnZTsKICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0QXRE
ZWJ1Z2dlckVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3RBdERlYnVnZ2VyRW50
cnk7IH0KICAgICB2b2lkIHNldEdsb2JhbE9iamVjdEF0RGVidWdnZXJFbnRyeShjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSB7IG1fZ2xvYmFsT2JqZWN0QXREZWJ1Z2dlckVudHJ5
ID0gZ2xvYmFsT2JqZWN0OyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM2LDcgKzQz
Niw3IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWwKIHsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIHdhc0NoZWNraW5nRm9yRGVmYXVs
dE1hcmtWaW9sYXRpb24gPSB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0
aW9uOwogICAgIHZpc2l0b3IubV9pc0NoZWNraW5nRm9yRGVmYXVsdE1hcmtWaW9sYXRpb24gPSBm
YWxzZTsKICNlbmRpZgpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSlNPYmplY3Q6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWwKICAgICAKICAgICB0aGlzT2JqZWN0LT52aXNpdEJ1dHRlcmZseSh2
aXNpdG9yKTsKICAgICAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gd2FzQ2hl
Y2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbjsKICNlbmRpZgogfQpAQCAtNDkyLDcgKzQ5Miw3
IEBAIHZvaWQgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwKIHsKICAgICBKU0Zp
bmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRmluYWxPYmplY3QqPihjZWxsKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCB3YXNDaGVja2luZ0Zv
ckRlZmF1bHRNYXJrVmlvbGF0aW9uID0gdmlzaXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFy
a1Zpb2xhdGlvbjsKICAgICB2aXNpdG9yLm1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0
aW9uID0gZmFsc2U7CiAjZW5kaWYKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEpTRmluYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsCiAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
c0hpZGRlbih0aGlzT2JqZWN0LT5pbmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKICAgICB9
CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdmlz
aXRvci5tX2lzQ2hlY2tpbmdGb3JEZWZhdWx0TWFya1Zpb2xhdGlvbiA9IHdhc0NoZWNraW5nRm9y
RGVmYXVsdE1hcmtWaW9sYXRpb247CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0SW5saW5lcy5oCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRJbmRl
eFF1aWNrbHlGb3IKICAgICAKIGlubGluZSB2b2lkIEpTT2JqZWN0Ojp2YWxpZGF0ZVB1dE93bkRh
dGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgQVNT
RVJUKHZhbHVlKTsKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAo
dmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CkBA
IC00ODgsMTEgKzQ4OCwxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6dmFsaWRhdGVQdXRPd25E
YXRhCiAgICAgICAgIGlmIChhdXRvIGVudHJ5ID0gZmluZFByb3BlcnR5SGFzaEVudHJ5KHZtLCBw
cm9wZXJ0eU5hbWUpKQogICAgICAgICAgICAgQVNTRVJUKCEoZW50cnktPnZhbHVlLT5hdHRyaWJ1
dGVzKCkgJiAoUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkN1c3RvbUFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSkpOwogICAgIH0K
LSNlbHNlCisjZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKICAgICBVTlVTRURfUEFSQU0odm0p
OwogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwogICAgIFVOVVNFRF9QQVJBTSh2YWx1
ZSk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBub3QgQVNTRVJUX0VOQUJMRUQKIH0KIAogaW5saW5lIGJv
b2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBh
c3NlcnRWYXJpYWJsZUlzSW5UaGlzT2JqZWN0KFdyaXRlQmFycmllcjxVbmtub3duPiogdmFyaWFi
bGVQb2ludGVyKQogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpCisgICAgICAg
IGlmIChBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIGZpbmRWYXJpYWJsZUluZGV4KHZhcmlh
YmxlUG9pbnRlcik7CiAgICAgICAgIHJldHVybiB2YXJpYWJsZVBvaW50ZXI7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVy
YWxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIGNv
bnN0ZXhwciBjb25zdCBUb2tlblR5cGUgVG9rZW5UeQogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJU
eXBlPgogQUxXQVlTX0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46Okxl
eGVyOjpsZXgoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPiYgdG9rZW4pCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50VG9rZW5JRCsr
OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQ
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRl
cmFsUGFyc2VyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBUb2tlblR5cGUgbmV4dCgpOwogICAgICAgICAK
LSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAgICAgICAgdHlwZWRl
ZiBjb25zdCBMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+KiBMaXRlcmFsUGFyc2VyVG9rZW5Q
dHI7CiAKICAgICAgICAgTGl0ZXJhbFBhcnNlclRva2VuUHRyIGN1cnJlbnRUb2tlbigpCkBAIC0x
NjcsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIExp
dGVyYWxQYXJzZXJUb2tlblB0cigqdGhpcyk7CiAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8v
IEFTU0VSVF9FTkFCTEVECiAgICAgICAgIAogICAgICAgICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdl
KCkgeyByZXR1cm4gbV9sZXhFcnJvck1lc3NhZ2U7IH0KICAgICAgICAgCkBAIC0xODMsNyArMTgz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgQ2hhclR5cGUqIG1fcHRyOwogICAgICAgICBj
b25zdCBDaGFyVHlwZSogbV9lbmQ7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgbV9idWlsZGVyOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICB1bnNpZ25l
ZCBtX2N1cnJlbnRUb2tlbklEIHsgMCB9OwogI2VuZGlmCiAgICAgfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlzaW9uIDI1NDA0OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTAxLDcgKzUwMSw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc011bChKU0dsb2Jh
bE9iamUKIAogaW5saW5lIGJvb2wgc2NyaWJibGVGcmVlQ2VsbHMoKQogewotICAgIHJldHVybiAh
QVNTRVJUX0RJU0FCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7CisgICAgcmV0
dXJuIEFTU0VSVF9FTkFCTEVEIHx8IE9wdGlvbnM6OnNjcmliYmxlRnJlZUNlbGxzKCk7CiB9CiAK
ICNkZWZpbmUgU0NSSUJCTEVfV09SRCBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMHhiYWRiZWVmMCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAkocmV2
aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDggKzIyMSw4IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KEJvb2wsIGIzQWx3YXlzRmFpbHNCZWZvcmVD
b21waWxlLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCBiM0Fsd2F5c0Zh
aWxzQmVmb3JlTGluaywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZnRs
Q3Jhc2hlcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgLyogZm9vbC1wcm9vZiB3YXkgb2YgY2hl
Y2tpbmcgdGhhdCB5b3UgZW5kZWQgdXAgaW4gdGhlIEZUTC4gOy0pICovXAotICAgIHYoQm9vbCwg
Y2xvYmJlckFsbFJlZ3NJbkZUTElDU2xvd1BhdGgsICFBU1NFUlRfRElTQUJMRUQsIE5vcm1hbCwg
bnVsbHB0cikgXAotICAgIHYoQm9vbCwgZW5hYmxlSklURGVidWdBc3NlcnRpb25zLCAhQVNTRVJU
X0RJU0FCTEVELCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIGNsb2JiZXJBbGxSZWdz
SW5GVExJQ1Nsb3dQYXRoLCBBU1NFUlRfRU5BQkxFRCwgTm9ybWFsLCBudWxscHRyKSBcCisgICAg
dihCb29sLCBlbmFibGVKSVREZWJ1Z0Fzc2VydGlvbnMsIEFTU0VSVF9FTkFCTEVELCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZUFjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVkLCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUsIDgs
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxp
emF0aW9uLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShKSVQpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiBib29sIFZNOjpzX2NhblVzZUpJVElzU2V0ID0gZmFsc2U7CiAjZW5k
aWYKIGJvb2wgVk06OnNfY2FuVXNlSklUID0gZmFsc2U7CkBAIC0yNzEsNyArMjcxLDcgQEAgYm9v
bCBWTTo6Y2FuVXNlQXNzZW1ibGVyKCkKIHZvaWQgVk06OmNvbXB1dGVDYW5Vc2VKSVQoKQogewog
I2lmIEVOQUJMRShKSVQpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNfY2FuVXNlSklUSXNTZXQpOwogICAgIHNfY2FuVXNlSklU
SXNTZXQgPSB0cnVlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgwOCw5ICs4MDgsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBjYW5Vc2VKSVQoKQogICAgIHsKICNpZiBFTkFCTEUoSklUKQotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoc19jYW5Vc2VKSVRJc1Nl
dCk7Ci0jZW5kaWYKKyAgICAgICAgQVNTRVJUKHNfY2FuVXNlSklUSXNTZXQpOwogICAgICAgICBy
ZXR1cm4gc19jYW5Vc2VKSVQ7CiAjZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjM5
LDcgKzEyMzcsNyBAQCBwcml2YXRlOgogICAgIHVpbnRwdHJfdCBtX2N1cnJlbnRXZWFrUmVmVmVy
c2lvbiB7IDAgfTsKIAogI2lmIEVOQUJMRShKSVQpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgc19jYW5V
c2VKSVRJc1NldDsKICNlbmRpZgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIHNf
Y2FuVXNlSklUOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zmc2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zmc2V0
LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Zh
ck9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgY2hlY2tTYW5pdHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKEFTU0VS
VF9ESVNBQkxFRCkKKyAgICAgICAgaWYgKCFBU1NFUlRfRU5BQkxFRCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAobV9raW5kKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0NCw3ICs0NDQsNyBAQCBwcml2YXRlOgogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCFBU1NFUlRf
RElTQUJMRUQpIHsKKyAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICB1
aW50MzJfdCBzaXplID0gMDsKICAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHRoaXMtPmJ1ZmZl
cigpOwogICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgbV9jYXBh
Y2l0eTsgKytpbmRleCkgewpAQCAtNDY5LDcgKzQ2OSw3IEBAIHByaXZhdGU6CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgYXNzZXJ0QnVmZmVySXNFbXB0eSgpIGNvbnN0CiAgICAgewotICAgICAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgICAgICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhcGFjaXR5OyBpKyspCiAg
ICAgICAgICAgICAgICAgQVNTRVJUKChidWZmZXIoKSArIGkpLT5pc0VtcHR5KCkpOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMSw3ICszMzEs
NyBAQCBwcml2YXRlOgogICAgIEIzOjpUeXBlIHRvQjNSZXN1bHRUeXBlKEJsb2NrU2lnbmF0dXJl
IHJldHVyblR5cGUpOwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2YWxpZGF0ZUluc3QoSW5zdCYg
aW5zdCkKICAgICB7Ci0gICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIGlm
IChBU1NFUlRfRU5BQkxFRCkgewogICAgICAgICAgICAgaWYgKCFpbnN0LmlzVmFsaWRGb3JtKCkp
IHsKICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkluc3QgdmFsaWRhdGlvbiBmYWlsZWQ6Iik7
CiAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKGluc3QsICJcbiIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkzLDcgKzE5OTMsNyBAQCBFeHBlY3RlZDxzdGQ6OnVu
aXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvCiAgICAgaXJHZW5lcmF0b3IuaW5zZXJ0Q29uc3RhbnRz
KCk7CiAKICAgICBwcm9jZWR1cmUucmVzZXRSZWFjaGFiaWxpdHkoKTsKLSAgICBpZiAoIUFTU0VS
VF9ESVNBQkxFRCkKKyAgICBpZiAoQVNTRVJUX0VOQUJMRUQpCiAgICAgICAgIHZhbGlkYXRlKHBy
b2NlZHVyZSwgIkFmdGVyIHBhcnNpbmc6XG4iKTsKIAogICAgIGRhdGFMb2dJZihXYXNtQjNJUkdl
bmVyYXRvckludGVybmFsOjp2ZXJib3NlLCAiUHJlIFNTQTogIiwgcHJvY2VkdXJlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCShy
ZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAg
ICAgTkVWRVJfSU5MSU5FIFVuZXhwZWN0ZWRSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlk
YXRpb25GYWlsKGNvbnN0IEFyZ3MmLi4uIGFyZ3MpIGNvbnN0CiAgICAgewogICAgICAgICB1c2lu
ZyBuYW1lc3BhY2UgRmFpbHVyZUhlbHBlcjsgLy8gU2VlIEFETCBjb21tZW50IGluIFdhc21QYXJz
ZXIuaC4KLSAgICAgICAgaWYgKFVOTElLRUxZKCFBU1NFUlRfRElTQUJMRUQgJiYgT3B0aW9uczo6
Y3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGUoKSkpCisgICAgICAgIGlmIChVTkxJS0VM
WShBU1NFUlRfRU5BQkxFRCAmJiBPcHRpb25zOjpjcmFzaE9uRmFpbGVkV2ViQXNzZW1ibHlWYWxp
ZGF0ZSgpKSkKICAgICAgICAgICAgIFdURkJyZWFrcG9pbnRUcmFwKCk7CiAKICAgICAgICAgU3Ry
aW5nUHJpbnRTdHJlYW0gb3V0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUxMSW50R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNDEsNyArMzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5j
eSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICAvLyBUaGUgcnVsZXMgZm9yIGxvY2FscyBhbmQgY29uc3RhbnRzIGluIHRoZSBzdGFjayBh
cmU6CiAgICAgICAgIC8vIDEpIExvY2FscyBoYXZlIHRvIGJlIG1hdGVyaWFsaXplZCB3aGVuZXZl
ciBhIGNvbnRyb2wgZW50cnkgaXMgcHVzaGVkIHRvIHRoZSBjb250cm9sIHN0YWNrIChpLmUuIGV2
ZXJ5IHRpbWUgd2Ugc3BsaXRTdGFjaykKICAgICAgICAgLy8gICAgTk9URTogVGhpcyBpcyBhIHRy
YWRlLW9mZiBzbyB0aGF0IHNldF9sb2NhbCBkb2VzIG5vdCBoYXZlIHRvIHdhbGsgdXAgdGhlIGNv
bnRyb2wgc3RhY2sgbG9va2luZyBmb3IgZGVsYXllZCBnZXRfbG9jYWxzCkBAIC0zNTcsNyArMzU3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Fsa0V4cHJlc3Npb25TdGFjayhtX3BhcnNlci0+ZXhw
cmVzc2lvblN0YWNrKCksIFsmXShWaXJ0dWFsUmVnaXN0ZXIgZXhwcmVzc2lvbiwgVmlydHVhbFJl
Z2lzdGVyIHNsb3QpIHsKICAgICAgICAgICAgIEFTU0VSVChleHByZXNzaW9uID09IHNsb3QgfHwg
ZXhwcmVzc2lvbi5pc0NvbnN0YW50KCkgfHwgZXhwcmVzc2lvbi5pc0FyZ3VtZW50KCkgfHwgZXhw
cmVzc2lvbi50b0xvY2FsKCkgPCBtX2NvZGVCbG9jay0+bV9udW1WYXJzKTsKICAgICAgICAgfSk7
Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogICAgIH0KIAogICAgIHZvaWQgbWF0
ZXJpYWxpemVDb25zdGFudHNBbmRMb2NhbHMoU3RhY2smIGV4cHJlc3Npb25TdGFjaykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksNyArODksNyBAQCBib29sIFBsYW46OnRyeVJlbW92ZUNvbnRleHRBbmRDYW5jZWxJ
ZkxhCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKIAotICAgIGlmICghQVNTRVJU
X0RJU0FCTEVEKSB7CisgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgIC8vIFdlIGFs
bG93IHRoZSBmaXJzdCBjb21wbGV0aW9uIHRhc2sgdG8gbm90IGhhdmUgYSBDb250ZXh0LgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9jb21wbGV0aW9uVGFza3Muc2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICBBU1NFUlQobV9jb21wbGV0aW9uVGFza3NbaV0uZmlyc3QpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCShy
ZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlv
blBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAg
TkVWRVJfSU5MSU5FIFVuZXhwZWN0ZWRSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGZhaWwoQXJn
cy4uLiBhcmdzKSBjb25zdAogICAgIHsKICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEZhaWx1cmVI
ZWxwZXI7IC8vIFNlZSBBREwgY29tbWVudCBpbiBuYW1lc3BhY2UgYWJvdmUuCi0gICAgICAgIGlm
IChVTkxJS0VMWSghQVNTRVJUX0RJU0FCTEVEICYmIE9wdGlvbnM6OmNyYXNoT25GYWlsZWRXZWJB
c3NlbWJseVZhbGlkYXRlKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoQVNTRVJUX0VOQUJMRUQg
JiYgT3B0aW9uczo6Y3Jhc2hPbkZhaWxlZFdlYkFzc2VtYmx5VmFsaWRhdGUoKSkpCiAgICAgICAg
ICAgICBDUkFTSCgpOwogCiAgICAgICAgIHJldHVybiBVbmV4cGVjdGVkUmVzdWx0KG1ha2VTdHJp
bmcoIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgIl9zLCBTdHJpbmc6
Om51bWJlcihtX29mZnNldCArIG1fb2Zmc2V0SW5Tb3VyY2UpLCAiOiAiX3MsIG1ha2VTdHJpbmco
YXJncykuLi4pKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9u
cy5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2VjdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVE
CiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfQkVHSU4KICNlbmRpZgogCkBAIC0xMDYsNyAr
MTA2LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoU2VjdGlvbiBzZQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VS
VF9FTkFCTEVECiBJR05PUkVfUkVUVVJOX1RZUEVfV0FSTklOR1NfRU5ECiAjZW5kaWYKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlSW5saW5l
cy5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2lnbmF0dXJlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIGlubGlu
ZSBjb25zdCBTaWduYXR1cmUmIFNpZ25hdHVyZUluZm9ybWEKIAogaW5saW5lIFNpZ25hdHVyZUlu
ZGV4IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
CiB7Ci0gICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKKyAgICBpZiAoQVNTRVJUX0VOQUJMRUQp
IHsKICAgICAgICAgU2lnbmF0dXJlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKICAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhpbmZvLm1fbG9jayk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoaW5mbywgaW5mby5tX3NpZ25hdHVyZVNldC5jb250YWlucyhTaWduYXR1cmVIYXNo
IHsgbWFrZVJlZihjb25zdF9jYXN0PFNpZ25hdHVyZSY+KHNpZ25hdHVyZSkpIH0pKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Xb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVdvcmtsaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgV29ya2xpc3Q6OmVucXVldWUo
UmVmPFBsYW4+IHBsYW4pCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAKLSAg
ICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgeworICAgIGlmIChBU1NFUlRfRU5BQkxFRCkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBtX3F1ZXVlKQogICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChlbGVtZW50LCBlbGVtZW50LnBsYW4uZ2V0KCkgIT0gJnBsYW4uZ2V0KCkpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9X
YXNtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGUKICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8m
IHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwogICAgIFJlZ2lzdGVyU2V0
IHRvU2F2ZSA9IHBpbm5lZFJlZ3MudG9TYXZlKG1vZGUpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgdG9TYXZlU2l6ZSA9IHRvU2F2ZS5u
dW1iZXJPZlNldEdQUnMoKTsKICAgICAvLyBUaGV5IHNob3VsZCBhbGwgYmUgY2FsbGVlIHNhdmVz
LgogICAgIHRvU2F2ZS5maWx0ZXIoUmVnaXN0ZXJTZXQ6OmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw3ICsxNzMsNyBAQCBwdHJkaWZmX3QgV2ViQXNzZW1ibHlGdW5jdGlvbjo6cHJldmlvdXNJCiB7
CiAgICAgcHRyZGlmZl90IHJlc3VsdCA9IGNhbGxlZVNhdmVzKCkubnVtYmVyT2ZTZXRSZWdpc3Rl
cnMoKSAqIHNpemVvZihDUFVSZWdpc3Rlcik7CiAgICAgcmVzdWx0ID0gLXJlc3VsdCAtIHNpemVv
ZihDUFVSZWdpc3Rlcik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgcHRyZGlmZl90IG1pbk9mZnNldCA9IDE7CiAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0
T2Zmc2V0JiByZWdBdE9mZnNldCA6IHVzZWRDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpIHsKICAgICAg
ICAgcHRyZGlmZl90IG9mZnNldCA9IHJlZ0F0T2Zmc2V0Lm9mZnNldCgpOwpJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNzUgQEAKKzIwMjAtMDEtMDYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIENvbnZlcnQgQVNTRVJUX0RJU0FCTEVEIHRvIEFTU0VSVF9FTkFCTEVELCBhbmQg
Zml4IHNvbWUgdGVzdHMgb2YgTkRFQlVHIHRoYXQgc2hvdWxkIGFjdHVhbGx5IHRlc3QgZm9yIEFT
U0VSVF9FTkFCTEVELgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA1Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIHd0Zi9BdXRvbWF0aWNUaHJlYWQu
Y3BwOgorICAgICAgICAoV1RGOjpBdXRvbWF0aWNUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3
dGYvQml0VmVjdG9yLmg6CisgICAgICAgICogd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW06Cisg
ICAgICAgIChSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbik6CisgICAgICAgICogd3RmL0Jsb29t
RmlsdGVyLmg6CisgICAgICAgICogd3RmL0NhbGxiYWNrQWdncmVnYXRvci5oOgorICAgICAgICAo
V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I6OkNhbGxiYWNrQWdncmVnYXRvcik6CisgICAgICAgICog
d3RmL0NoZWNrZWRBcml0aG1ldGljLmg6CisgICAgICAgIChXVEY6Om9ic2VydmVzT3ZlcmZsb3c8
QXNzZXJ0Tm9PdmVyZmxvdz4pOgorICAgICAgICAqIHd0Zi9DaGVja2VkQm9vbGVhbi5oOgorICAg
ICAgICAoQ2hlY2tlZEJvb2xlYW46OkNoZWNrZWRCb29sZWFuKToKKyAgICAgICAgKENoZWNrZWRC
b29sZWFuOjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKiB3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aDoKKyAgICAgICAgKFdURjo6Q29tcGxldGlvbkhhbmRsZXI8T3V0KToKKyAgICAgICAgKiB3dGYv
RGF0ZU1hdGguY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplRGF0ZXMpOgorICAgICAgICAq
IHd0Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6dHJ5QWxsb2NhdGVaZXJvZWRW
aXJ0dWFsUGFnZXMpOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6
S2V5VHJhaXRzPjo6Y2hlY2tLZXkpOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpjaGVja1Rh
YmxlQ29uc2lzdGVuY3lFeGNlcHRTaXplIGNvbnN0KToKKyAgICAgICAgKiB3dGYvTG9nZ2VySGVs
cGVyLmg6CisgICAgICAgICogd3RmL05hdHVyYWxMb29wcy5oOgorICAgICAgICAoV1RGOjpOYXR1
cmFsTG9vcHM6OmhlYWRlck9mIGNvbnN0KToKKyAgICAgICAgKiB3dGYvTmV2ZXJEZXN0cm95ZWQu
aDoKKyAgICAgICAgKFdURjo6TGF6eU5ldmVyRGVzdHJveWVkOjpjb25zdHJ1Y3QpOgorICAgICAg
ICAqIHd0Zi9PcHRpb25TZXQuaDoKKyAgICAgICAgKFdURjo6T3B0aW9uU2V0OjpPcHRpb25TZXQp
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9QdHJUYWcuaDoKKyAg
ICAgICAgKiB3dGYvUmVmQ291bnRlZC5oOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQmFzZTo6
ZGlzYWJsZVRocmVhZGluZ0NoZWNrcyk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjpl
bmFibGVUaHJlYWRpbmdDaGVja3NHbG9iYWxseSk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRC
YXNlOjpSZWZDb3VudGVkQmFzZSk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRCYXNlOjphcHBs
eVJlZkRlcmVmVGhyZWFkaW5nQ2hlY2sgY29uc3QpOgorICAgICAgICAqIHd0Zi9TaW5nbGVSb290
R3JhcGguaDoKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjphc3NlcnRJc0NvbnNpc3Rl
bnQgY29uc3QpOgorICAgICAgICAqIHd0Zi9TaXplTGltaXRzLmNwcDoKKyAgICAgICAgKiB3dGYv
U3RhY2tCb3VuZHMuaDoKKyAgICAgICAgKFdURjo6U3RhY2tCb3VuZHM6OmNoZWNrQ29uc2lzdGVu
Y3kgY29uc3QpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RGOjpV
UkxQYXJzZXI6OlVSTFBhcnNlcik6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6ZG9tYWluVG9B
U0NJSSk6CisgICAgICAgICogd3RmL1ZhbHVlQ2hlY2suaDoKKyAgICAgICAgKiB3dGYvVmVjdG9y
Lmg6CisgICAgICAgIChXVEY6Ok1hbGxvYz46OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAq
IHd0Zi9XZWFrSGFzaFNldC5oOgorICAgICAgICAqIHd0Zi9XZWFrUHRyLmg6CisgICAgICAgIChX
VEY6OldlYWtQdHJJbXBsOjpXZWFrUHRySW1wbCk6CisgICAgICAgIChXVEY6OldlYWtQdHJGYWN0
b3J5OjpXZWFrUHRyRmFjdG9yeSk6CisgICAgICAgICogd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwu
Y3BwOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmg6CisgICAgICAgICogd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnJl
aWZ5U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6Omhhc1ByZWZp
eFdpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2VDb21tb24pOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0hhc2hlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3Rl
cnMpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKiB3dGYvdGV4
dC9TeW1ib2xJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaDoK
KwogMjAyMC0wMS0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
RnVydGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5kYXJkaXppbmcgaGV4
IGZvcm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlvbgpJbmRleDogU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCwzOSArNjQsMzAgQEAgZXh0ZXJuICJDIiB2b2lkIF9SZWFkV3JpdGVC
YXJyaWVyKHZvaWQpOwogI2VuZGlmCiAjZW5kaWYKIAotI2lmZGVmIE5ERUJVRwotLyogRGlzYWJs
ZSBBU1NFUlQqIG1hY3JvcyBpbiByZWxlYXNlIG1vZGUuICovCi0jZGVmaW5lIEFTU0VSVElPTlNf
RElTQUJMRURfREVGQVVMVCAxCi0jZWxzZQotI2RlZmluZSBBU1NFUlRJT05TX0RJU0FCTEVEX0RF
RkFVTFQgMAotI2VuZGlmCisvKiBBU1NFUlRfRU5BQkxFRCBpcyBkZWZpbmVkIGluIFBsYXRmb3Jt
LmguICovCiAKICNpZm5kZWYgQkFDS1RSQUNFX0RJU0FCTEVECi0jZGVmaW5lIEJBQ0tUUkFDRV9E
SVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKLSNlbmRpZgotCi0jaWZuZGVmIEFT
U0VSVF9ESVNBQkxFRAotI2RlZmluZSBBU1NFUlRfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxF
RF9ERUZBVUxUCisjZGVmaW5lIEJBQ0tUUkFDRV9ESVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNl
bmRpZgogCiAjaWZuZGVmIEFTU0VSVF9NU0dfRElTQUJMRUQKLSNkZWZpbmUgQVNTRVJUX01TR19E
SVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RFRkFVTFQKKyNkZWZpbmUgQVNTRVJUX01TR19E
SVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIEFTU0VSVF9BUkdfRElT
QUJMRUQKLSNkZWZpbmUgQVNTRVJUX0FSR19ESVNBQkxFRCBBU1NFUlRJT05TX0RJU0FCTEVEX0RF
RkFVTFQKKyNkZWZpbmUgQVNTRVJUX0FSR19ESVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNlbmRp
ZgogCiAjaWZuZGVmIEZBVEFMX0RJU0FCTEVECi0jZGVmaW5lIEZBVEFMX0RJU0FCTEVEIEFTU0VS
VElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBGQVRBTF9ESVNBQkxFRCAhQVNTRVJUX0VO
QUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIEVSUk9SX0RJU0FCTEVECi0jZGVmaW5lIEVSUk9SX0RJ
U0FCTEVEIEFTU0VSVElPTlNfRElTQUJMRURfREVGQVVMVAorI2RlZmluZSBFUlJPUl9ESVNBQkxF
RCAhQVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIExPR19ESVNBQkxFRAotI2RlZmlu
ZSBMT0dfRElTQUJMRUQgQVNTRVJUSU9OU19ESVNBQkxFRF9ERUZBVUxUCisjZGVmaW5lIExPR19E
SVNBQkxFRCAhQVNTRVJUX0VOQUJMRUQKICNlbmRpZgogCiAjaWZuZGVmIFJFTEVBU0VfTE9HX0RJ
U0FCTEVECkBAIC0zMDIsNyArMjkzLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIE5PX1JFVFVSTl9E
VUVfVE9fQ1JBUwogI3VuZGVmIEFTU0VSVAogI2VuZGlmCiAKLSNpZiBBU1NFUlRfRElTQUJMRUQK
KyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogI2RlZmluZSBBU1NFUlQoYXNzZXJ0aW9uLCAuLi4pICgo
dm9pZCkwKQogI2RlZmluZSBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYXNzZXJ0aW9u
KSAoKHZvaWQpMCkKQEAgLTMyMiwxMiArMzEzLDEyIEBAIFdURl9FWFBPUlRfUFJJVkFURSBOT19S
RVRVUk5fRFVFX1RPX0NSQVMKICAgICAgICAgKHZvaWQpMCkKIAogI2RlZmluZSBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRCAwCi0jZWxzZQorI2Vsc2UgLyogbm90IEVO
QUJMRShTRUNVUklUWV9BU1NFUlRJT05TKSAqLwogI2RlZmluZSBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihhc3NlcnRpb24pICgodm9pZCkwKQogI2RlZmluZSBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRCAxCi0jZW5kaWYKKyNlbmRpZiAvKiBFTkFCTEUo
U0VDVVJJVFlfQVNTRVJUSU9OUykgKi8KIAotI2Vsc2UKKyNlbHNlIC8qIEFTU0VSVF9FTkFCTEVE
ICovCiAKICNkZWZpbmUgQVNTRVJUKGFzc2VydGlvbiwgLi4uKSBkbyB7IFwKICAgICBpZiAoIShh
c3NlcnRpb24pKSB7IFwKQEAgLTM4NSw3ICszNzYsOCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTk9f
UkVUVVJOX0RVRV9UT19DUkFTCiAgICAgICAgICBDUkFTSF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKCkpIDogXAogICAgICAgICAodm9pZCkwKQogI2RlZmluZSBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTl9ESVNBQkxFRCAwCi0jZW5kaWYKKworI2VuZGlmIC8qIEFTU0VSVF9FTkFC
TEVEICovCiAKIC8qIEFTU0VSVF9XSVRIX01FU1NBR0UgKi8KIApAQCAtNTMxLDcgKzUyMyw4IEBA
IGNvbnN0ZXhwciBib29sIGFzc2VydGlvbkZhaWx1cmVEdWVUb1VucmUKIAogLyogUkVMRUFTRV9B
U1NFUlQgKi8KIAotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAorCiAj
ZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbiwgLi4uKSBkbyB7IFwKICAgICBpZiAoVU5M
SUtFTFkoIShhc3NlcnRpb24pKSkgXAogICAgICAgICBDUkFTSF9XSVRIX0lORk8oX19WQV9BUkdT
X18pOyBcCkBAIC01NDQsMTMgKzUzNywxNiBAQCBjb25zdGV4cHIgYm9vbCBhc3NlcnRpb25GYWls
dXJlRHVlVG9VbnJlCiAgICAgICAgIENSQVNIX1VOREVSX0NPTlNURVhQUl9DT05URVhUKCk7IFwK
ICAgICB9IFwKIH0gd2hpbGUgKDApCi0jZWxzZQorCisjZWxzZSAvKiBBU1NFUlRfRU5BQkxFRCAq
LworCiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUKGFzc2VydGlvbiwgLi4uKSBBU1NFUlQoYXNzZXJ0
aW9uLCBfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGFz
c2VydGlvbiwgLi4uKSBBU1NFUlRfV0lUSF9NRVNTQUdFKGFzc2VydGlvbiwgX19WQV9BUkdTX18p
CiAjZGVmaW5lIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oYXNzZXJ0
aW9uKSBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihhc3NlcnRpb24pCiAjZGVmaW5l
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCkgQVNTRVJUX05PVF9SRUFDSEVEKCkKICNkZWZp
bmUgUkVMRUFTRV9BU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYXNzZXJ0aW9uKSBBU1NF
UlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoYXNzZXJ0aW9uKQotI2VuZGlmCisKKyNlbmRpZiAv
KiBBU1NFUlRfRU5BQkxFRCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKICNkZWZpbmUgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRURfV0lUSF9NRVNTQUdFKC4uLikgUkVMRUFTRV9BU1NFUlRfV0lU
SF9NRVNTQUdFKGFzc2VydGlvbkZhaWx1cmVEdWVUb1VucmVhY2hhYmxlQ29kZSwgX19WQV9BUkdT
X18pCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3MSw3ICsxNzEsNyBAQCB2b2lkIEF1dG9tYXRpY1RocmVhZDo6c3RhcnQoY29uc3QgQWJzdHJh
CiAgICAgICAgICAgICBSZWZQdHI8QXV0b21hdGljVGhyZWFkPiB0aHJlYWQgPSBwcmVzZXJ2ZVRo
aXNGb3JUaHJlYWQ7CiAgICAgICAgICAgICB0aHJlYWQtPnRocmVhZERpZFN0YXJ0KCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgICAg
ICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKICAgICAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV9sb2NrKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9jb25kaXRpb24tPmNvbnRhaW5z
KGxvY2tlciwgdGhpcykpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dURi93dGYvQml0
VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOiAKICAgICBzaXplX3QgZmluZEJpdChzaXplX3Qg
aW5kZXgsIGJvb2wgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBzaXplX3QgcmVzdWx0ID0g
ZmluZEJpdEZhc3QoaW5kZXgsIHZhbHVlKTsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKKyAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBzaXplX3QgZXhw
ZWN0ZWRSZXN1bHQgPSBmaW5kQml0U2ltcGxlKGluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0ICE9IGV4cGVjdGVkUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ZmluZEJpdCgiLCBpbmRleCwgIiwgIiwgdmFsdWUsICIpIG9uICIsICp0aGlzLCAiIHNob3VsZCBo
YXZlIGdvdHRlbiAiLCBleHBlY3RlZFJlc3VsdCwgIiBidXQgZ290ICIsIHJlc3VsdCwgIlxuIik7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CbG9ja09iakNFeGNlcHRpb25zLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHJldmlzaW9uIDI1NDA0
OCkKKysrIFNvdXJjZS9XVEYvd3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDcgKzMzLDcgQEAgdm9pZCBSZXBvcnRCbG9ja2VkT2JqQ0V4Y2VwdGlvbihOU0V4
Y2VwdAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlIGNvbmZ1c2lu
ZyB3aGVuIEphdmFTY3JpcHRDb3JlIGlzIHVzZWQgc3RhbmRhbG9uZS4gSlNDCiAgICAgLy8gd2ls
bCBjYWxsIHRoaXMgY29kZSBhcyBwYXJ0IG9mIGRlZmF1bHQgbG9jYWxlIGRldGVjdGlvbi4KICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODA0Ci0jaWYg
QVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgTlNMb2coQCIqKiogV2Vi
S2l0IGRpc2NhcmRpbmcgZXhjZXB0aW9uOiA8JUA+ICVAIiwgW2V4Y2VwdGlvbiBuYW1lXSwgW2V4
Y2VwdGlvbiByZWFzb25dKTsKICNlbHNlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAiVW5j
YXVnaHQgZXhjZXB0aW9uIC0gJUAiLCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL1dURi93dGYv
Qmxvb21GaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CbG9vbUZpbHRlci5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9CbG9vbUZpbHRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbWF5Q29udGFp
bihjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1heUNvbnRhaW4oc3Ry
aW5nLmltcGwoKS0+ZXhpc3RpbmdIYXNoKCkpOyB9CiAgICAgYm9vbCBtYXlDb250YWluKGNvbnN0
IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtYXlDb250YWluKHN0cmluZy5pbXBsKCkt
Pmhhc2goKSk7IH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIC8vIFNsb3cuCiAgICAgYm9vbCBsaWtlbHlFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgaXND
bGVhcigpIGNvbnN0OwpAQCAtMjM2LDcgKzIzNiw3IEBAIGlubGluZSB2b2lkIENvdW50aW5nQmxv
b21GaWx0ZXI8a2V5Qml0cz4KICAgICBtX2J1Y2tldHMuZmlsbCgwKTsKIH0KIAotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogdGVtcGxhdGUgPHVuc2lnbmVkIGtleUJp
dHM+CiBib29sIENvdW50aW5nQmxvb21GaWx0ZXI8a2V5Qml0cz46Omxpa2VseUVtcHR5KCkgY29u
c3QKIHsKQEAgLTI1Niw5ICsyNTYsOSBAQCBib29sIENvdW50aW5nQmxvb21GaWx0ZXI8a2V5Qml0
cz46OmlzQ2xlCiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAotfQorfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6Qmxv
b21GaWx0ZXI7CiB1c2luZyBXVEY6OkNvdW50aW5nQmxvb21GaWx0ZXI7CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dURi93
dGYvQ2FsbGJhY2tBZ2dyZWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiAgICAgICAgIDogbV9jYWxsYmFjayhX
VEZNb3ZlKGNhbGxiYWNrKSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgLCBtX3dhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkKGlzTWFpblRocmVhZCgp
KQogI2VuZGlmCiAgICAgewogICAgIH0KIAogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4g
bV9jYWxsYmFjazsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBib29sIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQ7CiAjZW5kaWYKIH07CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9X
VEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0NSw3ICs1NDUs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCB0eXBlbmFtCiBpbmxpbmUgY29u
c3RleHByIGJvb2wgb2JzZXJ2ZXNPdmVyZmxvdygpIHsgcmV0dXJuIHRydWU7IH0KIAogdGVtcGxh
dGUgPD4KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvYnNlcnZlc092ZXJmbG93PEFzc2VydE5vT3Zl
cmZsb3c+KCkgeyByZXR1cm4gIUFTU0VSVF9ESVNBQkxFRDsgfQoraW5saW5lIGNvbnN0ZXhwciBi
b29sIG9ic2VydmVzT3ZlcmZsb3c8QXNzZXJ0Tm9PdmVyZmxvdz4oKSB7IHJldHVybiBBU1NFUlRf
RU5BQkxFRDsgfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
Uj4gc3RhdGljIGlubGluZSBib29sIHNhZmVBZGQoVSBsaHMsIFYgcmhzLCBSJiByZXN1bHQpCiB7
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DaGVja2VkQm9vbGVhbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL0NoZWNrZWRCb29sZWFuLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9XVEYvd3RmL0NoZWNrZWRCb29sZWFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcg
QEAKIGNsYXNzIENoZWNrZWRCb29sZWFuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBD
aGVja2VkQm9vbGVhbihjb25zdCBDaGVja2VkQm9vbGVhbiYgb3RoZXIpCiAgICAgICAgIDogbV92
YWx1ZShvdGhlci5tX3ZhbHVlKQogICAgICAgICAsIG1fY2hlY2tlZChmYWxzZSkKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogCiAgICAgQ2hlY2tlZEJvb2xlYW4oYm9vbCB2YWx1ZSkKICAgICAg
ICAgOiBtX3ZhbHVlKHZhbHVlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgICAgICAsIG1fY2hlY2tlZChmYWxzZSkKICNlbmRpZgogICAgIHsKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgIAogICAgIG9wZXJhdG9yIGJvb2woKQogICAgIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9jaGVja2VkID0g
dHJ1ZTsKICNlbmRpZgogICAgICAgICByZXR1cm4gbV92YWx1ZTsKQEAgLTYyLDcgKzYyLDcgQEAg
cHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBib29sIG1fdmFsdWU7Ci0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbXV0YWJsZSBib29sIG1fY2hlY2tlZDsK
ICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL1dURi93dGYvQ29tcGxldGlvbkhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRnVuY3Rpb248
T3V0KEluLi4uKT4gbV9mdW5jdGlvbjsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBib29sIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQgeyBpc01haW5U
aHJlYWQoKSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dURi93dGYvRGF0ZU1hdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzcsNyArMzc3LDcgQEAgTG9jYWxUaW1lT2Zmc2V0IGNhbGN1bGF0ZUxvY2FsVGltZU9mZnNldAog
CiB2b2lkIGluaXRpYWxpemVEYXRlcygpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgc3RhdGljIGJvb2wgYWxyZWFkeUluaXRpYWxpemVkOwogICAgIEFT
U0VSVCghYWxyZWFkeUluaXRpYWxpemVkKTsKICAgICBhbHJlYWR5SW5pdGlhbGl6ZWQgPSB0cnVl
OwpJbmRleDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dURi93
dGYvR2lnYWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQqIHRy
eUFsbG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEtpbmQKICAgICBzaXplX3Qgc2l6ZSA9IHJvdW5k
VXBUb011bHRpcGxlT2YoV1RGOjpwYWdlU2l6ZSgpLCByZXF1ZXN0ZWRTaXplKTsKICAgICBSRUxF
QVNFX0FTU0VSVChzaXplID49IHJlcXVlc3RlZFNpemUpOwogICAgIHZvaWQqIHJlc3VsdCA9IE9T
QWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUpOwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplIC8gc2l6ZW9mKHVpbnRwdHJfdCk7ICsraSkKICAgICAgICAgICAg
IEFTU0VSVChzdGF0aWNfY2FzdDx1aW50cHRyX3QqPihyZXN1bHQpW2ldID09IDApOwpJbmRleDog
U291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsNyArNDUzLDcgQEAgREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoSAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJh
bnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBlKiBsb29rdXAoY29uc3QgVCYpOwogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gVmFsdWVUeXBl
KiBpbmxpbmVMb29rdXAoY29uc3QgVCYpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgICAgIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5KCkgY29uc3Q7
CiAjZWxzZQogICAgICAgICBzdGF0aWMgdm9pZCBjaGVja1RhYmxlQ29uc2lzdGVuY3koKSB7IH0K
QEAgLTUwOSw3ICs1MDksNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihICiAgICAgICAgIGl0ZXJhdG9yIG1ha2VLbm93bkdvb2RJdGVyYXRvcihWYWx1ZVR5cGUqIHBv
cykgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhh
c2hJdGVtS25vd25Hb29kKTsgfQogICAgICAgICBjb25zdF9pdGVyYXRvciBtYWtlS25vd25Hb29k
Q29uc3RJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgY29uc3QgeyByZXR1cm4gY29uc3RfaXRlcmF0
b3IodGhpcywgcG9zLCBtX3RhYmxlICsgbV90YWJsZVNpemUsIEhhc2hJdGVtS25vd25Hb29kKTsg
fQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIHZv
aWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIGNvbnN0OwogI2Vsc2UKICAgICAg
ICAgc3RhdGljIHZvaWQgY2hlY2tUYWJsZUNvbnNpc3RlbmN5RXhjZXB0U2l6ZSgpIHsgfQpAQCAt
NjA5LDcgKzYwOSw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEgK
ICAgICAgICAgcmV0dXJuIGtleTsKICAgICB9CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAh
QVNTRVJUX0VOQUJMRUQKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFs
dWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3IsIHR5cGVuYW1lIFQ+CkBAIC02MTcsNyArNjE3LDcgQEAgREVDTEFSRV9BTExPQ0FU
T1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSAogICAgIHsKICAgICB9CiAKLSNlbHNlCisjZWxzZSAv
LyBBU1NFUlRfRU5BQkxFRAogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KQEAgLTYzMyw3ICs2MzMsNyBAQCBERUNMQVJFX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihICiAgICAgICAgIEFTU0VSVCghSGFzaFRyYW5zbGF0
b3I6OmVxdWFsKEV4dHJhY3Rvcjo6ZXh0cmFjdChkZWxldGVkVmFsdWUpLCBrZXkpKTsKICAgICB9
CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhh
c2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgpAQCAtMTQxNyw3ICsx
NDE3LDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSAogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0
eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0
cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIHZvaWQgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4
dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpjaGVja1RhYmxlQ29u
c2lzdGVuY3koKSBjb25zdApAQCAtMTQ2MCw3ICsxNDYwLDcgQEAgREVDTEFSRV9BTExPQ0FUT1Jf
V0lUSF9IRUFQX0lERU5USUZJRVIoSAogICAgICAgICBBU1NFUlQobV90YWJsZVNpemUgPT0gbV90
YWJsZVNpemVNYXNrICsgMSk7CiAgICAgfQogCi0jZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVECisj
ZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogI2lmIENIRUNLX0hBU0hUQUJMRV9JVEVSQVRPUlMK
IApJbmRleDogU291cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvTG9nZ2VySGVscGVyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9X
VEYvd3RmL0xvZ2dlckhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIHVpbnQ2NF90IGxvd1dvcmQgPSBjcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlcigpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4oKGhpZ2hXb3JkIDw8IDMyKSArIGxvd1dvcmQpOwogICAgIH0KLSNlbHNlCisjZWxzZSAv
LyBSRUxFQVNFX0xPR19ESVNBQkxFRAogCiAjZGVmaW5lIExPR0lERU5USUZJRVIgKFdURjo6bnVs
bG9wdCkKIApAQCAtODgsOCArODgsOCBAQCBwdWJsaWM6CiAjZGVmaW5lIElORk9fTE9HX0lGKGNv
bmRpdGlvbiwgLi4uKSAgICAgICAoKHZvaWQpMCkKICNkZWZpbmUgREVCVUdfTE9HX0lGKGNvbmRp
dGlvbiwgLi4uKSAgICAgICgodm9pZCkwKQogCi0jZW5kaWYKLSAgICAKKyNlbmRpZiAvLyBSRUxF
QVNFX0xPR19ESVNBQkxFRAorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL05hdHVyYWxMb29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL05h
dHVyYWxMb29wcy5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9OYXR1cmFs
TG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAobG9vcC0+aGVhZGVyKCkgPT0gYmxv
Y2spCiAgICAgICAgICAgICByZXR1cm4gbG9vcDsKLSAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJM
RUQpIHsKKyAgICAgICAgaWYgKEFTU0VSVF9FTkFCTEVEKSB7CiAgICAgICAgICAgICBmb3IgKDsg
bG9vcDsgbG9vcCA9IGlubmVyTW9zdE91dGVyTG9vcCgqbG9vcCkpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKGxvb3AtPmhlYWRlcigpICE9IGJsb2NrKTsKICAgICAgICAgfQpJbmRleDogU291cmNl
L1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9O
ZXZlckRlc3Ryb3llZC5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9OZXZl
ckRlc3Ryb3llZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2lzQ29uc3RydWN0ZWQpOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1faXNDb25zdHJ1Y3RlZCA9IHRy
dWU7CiAjZW5kaWYKIApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFQq
IG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBzdG9yYWdlUG9pbnRlcigpOyB9CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzQ29uc3RydWN0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0ZWQ7IH0KICNlbmRpZgogCkBAIC0xMzcs
NyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgTWF5YmVSZWxheChQdHJUeXBl
KiBwdHIpIHsgcHRyLT5yZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsgfQogICAgIH07CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBMYXp5TmV2ZXJE
ZXN0cm95ZWQgb2JqZWN0cyBhcmUgYWx3YXlzIHN0YXRpYywgc28gdGhpcyB2YXJpYWJsZSBpcyBp
bml0aWFsaXplZCB0byBmYWxzZS4KICAgICAvLyBJdCBtdXN0IG5vdCBiZSBpbml0aWFsaXplZCBk
eW5hbWljYWxseTsgdGhhdCB3b3VsZCBub3QgYmUgdGhyZWFkIHNhZmUuCiAgICAgYm9vbCBtX2lz
Q29uc3RydWN0ZWQ7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291
cmNlL1dURi93dGYvT3B0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEzICs3OSwxOSBA
QCBwdWJsaWM6CiAgICAgY29uc3RleHByIE9wdGlvblNldChUIHQpCiAgICAgICAgIDogbV9zdG9y
YWdlKHN0YXRpY19jYXN0PFN0b3JhZ2VUeXBlPih0KSkKICAgICB7CisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICAvLyBUaGlzIGFzc2VydGlvbiB3aWxsIGNvbmZsaWN0IHdpdGggdGhlIGNvbnN0ZXhw
ciBhdHRyaWJ1dGUgaWYgd2UgZW5hYmxlIGl0IG9uIE5ERUJVRyBidWlsZHMuCiAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1fc3RvcmFnZSB8fCBoYXNPbmVCaXRTZXQobV9zdG9yYWdlKSwg
IkVudW1lcmF0b3IgaXMgbm90IGEgemVybyBvciBhIHBvc2l0aXZlIHBvd2VyIG9mIHR3by4iKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQoc3RkOjppbml0aWFsaXpl
cl9saXN0PFQ+IGluaXRpYWxpemVyTGlzdCkKICAgICB7CiAgICAgICAgIGZvciAoYXV0byYgb3B0
aW9uIDogaW5pdGlhbGl6ZXJMaXN0KSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgLy8g
VGhpcyBhc3NlcnRpb24gd2lsbCBjb25mbGljdCB3aXRoIHRoZSBjb25zdGV4cHIgYXR0cmlidXRl
IGlmIHdlIGVuYWJsZSBpdCBvbiBOREVCVUcgYnVpbGRzLgogICAgICAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShoYXNPbmVCaXRTZXQoc3RhdGljX2Nhc3Q8U3RvcmFnZVR5cGU+KG9wdGlvbikp
LCAiRW51bWVyYXRvciBpcyBub3QgYSBwb3NpdGl2ZSBwb3dlciBvZiB0d28uIik7CisjZW5kaWYK
ICAgICAgICAgICAgIG1fc3RvcmFnZSB8PSBzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4ob3B0aW9u
KTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMjU0MDQ4KQor
KysgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0NiwxMiAr
MTA0NiwyMCBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmbmRlZiBFTkFCTEVfRVhDRVBUSU9OX1ND
T1BFX1ZFUklGSUNBVElPTgorLyogQVNTRVJUX0VOQUJMRUQgc2hvdWxkIGJlIHRydWUgaWYgd2Ug
d2FudCB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0IHRvCisgICBkbyBkZWJ1ZyBhc3NlcnRp
b24gY2hlY2tzIHVuY29uZGl0aW9uYWxseSAoZS5nLiAgdHJlYXQgYSBkZWJ1ZyBBU1NFUlQKKyAg
IGxpa2UgYSBSRUxFQVNFX0FTU0VSVC4KKyovCisjaWZuZGVmIEFTU0VSVF9FTkFCTEVECiAjaWZk
ZWYgTkRFQlVHCi0jZGVmaW5lIEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OIDAK
KyNkZWZpbmUgQVNTRVJUX0VOQUJMRUQgMAogI2Vsc2UKLSNkZWZpbmUgRU5BQkxFX0VYQ0VQVElP
Tl9TQ09QRV9WRVJJRklDQVRJT04gMQorI2RlZmluZSBBU1NFUlRfRU5BQkxFRCAxCisjZW5kaWYK
ICNlbmRpZgorCisjaWZuZGVmIEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OCisj
ZGVmaW5lIEVOQUJMRV9FWENFUFRJT05fU0NPUEVfVkVSSUZJQ0FUSU9OIEFTU0VSVF9FTkFCTEVE
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKSAmJiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkg
JiYgKENQVShYODZfNjQpIHx8IENQVShBUk02NCkpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QdHJU
YWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QdHJUYWcuaAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dURi93dGYvUHRyVGFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMywx
MCArMTAzLDEwIEBAIGNvbnN0ZXhwciBQdHJUYWcgQW55UHRyVGFnID0gc3RhdGljX2Nhc3QKIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlZ2lzdGVyUHRyVGFnTG9va3VwKFB0clRhZ0xvb2t1cCop
OwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0QmFkVGFnKGNvbnN0IHZvaWQqLCBQdHJU
YWcgZXhwZWN0ZWRUYWcpOwogCi0jaWYgQVNTRVJUX0RJU0FCTEVECi1jb25zdGV4cHIgYm9vbCBl
bmFibGVQdHJUYWdEZWJ1Z0Fzc2VydCA9IGZhbHNlOwotI2Vsc2UKKyNpZiBBU1NFUlRfRU5BQkxF
RAogY29uc3RleHByIGJvb2wgZW5hYmxlUHRyVGFnRGVidWdBc3NlcnQgPSB0cnVlOworI2Vsc2UK
K2NvbnN0ZXhwciBib29sIGVuYWJsZVB0clRhZ0RlYnVnQXNzZXJ0ID0gZmFsc2U7CiAjZW5kaWYK
IAogI2RlZmluZSBXVEZfUFRSVEFHX0FTU0VSVChhY3Rpb24sIHB0ciwgZXhwZWN0ZWRUYWcsIGFz
c2VydGlvbikgXApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWQuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291
cmNlL1dURi93dGYvUmVmQ291bnRlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTAg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiBkZWZpbmVkKE5ERUJVRykgJiYgIUVOQUJMRShT
RUNVUklUWV9BU1NFUlRJT05TKQotI2RlZmluZSBDSEVDS19SRUZfQ09VTlRFRF9MSUZFQ1lDTEUg
MAotI2Vsc2UKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9O
UykKICNkZWZpbmUgQ0hFQ0tfUkVGX0NPVU5URURfTElGRUNZQ0xFIDEKKyNlbHNlCisjZGVmaW5l
IENIRUNLX1JFRl9DT1VOVEVEX0xJRkVDWUNMRSAwCiAjZW5kaWYKIAogLy8gVGhpcyBiYXNlIGNs
YXNzIGhvbGRzIHRoZSBub24tdGVtcGxhdGUgbWV0aG9kcyBhbmQgYXR0cmlidXRlcy4KQEAgLTc1
LDE0ICs3NSwxNCBAQCBwdWJsaWM6CiAgICAgLy8gbG9ja2luZyBhdCBjYWxsIHNpdGVzKS4KICAg
ICB2b2lkIGRpc2FibGVUaHJlYWRpbmdDaGVja3MoKQogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgbV9hcmVUaHJlYWRpbmdDaGVja3NFbmFi
bGVkID0gZmFsc2U7CiAjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBlbmFibGVUaHJl
YWRpbmdDaGVja3NHbG9iYWxseSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgICAgICBhcmVUaHJlYWRpbmdDaGVja3NFbmFibGVkR2xvYmFsbHkg
PSB0cnVlOwogI2VuZGlmCiAgICAgfQpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgUmVmQ291bnRlZEJhc2UoKQogICAgICAgICA6IG1fcmVmQ291bnQoMSkKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX2lzT3duZWRC
eU1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKICNpZiBDSEVDS19SRUZfQ09VTlRF
RF9MSUZFQ1lDTEUKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGFw
cGx5UmVmRGVyZWZUaHJlYWRpbmdDaGVjaygpIGNvbnN0CiAgICAgewotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBpZiAoaGFzT25lUmVmKCkpIHsKICAg
ICAgICAgICAgIC8vIExpa2VseSBhbiBvd25lcnNoaXAgdHJhbnNmZXIgYWNyb3NzIHRocmVhZHMg
dGhhdCBtYXkgYmUgc2FmZS4KICAgICAgICAgICAgIG1faXNPd25lZEJ5TWFpblRocmVhZCA9IGlz
TWFpblRocmVhZCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IG11dGFibGUgdW5zaWduZWQgbV9yZWZDb3VudDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBtdXRhYmxlIGJvb2wgbV9pc093bmVkQnlNYWluVGhyZWFkOwog
ICAgIGJvb2wgbV9hcmVUaHJlYWRpbmdDaGVja3NFbmFibGVkIHsgdHJ1ZSB9OwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNl
L1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnRJc0Nv
bnNpc3RlbnQoKSBjb25zdAogICAgIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSByb290cygpIGZ1bmN0aW9uIHRvIGJl
IGlkZW1wb3RlbnQgd2hpbGUgd2UncmUgYWxpdmUgc28gd2UgY2FuIGNhY2hlCiAgICAgICAgIC8v
IHRoZSByZXN1bHQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJZiBhIHVzZXIgb2YgdGhpcyBjaGFuZ2Vz
IHRoZSByZXN1bHQgb2YgaXRzIHJvb3RzKCkKICAgICAgICAgLy8gZnVuY3Rpb24sIGl0J3MgZXhw
ZWN0ZWQgdGhhdCB0aGUgdXNlciB3aWxsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIGNs
YXNzLgpJbmRleDogU291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9XVEYvd3RmL1NpemVMaW1pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlf
QVNTRVJUSU9OUykKIHN0cnVjdCBTYW1lU2l6ZUFzUmVmQ291bnRlZCB7CiAgICAgaW50IGE7CiAg
ICAgYm9vbCBiOwpJbmRleDogU291cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CiAgICAg
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICB2b2lk
KiBjdXJyZW50UG9zaXRpb24gPSBjdXJyZW50U3RhY2tQb2ludGVyKCk7CiAgICAgICAgIEFTU0VS
VChtX29yaWdpbiAhPSBtX2JvdW5kKTsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRQb3NpdGlvbiA8
IG1fb3JpZ2luICYmIGN1cnJlbnRQb3NpdGlvbiA+IG1fYm91bmQpOwpJbmRleDogU291cmNlL1dU
Ri93dGYvVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VUkxQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCBVUkxQYXJzZXI6OlVSTFBhcnNl
cihjb25zdCBTdHJpbmcmIGlucHV0CiAgICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFy
YWN0ZXJzPGlzQzBDb250cm9sT3JTcGFjZT4oKQogICAgICAgICAgICAgJiYgbV91cmwubV9zdHJp
bmcgPT0gYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCkpKTsKICAgICBBU1NFUlQo
aW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG1fdXJsKSk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYgKCFtX2RpZFNlZVN5bnRheFZpb2xhdGlvbikgewog
ICAgICAgICAvLyBGb3JjZSBhIHN5bnRheCB2aW9sYXRpb24gYXQgdGhlIGJlZ2lubmluZyB0byBt
YWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdC4KICAgICAgICAgVVJMUGFyc2VyIHBhcnNl
cihtYWtlU3RyaW5nKCIgIiwgaW5wdXQpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CkBA
IC0xMTU2LDcgKzExNTYsNyBAQCBVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJpbmcmIGlu
cHV0CiAgICAgICAgIGlmIChwYXJzZWQuaXNWYWxpZCgpKQogICAgICAgICAgICAgQVNTRVJUKGFs
bFZhbHVlc0VxdWFsKHBhcnNlci5yZXN1bHQoKSwgbV91cmwpKTsKICAgICB9Ci0jZW5kaWYKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgpAQCAtMjU0OCwxNCArMjU0OCwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBPcHRpb25hCiAgICAgaW50MzJfdCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFf
bmFtZVRvQVNDSUkoJmludGVybmF0aW9uYWxEb21haW5OYW1lVHJhbnNjb2RlcigpLCBTdHJpbmdW
aWV3KGRvbWFpbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIGRvbWFpbi5sZW5ndGgoKSwgaG9z
dG5hbWVCdWZmZXIsIG1heERvbWFpbkxlbmd0aCwgJnByb2Nlc3NpbmdEZXRhaWxzLCAmZXJyb3Ip
OwogCiAgICAgaWYgKFVfU1VDQ0VTUyhlcnJvcikgJiYgIXByb2Nlc3NpbmdEZXRhaWxzLmVycm9y
cykgewotI2lmIEFTU0VSVF9ESVNBQkxFRAotICAgICAgICBVTlVTRURfUEFSQU0obnVtQ2hhcmFj
dGVyc0NvbnZlcnRlZCk7Ci0jZWxzZQorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAo
aW50MzJfdCBpID0gMDsgaSA8IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQ7ICsraSkgewogICAgICAg
ICAgICAgQVNTRVJUKGlzQVNDSUkoaG9zdG5hbWVCdWZmZXJbaV0pKTsKICAgICAgICAgICAgIEFT
U0VSVCghaXNBU0NJSVVwcGVyKGhvc3RuYW1lQnVmZmVyW2ldKSk7CiAgICAgICAgIH0KLSNlbmRp
ZgorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQpOwor
I2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGFzY2lpLmFwcGVuZChob3N0bmFtZUJ1
ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CiAgICAgICAgIGlmIChkb21haW4gIT0gU3Ry
aW5nVmlldyhhc2NpaS5kYXRhKCksIGFzY2lpLnNpemUoKSkpCiAgICAgICAgICAgICBzeW50YXhW
aW9sYXRpb24oaXRlcmF0b3JGb3JTeW50YXhWaW9sYXRpb25Qb3NpdGlvbik7CkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9WYWx1ZUNoZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVmFs
dWVDaGVjay5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9WYWx1ZUNoZWNr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IFZhbHVlQ2hlY2sgewogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29u
c3QgVCYpIHsgfQogfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IFZhbHVlQ2hlY2s8UCo+IHsKICAgICB0eXBl
ZGVmIFAqIFRyYWl0VHlwZTsKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0
IFAqIHApCkBAIC00NSw2ICs0NSw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBWYWx1
ZUNoZWNrPFAKICAgICAgICAgVmFsdWVDaGVjazxQPjo6Y2hlY2tDb25zaXN0ZW5jeSgqcCk7CiAg
ICAgfQogfTsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIH0KSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5OCw3ICsxNTk4LDcgQEAgaW5saW5lIE1hbGxvY1B0cjxULCBNYWxsb2M+
IFZlY3RvcjxULCBpbgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXIsIHNpemVfdCBtaW5DYXBhY2l0eSwgdHlwZW5hbWUg
TWFsbG9jPgogaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXIsIG1pbkNhcGFjaXR5LCBNYWxsb2M+OjpjaGVja0NvbnNpc3RlbmN5KCkKIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemUoKTsgKytpKQogICAgICAgICBWYWx1ZUNoZWNrPFQ+OjpjaGVja0NvbnNpc3Rl
bmN5KGF0KGkpKTsKICNlbmRpZgpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBWZWN0b3I8VCwgaQogICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBWYWx1ZUNoZWNrPFZlY3RvcjxUPj4gewogICAgIHR5cGVkZWYgVmVjdG9yPFQ+
IFRyYWl0VHlwZTsKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFZlY3Rv
cjxUPiYgdikKQEAgLTE2MzMsNyArMTYzMyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBWYWx1ZUNoZWNrPFYKICAgICAgICAgdi5jaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogfTsK
LSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyLCBzaXplX3Qg
bWluQ2FwYWNpdHksIHR5cGVuYW1lIE1hbGxvYz4KIHRlbXBsYXRlPHR5cGVuYW1lIFU+CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL1dlYWtIYXNoU2V0LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvd3RmL1dl
YWtIYXNoU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fc2V0LnNpemUoKTsKICAgICB9CiAKLSNpZiBBU1NFUlRfRElTQUJM
RUQKLSAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IH0KLSNlbHNlCisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdCB7IG1fc2V0LmNo
ZWNrQ29uc2lzdGVuY3koKTsgfQorI2Vsc2UKKyAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBj
b25zdCB7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dURi93dGYvV2Vha1B0
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dURi93dGYvV2Vha1B0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
NCArNjgsMTQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiBtX3B0cjsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fcHRyID0gbnVsbHB0cjsgfQog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCB3YXND
b25zdHJ1Y3RlZE9uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzQ29uc3RydWN0ZWRP
bk1haW5UaHJlYWQ7IH0KICNlbmRpZgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGV4cGxpY2l0IFdlYWtQdHJJbXBsKFQqIHB0cikKICAgICAgICAgOiBtX3B0cihzdGF0aWNf
Y2FzdDx0eXBlbmFtZSBUOjpXZWFrVmFsdWVUeXBlKj4ocHRyKSkKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX3dhc0NvbnN0cnVjdGVkT25NYWlu
VGhyZWFkKGlzTWFpblRocmVhZCgpKQogI2VuZGlmCiAgICAgewpAQCAtODMsNyArODMsNyBAQCBw
cml2YXRlOgogICAgIH0KIAogICAgIHZvaWQqIG1fcHRyOwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV93YXNDb25zdHJ1Y3RlZE9uTWFpblRocmVh
ZDsKICNlbmRpZgogfTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBXZWFrUHRyRmFjdG9yeSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vha1B0ckZhY3Rv
cnkoKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICA6
IG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCiAjZW5kaWYKICAg
ICB7CkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIFdlYWtIYXNoU2V0OwogCiAgICAgbXV0YWJsZSBSZWZQdHI8V2Vha1B0cklt
cGw+IG1faW1wbDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBib29sIG1fd2FzQ29uc3RydWN0ZWRPbk1haW5UaHJlYWQ7CiAjZW5kaWYKIH07CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0Miw3ICs1NDIsNyBAQCBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjps
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKIGJvb2wgQXRvbVN0cmluZ0ltcGw6OmlzSW5BdG9tU3RyaW5nVGFibGUoU3Ry
aW5nSW1wbCogc3RyaW5nKQogewogICAgIEF0b21TdHJpbmdUYWJsZUxvY2tlciBsb2NrZXI7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRkKCpzdHJpbmdUYWJsZVBy
b3ZpZGVyLmF0b21TdHJpbmdUYWJsZSgpLCAqc3RyaW5nKTsKICAgICB9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIGJvb2wgaXNJbkF0b21TdHJpbmdUYWJsZShTdHJpbmdJbXBsKik7CiAjZW5kaWYKIApAQCAt
MTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBS
ZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGxvb2tVcFNsb3dDYXNlKFN0cmluZ0ltcGwmKTsKIH07CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAogLy8gQXRvbVN0cmlu
Z0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJUIGluIHRoZSBn
ZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3ksCiAvLyBhcyB0aGV5IGFyZSBu
b3QgYWxsb2NhdGVkIGJ5IGZhc3RNYWxsb2MuIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFueSB3
YXkgdG8gZGV0ZWN0IHRoYXQgY2FzZSwgc28gd2UgZG9uJ3QKQEAgLTExNSw3ICsxMTUsNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPGNvbnN0IEF0b21TCiAgICAgc3RhdGljIHZvaWQg
Y2hlY2tDb25zaXN0ZW5jeShjb25zdCBBdG9tU3RyaW5nSW1wbCopIHsgfQogfTsKIAotI2VuZGlm
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdm9p
ZCBTdHJpbmdCdWlsZGVyOjpyZWlmeVN0cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lz
UmVpZmllZCA9IHRydWU7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWNfYXNzZXJ0KFN0cmluZzo6TWF4TGVuZ3RoID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
MzJfdD46Om1heCgpLCAiIik7CiAgICAgQ2hlY2tlZDxpbnQzMl90LCBDb25kaXRpb25hbENyYXNo
T25PdmVyZmxvdz4gbV9sZW5ndGg7CiAgICAgYm9vbCBtX2lzOEJpdCB7IHRydWUgfTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtdXRhYmxlIGJvb2wgbV9p
c1JlaWZpZWQgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbW1vbi5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MTIsNyArNjEyLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZSwgdW5zaWduZQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdD
bGFzcz4gYm9vbCBpbmxpbmUgaGFzUHJlZml4V2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZUNv
bW1vbihjb25zdCBTdHJpbmdDbGFzcyYgc3RyaW5nLCBjb25zdCBjaGFyKiBsb3dlcmNhc2VMZXR0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgQVNTRVJUKCpsb3dlcmNhc2VMZXR0ZXJzKTsKICAgICBmb3IgKGNvbnN0
IGNoYXIqIGxldHRlciA9IGxvd2VyY2FzZUxldHRlcnM7ICpsZXR0ZXI7ICsrbGV0dGVyKQogICAg
ICAgICBBU1NFUlQodG9BU0NJSUxvd2VyVW5jaGVja2VkKCpsZXR0ZXIpID09ICpsZXR0ZXIpOwpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2hlci5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nywx
MiArNzcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2hhcmFjdGVycyhVQ2hhciBhLCBVQ2hh
ciBiKQogICAgIHsKICAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikgewotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgbV9oYXNQZW5k
aW5nQ2hhcmFjdGVyID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgICAgIGFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBhKTsKICAgICAgICAgICAgIG1fcGVu
ZGluZ0NoYXJhY3RlciA9IGI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSB0cnVlOwogI2VuZGlmCiAg
ICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNp
b24gMjU0MDQ4KQorKysgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzNyw3ICs1MzcsNyBAQCB1c2luZyBTdGF0aWNTdHJpbmdJbXBsID0gU3RyaW5n
SW1wbDo6U3RhCiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFN0cmluZ0ltcGwpID09IHNpemVvZihT
dGF0aWNTdHJpbmdJbXBsKSwgIiIpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAKIC8vIFN0cmluZ0ltcGxzIGNyZWF0ZWQgZnJvbSBTdGF0aWNTdHJpbmdJbXBs
IHdpbGwgQVNTRVJUIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVu
Y3kKIC8vIGFzIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4gV2UgZG9uJ3Qg
Y3VycmVudGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3QgdGhhdCBjYXNlCkBAIC01NDYsNyArNTQ2
LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFsdWVDaGVjazxTdHJpbmdJbXBsKgogICAgIHN0YXRp
YyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgU3RyaW5nSW1wbCopIHsgfQogfTsKIAotI2Vu
ZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9X
VEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNyArMTk5LDcg
QEAgaW5saW5lIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKiBTeW1ib2xJbXBsOgogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxSZWdpc3RlcmVkU3ltYm9sSW1wbCo+KHRoaXMpOwogfQogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAvLyBTeW1ib2xJbXBscyBjcmVhdGVkIGZy
b20gU3RhdGljU3RyaW5nSW1wbCB3aWxsIEFTU0VSVAogLy8gaW4gdGhlIGdlbmVyaWMgVmFsdWVD
aGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5jeQogLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBi
eSBmYXN0TWFsbG9jLgpAQCAtMjE0LDcgKzIxNCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0CiBWYWx1
ZUNoZWNrPGNvbnN0IFN5bWJvbEltcGwqPiB7CiAgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0
ZW5jeShjb25zdCBTeW1ib2xJbXBsKikgeyB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3Rl
eHQvVW5pcXVlZFN0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1VuaXF1ZWRTdHJpbmdJbXBsLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XVEYvd3Rm
L3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwoQ3JlYXRlU3ltYm9sVGFnKSA6IFN0
cmluZ0ltcGwoQ3JlYXRlU3ltYm9sKSB7IH0KIH07CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKIC8vIFVuaXF1ZWRTdHJpbmdJbXBscyBjcmVhdGVkIGZyb20gU3Rh
dGljU3RyaW5nSW1wbCB3aWxsIEFTU0VSVAogLy8gaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVjazxU
Pjo6Y2hlY2tDb25zaXN0ZW5jeQogLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBieSBmYXN0
TWFsbG9jLgpAQCAtNTUsNyArNTUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdAogVmFsdWVDaGVjazxj
b25zdCBVbmlxdWVkU3RyaW5nSW1wbCo+IHsKICAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKikgeyB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM4NSBAQAorMjAyMC0wMS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ29udmVydCBBU1NFUlRfRElTQUJMRUQgdG8gQVNTRVJUX0VOQUJM
RUQsIGFuZCBmaXggc29tZSB0ZXN0cyBvZiBOREVCVUcgdGhhdCBzaG91bGQgYWN0dWFsbHkgdGVz
dCBmb3IgQVNTRVJUX0VOQUJMRUQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU3NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keVNvdXJjZTo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZURldGFpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6RGF0
YWJhc2VEZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6b3BlcmF0
b3I9KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
aHJlYWQ6OnRlcm1pbmF0aW9uUmVxdWVzdGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9BU1QvV0hMU0xBZGRyZXNzU3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldI
TFNMOjpBU1Q6OlR5cGVBbm5vdGF0aW9uOjpUeXBlQW5ub3RhdGlvbik6CisgICAgICAgICogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldITFNMOjpmaW5kSGlnaFpvbWJpZXMpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6bWF0
Y2hlcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMaXRlcmFsVHlwZUNo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrTGl0ZXJhbFR5cGVzKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3Rv
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OkZpbmRBbGxUeXBlczo6YXBwZW5kTmFt
ZWRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0
aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ2FsY09wZXJhdGlvbk5vZGU6OnBy
aW1pdGl2ZVR5cGUgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFs
dWVGb3JQcm9wZXJ0eUluU3R5bGUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHA6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpzZWxlY3RvclRleHQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNo
ZWV0LmNwcDoKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjdGl2ZURPTU9iamVjdDo6YXNzZXJ0U3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkIGNvbnN0
KToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGUuY3BwOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg6CisgICAgICAgICogZG9t
L0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmNwcDoKKyAgICAgICAgKiBkb20vQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWFj
dGlvbkRpc2FsbG93ZWRTY29wZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uRGlzYWxsb3dlZFNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29w
ZTo6fkN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRTY29wZSk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpoaXRUZXN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZWNy
ZW1lbnRSZWZlcmVuY2luZ05vZGVDb3VudCk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpwb3BBbmNlc3RvclNp
YmxpbmdTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvcjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRp
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJh
dG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6b3Bl
cmF0b3ItLSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0
b3I6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6b3BlcmF0b3IrKyk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZpb3Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlTmV4dFNpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VQcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNz
ZXJ0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+
Ojp0cmF2ZXJzZUFuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJz
ZVByZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVy
c2VOZXh0U2tpcHBpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q29uc3RJ
dGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucyk6Cisg
ICAgICAgICogZG9tL0V2ZW50Q29udGV4dC5jcHA6CisgICAgICAgICogZG9tL0V2ZW50Q29udGV4
dC5oOgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2ZW50
UGF0aC5jcHA6CisgICAgICAgICogZG9tL0V2ZW50U2VuZGVyLmg6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojppbm5lckludm9rZUV2
ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjptb3ZlTm9kZVRvTmV3RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlZExhc3RSZWYpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkZXJlZiBjb25zdCk6Cisg
ICAgICAgICogZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93
ZWRJblN1YnRyZWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRp
b25Db250ZXh0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAg
ICAgICAqIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
RGF0YUxpc3Q6OmV4ZWN1dGUgY29uc3QpOgorICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50
QnlOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpyZXNvbHZlU2xvdHNB
ZnRlclNsb3RNdXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6Zmlu
ZEZpcnN0U2xvdEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9TbG90QXNzaWdubWVudC5oOgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZU9yZGVyZWRNYXA6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVPcmRl
cmVkTWFwOjpnZXQgY29uc3QpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmg6
CisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoK
KyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QmFja0ZvcndhcmRDYWNoZTo6cmVtb3ZlQWxsSXRlbXNGb3JQYWdlKToKKyAgICAgICAgKiBo
aXN0b3J5L0JhY2tGb3J3YXJkQ2FjaGUuaDoKKyAgICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQmFzZTo6bm90aWZ5T2JzZXJ2ZXJzQ2FudmFzRGVz
dHJveWVkKToKKyAgICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xsZWN0aW9uTmFtZWRFbGVtZW50
Q2FjaGU6OmRpZFBvcHVsYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OiBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc3NlcnRSb3dJc0luVGFibGUp
OgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
fkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxQYXJzZXJTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVk
dWxlcjo6SFRNTFBhcnNlclNjaGVkdWxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2Vy
U2NoZWR1bGVyOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVs
ZXI6OnJlc3VtZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5o
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUb2tlbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRva2VuOjpiZWdpblN0YXJ0VGFnKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbjo6
YmVnaW5FbmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuOjplbmRBdHRyaWJ1dGUp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
Ojp+SFRNTFRyZWVCdWlsZGVyKToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0
cnlGb3JCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRWZXJ0aWNhbFBvc2l0aW9uKToKKyAgICAg
ICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OkJveCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0VG9wTGVmdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldFRvcCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Qm94OjpzZXRDb250ZW50Qm94SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6c2V0Q29udGVudEJveFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
c2V0SG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNl
dFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0SG9y
aXpvbnRhbENvbXB1dGVkTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6
c2V0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0UGFkZGluZyk6
CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVSZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpJbmxpbmVSZWN0OjpJbmxpbmVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OklubGluZVJlY3Q6OnNldFRvcExlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheTo6SW5saW5lUmVjdDo6c2V0VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OklubGluZVJlY3Q6OnNldEJvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpJbmxpbmVSZWN0OjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OklubGlu
ZVJlY3Q6OnNldFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OklubGluZVJlY3Q6
OnNldEhlaWdodCk6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lQm94OjpMaW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OnJlc2V0QmFzZWxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmU6OkJhc2VsaW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmU6OnNldERlc2Nl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZUJveDo6QmFzZWxpbmU6OnJlc2V0
KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJlY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OlJlY3Q6OlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6UmVjdDo6c2V0VG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSZWN0Ojpz
ZXRUb3ApOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UmVjdDo6c2V0TGVmdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSZWN0OjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpSZWN0OjpzZXRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
UmVjdDo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpSZWN0OjpjbG9uZSBj
b25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OkNvbGxhcHNpYmxlQ29udGVudDo6
Y29sbGFwc2UpOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjpDb2x1bW46OnNldFdpZHRo
Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OkNvbHVt
bjo6c2V0TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlk
OjpDb2x1bW46OnNldExvZ2ljYWxMZWZ0KToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0
aW5nL1RhYmxlR3JpZC5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xp
Y3kpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmF0dGFjaFRvRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YWRkU3VicmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxv
YWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpscnVMaXN0Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpy
ZW1vdmVGcm9tTFJVTGlzdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJz
aXZlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9WaWV3cG9ydENvbmZp
Z3VyYXRpb24uY3BwOgorICAgICAgICAqIHBhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmg6Cisg
ICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q3VycmVudEV2ZW50U2NvcGU6OkN1cnJlbnRFdmVudFNjb3BlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9EYXRlQ29tcG9uZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlQ29tcG9uZW50czo6
dG9TdHJpbmdGb3JUaW1lIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TdXBwbGVt
ZW50YWJsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL1RpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRpbWVyQmFzZTo6Y2hlY2tIZWFwSW5kZXggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jh
dGNoQnVmZmVyOjpTY3JhdGNoQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZm
ZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6
c2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUNGTGF5
ZXJUcmVlSG9zdDo6c2V0V2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vQ0FDRkxheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckRhdGFDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnB1dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR3N0QWxs
b2NhdG9yRmFzdE1hbGxvYy5jcHA6CisgICAgICAgIChnc3RBbGxvY2F0b3JGYXN0TWFsbG9jRnJl
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFp
bnRpbmdDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoTmljb3NpYTo6UGFpbnRpbmdDb250ZXh0
Q2Fpcm86OkZvclBhaW50aW5nOjpGb3JQYWludGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBs
LmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsOjpj
cmVhdGVUaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3Np
YTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6On5Db250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OmZpbGwpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9QYXRoRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6
YXBwZW5kR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6UGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpQYXRoOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6c3Ry
b2tlQ29udGFpbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJhbnNmb3JtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQ6OnNldFRhZ3Mp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZTo6flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdWaWRlb1Nv
dXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc0Nyb3NzT3JpZ2luU2FmZUhlYWRlcik6CisgICAgICAgICogcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6U1FMaXRlU3RhdGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6cHJlcGFyZSk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmZpbmFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL0NPTVB0ci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb21wbGV4TGluZUxheW91dDo6cmVtb3ZlSW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0aW5n
T2JqZWN0OjpGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVj
dHM6OmFkZFBsYWNlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVjdHM6
OnJlbW92ZVBsYWNlZE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0
cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uY3BwOgor
ICAgICAgICAqIHJlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0uaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvTGF5b3V0RGlzYWxsb3dlZFNjb3BlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6bGF5b3V0QmxvY2tDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6ZW5zdXJlTGluZUJveGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OnBsYWNlSXRlbXNPbkdyaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3Jp
ZDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OndpbGxCZURlc3Ryb3ll
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBSZWN0c0NhY2hlOjpDbGlwUmVjdHNDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnBhaW50TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDbGlwUmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzZVZpc2libGVO
b25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnRyYXZlcnNlVW5jaGFuZ2VkU3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmdBbmRIaWVy
YXJjaHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGREZXNj
ZW5kYW50c1RvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlY3Vyc2l2ZVJlcGFpbnRMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVySGFzM0RDb250ZW50IGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheW91dFN0YXRlOjpjb21wdXRlT2Zmc2V0cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXlvdXRTdGF0ZTo6YWRkTGF5b3V0RGVsdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5b3V0
U3RhdGU6OlJlbmRlckxheW91dFN0YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6flJlbmRlck9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNsZWFyTmVlZHNMYXlvdXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUXVvdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVzRm9yTGFuZ3VhZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y29t
cHV0ZU92ZXJmbG93RnJvbUNlbGxzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dExp
bmVCb3hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0TGluZUJveGVzOjpjaGVj
a0NvbnNpc3RlbmN5IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVC
b3hlcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6dHJ5SHlwaGVuYXRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9HcmlkQXJlYS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFNwYW46OkdyaWRTcGFuKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVC
dWlsZGVyUnVieS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlQnVpbGRlcjo6UnVi
eTo6ZGV0YWNoKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVBvc2l0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVQb3NpdGlvbjo6Y29tcHV0ZU5l
eHRTaWJsaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVBvc2l0
aW9uLmg6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpQbGFjZWhvbGRlcjo6UGxhY2Vob2xk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpQbGFjZWhvbGRl
cjo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjph
cHBlbmRDRkZUYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6
OmZpcnN0R2x5cGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVy
dGVyOjphcHBlbmRLRVJOVGFibGUpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJhbnNm
b3JtRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OnNj
YWxlZERpc3RhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybURpc3Rh
bmNlOjphZGRTVkdUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RyYW5zZm9ybURp
c3RhbmNlOjphZGRUb1NWR1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
cmFuc2Zvcm1EaXN0YW5jZTo6ZGlzdGFuY2UgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2Up
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGU6On5QYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgICogeG1sL1hQYXRo
U3RlcC5jcHA6CisKIDIwMjAtMDEtMDUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNzXSBBZGQgcmVtb3RlIE1JTUUg
dHlwZSBjYWNoZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlT
b3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5U291cmNlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3
OSw3IEBAIHZvaWQgRmV0Y2hCb2R5U291cmNlOjpkb0NhbmNlbCgpCiAKIHZvaWQgRmV0Y2hCb2R5
U291cmNlOjpjbG9zZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAKICAgICBGZXRjaEJvZHlPd25lciogbV9i
b2R5T3duZXI7CiAgICAgYm9vbCBtX2lzQ2FuY2VsbGluZyB7IGZhbHNlIH07Ci0jaWZuZGVmIE5E
RUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2lzQ2xvc2VkIHsgZmFsc2UgfTsK
ICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VEZXRhaWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jdXJyZW50VXNhZ2UoZGV0
YWlscy5tX2N1cnJlbnRVc2FnZSkKICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShkZXRhaWxzLm1f
Y3JlYXRpb25UaW1lKQogICAgICAgICAsIG1fbW9kaWZpY2F0aW9uVGltZShkZXRhaWxzLm1fbW9k
aWZpY2F0aW9uVGltZSkKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAg
ICAgLCBtX3RocmVhZChkZXRhaWxzLm1fdGhyZWFkLmNvcHlSZWYoKSkKICNlbmRpZgogICAgIHsK
QEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBtX2N1cnJlbnRVc2FnZSA9IGRldGFp
bHMubV9jdXJyZW50VXNhZ2U7CiAgICAgICAgIG1fY3JlYXRpb25UaW1lID0gZGV0YWlscy5tX2Ny
ZWF0aW9uVGltZTsKICAgICAgICAgbV9tb2RpZmljYXRpb25UaW1lID0gZGV0YWlscy5tX21vZGlm
aWNhdGlvblRpbWU7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
IG1fdGhyZWFkID0gZGV0YWlscy5tX3RocmVhZC5jb3B5UmVmKCk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuICp0aGlzOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgY3Vy
cmVudFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VXNhZ2U7IH0KICAgICBPcHRpb25h
bDxXYWxsVGltZT4gY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7
IH0KICAgICBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIFRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICNlbmRpZgogCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9j
dXJyZW50VXNhZ2UgeyAwIH07CiAgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJr
YWJsZVRyYWl0cz4gbV9jcmVhdGlvblRpbWU7CiAgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxU
aW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9tb2RpZmljYXRpb25UaW1lOwotI2lmbmRlZiBOREVCVUcK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpj
dXJyZW50KCkgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIERhdGFiYXNlVGFzazo6cGVyZm9ybVRh
c2soKQogICAgIGlmIChtX3N5bmNocm9uaXplcikKICAgICAgICAgbV9zeW5jaHJvbml6ZXItPnRh
c2tDb21wbGV0ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIG1fY29tcGxldGUgPSB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgJKHJldmlzaW9uIDI1
NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8vIENhbGxl
ZCBieSB0aGUgdGFzay4KICAgICB2b2lkIHRhc2tDb21wbGV0ZWQoKTsKIAotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaGFzQ2hlY2tlZEZvclRlcm1pbmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNDaGVja2VkRm9yVGVybWluYXRpb247IH0KICAgICB2b2lk
IHNldEhhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbigpIHsgbV9oYXNDaGVja2VkRm9yVGVybWluYXRp
b24gPSB0cnVlOyB9CiAjZW5kaWYKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fdGFza0NvbXBsZXRlZCB7IGZhbHNlIH07CiAgICAgTG9jayBtX3N5bmNocm9ub3VzTXV0ZXg7
CiAgICAgQ29uZGl0aW9uIG1fc3luY2hyb25vdXNDb25kaXRpb247Ci0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc0NoZWNrZWRGb3JUZXJtaW5hdGlvbiB7
IGZhbHNlIH07CiAjZW5kaWYKIH07CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIERh
dGFiYXNlJiBkYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaGFzU3luY2hyb25p
emVyKCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbml6ZXI7IH0KICAgICBib29sIGhhc0NoZWNr
ZWRGb3JUZXJtaW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3luY2hyb25pemVyLT5oYXNDaGVj
a2VkRm9yVGVybWluYXRpb24oKTsgfQogI2VuZGlmCkBAIC05Miw3ICs5Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3QgPSAwOwogI2Vu
ZGlmCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29s
IG1fY29tcGxldGUgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRGF0YWJh
c2VUaHJlYWQ6OnJlcXVlc3RUZXJtaW5hdGlvbigKIAogYm9vbCBEYXRhYmFzZVRocmVhZDo6dGVy
bWluYXRpb25SZXF1ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0YXNrU3luY2hyb25p
emVyKSBjb25zdAogewotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlm
ICh0YXNrU3luY2hyb25pemVyKQogICAgICAgICB0YXNrU3luY2hyb25pemVyLT5zZXRIYXNDaGVj
a2VkRm9yVGVybWluYXRpb24oKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5j
cHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYx
LDcgQEAgdm9pZCBmaW5kSGlnaFpvbWJpZXMoUHJvZ3JhbSYgcHJvZ3JhbSkKIHsKICAgICBVTlVT
RURfUEFSQU0ocHJvZ3JhbSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBIaWdoWm9tYmllRmluZGVyIGZpbmRlcjsKICAgICBmaW5kZXIuVmlzaXRvcjo6
dmlzaXQocHJvZ3JhbSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMSW5mZXJUeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5cGVzLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xJbmZlclR5
cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgYm9vbCBtYXRj
aGVzKGNvbnN0IEFTVDo6VHlwZSYgdW5pCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYg
KGlzPEFTVDo6TmFtZWRUeXBlPih1bmlmeVRoaXMpICYmIGlzPEFTVDo6TmFtZWRUeXBlPih1bmlm
eU90aGVyKSkgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICBhdXRvJiBuYW1lZFRoaXMgPSBkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZnlUaGlz
KTsKICAgICAgICAgYXV0byYgbmFtZWRPdGhlciA9IGRvd25jYXN0PEFTVDo6TmFtZWRUeXBlPih1
bmlmeU90aGVyKTsKICAgICAgICAgQVNTRVJUKCFpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1l
ZFRoaXMpICYmICFpczxBU1Q6OlR5cGVEZWZpbml0aW9uPihuYW1lZE90aGVyKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgV0hMU0wgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiBzdGF0aWMgQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24qIGdldE5hdGl2ZVR5cGVEZWNs
YXJhdGlvbihBU1Q6OlJlc29sdmFibGVUeXBlJiByZXNvbHZhYmxlVHlwZSkKIHsKICAgICBpZiAo
IWlzPEFTVDo6VHlwZVJlZmVyZW5jZT4ocmVzb2x2YWJsZVR5cGUucmVzb2x2ZWRUeXBlKCkpKQpA
QCAtNzMsMTQgKzczLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChuYXRpdmVUeXBlRGVj
bGFyYXRpb24tPmNhblJlcHJlc2VudFVuc2lnbmVkSW50ZWdlcigpKHVuc2lnbmVkSW50ZWdlckxp
dGVyYWxUeXBlLnZhbHVlKCkpKTsKICAgICB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAogdm9pZCBjaGVja0xpdGVyYWxUeXBlcyhQcm9ncmFtJiBwcm9ncmFtKQogewot
I2lmIEFTU0VSVF9ESVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSNlbHNlCisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBMaXRlcmFsVHlwZUNoZWNrZXIoKS5WaXNpdG9yOjp2aXNp
dChwcm9ncmFtKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwogI2VuZGlmCiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhl
c2l6ZUNvbnN0cnVjdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJncHUvV0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTeW50
aGVzaXplQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmROYW1lZFR5cGUoQVNUOjpOYW1lZFR5cGUmIHR5cGUp
CiAgICAgewogICAgICAgICAvLyBUaGUgd2F5IHdlIHdhbGsgdGhlIEFTVCBlbnN1cmVzIHdlIHNo
b3VsZCBuZXZlciB2aXNpdCBhIG5hbWVkIHR5cGUgdHdpY2UuCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX25hbWVk
VHlwZXMpCiAgICAgICAgICAgICBBU1NFUlQoJmVudHJ5LmdldCgpLnVuaWZ5Tm9kZSgpICE9ICZ0
eXBlLnVuaWZ5Tm9kZSgpKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQWRkcmVzc1NwYWNlLmgJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML0FT
VC9XSExTTEFkZHJlc3NTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIGNs
YXNzIFR5cGVBbm5vdGF0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBUeXBlQW5ub3RhdGlvbigpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgICAgIDogbV9lbXB0eSh0cnVlKQogI2VuZGlmCiAgICAgewpAQCAtMTI5
LDcgKzEyOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBWYXJpYW50PExlZnRWYWx1ZSwg
QWJzdHJhY3RMZWZ0VmFsdWUsIFJpZ2h0VmFsdWU+IG1faW5uZXI7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2VtcHR5IHsgZmFsc2UgfTsKICNl
bmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZWY8VGhyZWFk
PiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZl
bnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcgogI2VuZGlmCiB9CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Nsb25l
SW5TaGFkb3dUcmVlT2ZTVkdVc2VFbGVtZW50KE5vZGUmIG9yaWdpbmFsTm9kZSwgRXZlbnRUYXJn
ZXQmIGV2ZW50VGFyZ2V0KQogewogICAgIGlmICghZXZlbnRUYXJnZXQuaXNOb2RlKCkpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlF
dmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZShDcmVhdGlvbkFy
Z3VtZW50cyYmKTsKICAgICBKU0xhenlFdmVudExpc3RlbmVyKENyZWF0aW9uQXJndW1lbnRzJiYs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mKTsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgY2hlY2tWYWxpZGl0
eUZvckV2ZW50VGFyZ2V0KEV2ZW50VGFyZ2V0JikgZmluYWw7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRvQnl0ZWNvZGUo
Q29tYmluZWRVUgogCiBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRl
bnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbmcmJiBydWxlSlNPTiwgVmVjdG9y
PENvbnRlbnRFeHRlbnNpb25SdWxlPiYmIHBhcnNlZFJ1bGVMaXN0KQogewotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGNhbGxPbk1haW5UaHJlYWQoW3J1bGVK
U09OID0gcnVsZUpTT04uaXNvbGF0ZWRDb3B5KCksIHBhcnNlZFJ1bGVMaXN0ID0gcGFyc2VkUnVs
ZUxpc3QuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgQVNTRVJUKHBhcnNlUnVsZUxpc3QocnVs
ZUpTT04pLnZhbHVlKCkgPT0gcGFyc2VkUnVsZUxpc3QpOwogICAgIH0pOwpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjg3LDcgKzEyODcsNyBAQCBDU1NVbml0VHlwZSBDU1NDYWxjT3BlcmF0aW9uTm9k
ZTo6cHJpbWl0CiAgICAgYXV0byB1bml0Q2F0ZWdvcnkgPSBjYXRlZ29yeSgpOwogICAgIHN3aXRj
aCAodW5pdENhdGVnb3J5KSB7CiAgICAgY2FzZSBDYWxjdWxhdGlvbkNhdGVnb3J5OjpOdW1iZXI6
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAo
YXV0byYgY2hpbGQgOiBtX2NoaWxkcmVuKQogICAgICAgICAgICAgQVNTRVJUKGNoaWxkLT5jYXRl
Z29yeSgpID09IENhbGN1bGF0aW9uQ2F0ZWdvcnk6Ok51bWJlcik7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4Myw3ICszMDgzLDcgQEAgUmVm
UHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOgogICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dEVtcGhhc2lzQ3VzdG9tTWFy
aygpLCBDU1NVbml0VHlwZTo6Q1NTX1NUUklORyk7CiAgICAgICAgICAgICBjYXNlIFRleHRFbXBo
YXNpc01hcms6OkF1dG86CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
aWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAgICAg
RkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICAgICAgICAgIGNhc2UgVGV4dEVtcGhhc2lzTWFyazo6
RG90OgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCShyZXZp
c2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
VmFsaWRDU1NVbml0VHlwZUZvcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJp
bmdUeXBlKENTU1VuaXRUeXBlIHR5cGUpCiB7CkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU3RyaW5nVHlwZShDU1NVbml0VAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
I2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqLCBTdHJpbmc+IENTU1RleHRD
YWNoZTsKIHN0YXRpYyBDU1NUZXh0Q2FjaGUmIGNzc1RleHRDYWNoZSgpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxMiw3ICs4MTIsNyBAQCBT
dHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTCiAgICAgICAgICAgICByZXR1
cm4gdGFnSGlzdG9yeS0+c2VsZWN0b3JUZXh0KCIgfiAiICsgYnVpbGRlci50b1N0cmluZygpICsg
cmlnaHRTaWRlKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3Vic2VsZWN0b3I6CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAh
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJp
dmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KiBtX3N0eWxlU2hlZXQ7CiB9OwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVD
U1NTdHlsZVNoZWV0UGFyZW50KE5vZGUqIHBhcmVudE5vZGUpCiB7CiAgICAgLy8gT25seSB0aGVz
ZSBub2RlcyBjYW4gYmUgcGFyZW50cyBvZiBTdHlsZVNoZWV0cywgYW5kIHRoZXkgbmVlZCB0byBj
YWxsIGNsZWFyT3duZXJOb2RlKCkgd2hlbiBtb3ZlZCBvdXQgb2YgZG9jdW1lbnQuCkBAIC02Nyw3
ICs2Nyw3IEBAIHN0YXRpYyBib29sIGlzQWNjZXB0YWJsZUNTU1N0eWxlU2hlZXRQYXIKICAgICAg
ICAgfHwgaXM8U1ZHU3R5bGVFbGVtZW50PigqcGFyZW50Tm9kZSkKICAgICAgICAgfHwgcGFyZW50
Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU7CiB9
Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBSZWY8Q1NTU3R5bGVTaGVldD4g
Q1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQsIENT
U0ltcG9ydFJ1bGUqIG93bmVyUnVsZSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9BY3Rp
dmVET01PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBBY3RpdmVE
T01PYmplY3Q6On5BY3RpdmVET01PYmplY3QoKQogCiB2b2lkIEFjdGl2ZURPTU9iamVjdDo6c3Vz
cGVuZElmTmVlZGVkKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBBU1NFUlQoIW1fc3VzcGVuZElmTmVlZGVkV2FzQ2FsbGVkKTsKICAgICBtX3N1c3Bl
bmRJZk5lZWRlZFdhc0NhbGxlZCA9IHRydWU7CiAjZW5kaWYKQEAgLTk1LDE4ICs5NSwxNiBAQCB2
b2lkIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKICAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZCgqdGhpcyk7CiB9CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIAogdm9pZCBBY3RpdmVE
T01PYmplY3Q6OmFzc2VydFN1c3BlbmRJZk5lZWRlZFdhc0NhbGxlZCgpIGNvbnN0CiB7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgIGlmICghbV9zdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQpCiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNhbGwgc3VzcGVuZElmTmVlZGVkKCkgZm9y
ICVzIiwgYWN0aXZlRE9NT2JqZWN0TmFtZSgpKTsKLSNlbmRpZgogICAgIEFTU0VSVChtX3N1c3Bl
bmRJZk5lZWRlZFdhc0NhbGxlZCk7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECiAKIGJvb2wgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudEludGVybmFsKEV2ZW50VGFyZ2V0JiwgVGFza1NvdXJjZSwgUmVmPEV2ZW50PiYmKTsK
IAogICAgIHVuc2lnbmVkIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQgeyAwIH07Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX3N1c3BlbmRJZk5lZWRl
ZFdhc0NhbGxlZCB7IGZhbHNlIH07CiAgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7
IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBBY3RpdmVET01PYmplY3RFdmVudERpc3BhdGNoVGFzazsKIH07
CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogaW5saW5lIHZv
aWQgQWN0aXZlRE9NT2JqZWN0Ojphc3NlcnRTdXNwZW5kSWZOZWVkZWRXYXNDYWxsZWQoKSBjb25z
dAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZl
bnRzKFIKIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIENoaWxkTm9kZXNMYXp5U25hcHNob3Q6Omxh
dGVzdFNuYXBzaG90OwogCiB1bnNpZ25lZCBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OnNfY291bnQg
PSAwOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpF
dmVudEFsbG93ZWRTY29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIENv
bnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKiBDb250YWluZXJDaGlsZFJlbW92YWxTY29wZTo6c19z
Y29wZSA9IG51bGxwdHI7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBEZWxldGUgdGhpcyBj
bGFzcyBhZnRlciBmaXhpbmcgRm9ybUFzc29jaWF0ZWRFbGVtZW50IHRvIGF2b2lkIGNhbGxpbmcg
Z2V0RWxlbWVudEJ5SWQgZHVyaW5nIGEgdHJlZSByZW1vdmFsLgotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogY2xhc3MgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUg
ewogcHVibGljOgogICAgIENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKENvbnRhaW5lck5vZGUm
IHBhcmVudE9mUmVtb3ZlZFRyZWUsIE5vZGUmIGNoaWxkKQpAQCAtNTQsMTIgKzU0LDEyIEBAIHBy
aXZhdGU6CiAgICAgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUqIG1fcHJldmlvdXNTY29wZTsK
ICAgICBzdGF0aWMgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUqIHNfc2NvcGU7CiB9OwotI2Vs
c2UKKyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogY2xhc3MgQ29udGFpbmVyQ2hpbGRSZW1v
dmFsU2NvcGUgewogcHVibGljOgogICAgIENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlKENvbnRh
aW5lck5vZGUmLCBOb2RlJikgeyB9CiB9OwotI2VuZGlmCisjZW5kaWYgLy8gbm90IEFTU0VSVF9F
TkFCTEVECiAKIE5vZGVWZWN0b3Igbm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoQ29udGFpbmVyTm9k
ZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUsIE5vZGUmKTsKIHZvaWQgbm90aWZ5Q2hpbGROb2RlUmVt
b3ZlZChDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlLCBOb2RlJik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5j
cHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50
UmVhY3Rpb25RdWV1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lk
IEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlCiAgICAgcXVldWUtPmFkZChlbGVt
ZW50KTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogdW5z
aWduZWQgQ3VzdG9tRWxlbWVudFJlYWN0aW9uRGlzYWxsb3dlZFNjb3BlOjpzX2N1c3RvbUVsZW1l
bnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCA9IDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgJKHJldmlzaW9uIDI1
NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NCwyNSArOTQsMjUgQEAgY2xhc3MgQ3VzdG9tRWxlbWVudFJl
YWN0aW9uRGlzYWxsb3dlZFNjbwogcHVibGljOgogICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvbkRp
c2FsbG93ZWRTY29wZSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCsr
OwogI2VuZGlmCiAgICAgfQogCiAgICAgfkN1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRT
Y29wZSgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICAgICBBU1NFUlQoc19jdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxvd2VkQ291bnQpOwog
ICAgICAgICBzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudC0tOwogI2VuZGlm
CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
c3RhdGljIGJvb2wgaXNSZWFjdGlvbkFsbG93ZWQoKSB7IHJldHVybiAhc19jdXN0b21FbGVtZW50
UmVhY3Rpb25EaXNhbGxvd2VkQ291bnQ7IH0KICNlbmRpZgogCiAgICAgY2xhc3MgQWxsb3dlZFNj
b3BlIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBwdWJs
aWM6CiAgICAgICAgIEFsbG93ZWRTY29wZSgpCiAgICAgICAgICAgICA6IG1fb3JpZ2luYWxDb3Vu
dChzX2N1c3RvbUVsZW1lbnRSZWFjdGlvbkRpc2FsbG93ZWRDb3VudCkKQEAgLTEyNywxMSArMTI3
LDExIEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fb3JpZ2lu
YWxDb3VudDsKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgfTsKIAogcHJp
dmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgc19jdXN0b21FbGVtZW50UmVhY3Rpb25EaXNhbGxv
d2VkQ291bnQ7CiAKICAgICBmcmllbmQgY2xhc3MgQWxsb3dlZFNjb3BlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY2LDcgKzExNjYsNyBAQCBzdHJ1Y3Qg
VW5pY29kZUNvZGVQb2ludFJhbmdlIHsKICAgICBVQ2hhcjMyIG1heGltdW07CiB9OwogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVW5pY29kZUNvZGVQb2ludFJhbmdlJiBhLCBjb25zdCBVbmljb2Rl
Q29kZVBvaW50UmFuZ2UmIGIpCiB7CkBAIC0xMTc1LDcgKzExNzUsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVuaWNvCiAgICAgcmV0dXJuIGEubWF4aW11bSA8IGIubWlu
aW11bTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIGlu
bGluZSBib29sIG9wZXJhdG9yPChjb25zdCBVbmljb2RlQ29kZVBvaW50UmFuZ2UmIGEsIFVDaGFy
MzIgYikKIHsKQEAgLTgyMTAsNyArODIxMCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmhpdFRlc3QoY29u
c3QgSGl0VGVzdFJlcXUKICAgICBpZiAoIXJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gaGl0VGVzdFJlc3RvcmVyIHsgbV9pbkhpdFRlc3RpbmcsIHRydWUgfTsK
ICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NSw3ICsz
NzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuIHx8ICFt
X3JlZmVyZW5jaW5nTm9kZUNvdW50KTsKICAgICAgICAgLS1tX3JlZmVyZW5jaW5nTm9kZUNvdW50
OwogICAgICAgICBpZiAoIW1fcmVmZXJlbmNpbmdOb2RlQ291bnQgJiYgIXJlZkNvdW50KCkpIHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1f
ZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAgIG1fcmVmQ291bnRB
bmRQYXJlbnRCaXQgPSBzX3JlZkNvdW50SW5jcmVtZW50OyAvLyBBdm9pZCBkb3VibGUgZGVzdHJ1
Y3Rpb24gdGhyb3VnaCB1c2Ugb2YgUmVmPFQ+L1JlZlB0cjxUPi4gKFRoaXMgaXMgYSBzZWN1cml0
eSBtaXRpZ2F0aW9uIGluIGNhc2Ugb2YgcHJvZ3JhbW1lciBlcnJvci4gSXQgd2lsbCBBU1NFUlQg
aW4gZGVidWcgYnVpbGRzLikKQEAgLTE1MjcsNyArMTUyNyw3IEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpbkhpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVy
biBtX2luSGl0VGVzdGluZzsgfQogI2VuZGlmCiAKQEAgLTIwMDQsNyArMjAwNCw3IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fYXJlRGV2aWNlTW90aW9uQW5kT3JpZW50YXRpb25VcGRhdGVzU3Vz
cGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlckRpZEludGVyYWN0V2l0aFBhZ2UgeyBm
YWxzZSB9OwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJv
b2wgbV9pbkhpdFRlc3RpbmcgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI4OCw3ICsyMjg4LDcgQEAgdm9pZCBFbGVtZW50Ojph
ZGRTaGFkb3dSb290KFJlZjxTaGFkb3dSbwogICAgICAgICBzaGFkb3dSb290LnNldEhvc3QodGhp
cyk7CiAgICAgICAgIHNoYWRvd1Jvb3Quc2V0UGFyZW50VHJlZVNjb3BlKHRyZWVTY29wZSgpKTsK
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBBU1NF
UlQobm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQoKnRoaXMsIHNoYWRvd1Jvb3QpLmlzRW1wdHkoKSk7
CiAjZWxzZQogICAgICAgICBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCgqdGhpcywgc2hhZG93Um9v
dCk7CkBAIC0zNTUxLDcgKzM1NTEsNyBAQCBEYXRhc2V0RE9NU3RyaW5nTWFwJiBFbGVtZW50Ojpk
YXRhc2V0KCkKIAogVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CiAgICAgICAgIGlmIChjb25zdCBBdHRyaWJ1
dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGVCeU5hbWUobmFtZSkpCiAgICAgICAgICAgICBB
U1NFUlQoaXNVUkxBdHRyaWJ1dGUoKmF0dHJpYnV0ZSkpOwpAQCAtMzU2Miw3ICszNTYyLDcgQEAg
VVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaQogCiBVUkwgRWxlbWVudDo6
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAoZWxl
bWVudERhdGEoKSkgewogICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBm
aW5kQXR0cmlidXRlQnlOYW1lKG5hbWUpKQogICAgICAgICAgICAgQVNTRVJUKGlzVVJMQXR0cmli
dXRlKCphdHRyaWJ1dGUpKTsKQEAgLTM3ODEsNyArMzc4MSw3IEBAIGJvb2wgRWxlbWVudDo6aXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpIGMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmbmRlZiBO
REVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBFbGVtZW50OjpmYXN0QXR0cmlidXRlTG9v
a3VwQWxsb3dlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogewogICAgIGlmIChu
YW1lID09IEhUTUxOYW1lczo6c3R5bGVBdHRyKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZp
c2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MDcsNyArNzA3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGF0dGFjaEF0
dHJpYnV0ZU5vZGVJZk5lZWRlZChBdHRyJik7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxv
d2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3Iu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8QW5jZXN0b3JTaWJsaW5nLCAxNj4gbV9hbmNlc3RvclNpYmxpbmdT
dGFjazsKICAgICB1bnNpZ25lZCBtX2RlcHRoIHsgMCB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyBtX2Fz
c2VydGlvbnM7CiAjZW5kaWYKIH07CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5lIEVsZW1lbnRB
bmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOgogCiBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yKENvbnRhaW5lck5v
ZGUmIHJvb3QsIEZpcnN0Q2hpbGRUYWcpCiAgICAgOiBtX2N1cnJlbnQoZmlyc3RDaGlsZChyb290
KSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAsIG1fYXNz
ZXJ0aW9ucyhtX2N1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTExNSw3ICsxMTUsNyBAQCBpbmxpbmUg
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3I6CiAKIGlubGluZSBFbGVtZW50QW5kVGV4
dERlc2NlbmRhbnRJdGVyYXRvcjo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IoQ29u
dGFpbmVyTm9kZSYgcm9vdCwgTm9kZSogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50
KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3Nl
cnRpb25zKG1fY3VycmVudCkKICNlbmRpZgogewpAQCAtMTQzLDcgKzE0Myw3IEBAIGlubGluZSBF
bGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjoKIAogaW5saW5lIHZvaWQgRWxlbWVudEFu
ZFRleHREZXNjZW5kYW50SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKIHsKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsK
ICNlbmRpZgogfQpAQCAtMTc4LDcgKzE3OCw3IEBAIGlubGluZSB2b2lkIEVsZW1lbnRBbmRUZXh0
RGVzY2VuZGFudEl0ZXIKICAgICBtX2RlcHRoID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay5sYXN0
KCkuZGVwdGg7CiAgICAgbV9hbmNlc3RvclNpYmxpbmdTdGFjay5yZW1vdmVMYXN0KCk7CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBEcm9wIHRoZSBh
c3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgogICAgIGlmICghbV9j
dXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24o
KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRl
cmF0b3ImCiAKICAgICBtX2N1cnJlbnQgPSBuZXh0U2libGluZygqbV9jdXJyZW50KTsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghbV9jdXJyZW50
KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKICNl
bmRpZgpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJ
dGVyYXRvciYKIAogICAgIG1fY3VycmVudCA9IHByZXZpb3VzU2libGluZygqbV9jdXJyZW50KTsK
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghbV9j
dXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24o
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
IHByaXZhdGU6CiAgICAgRWxlbWVudCogbV9jdXJyZW50OwogICAgIFZlY3RvcjxFbGVtZW50Kiwg
MTY+IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2s7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9u
czsKICNlbmRpZgogfTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBFbGVt
ZW50KiBtX2N1cnJlbnQ7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAxNj4gbV9hbmNlc3RvclNpYmxp
bmdTdGFjazsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwogI2VuZGlmCiB9OwpAQCAt
MTE1LDcgKzExNSw3IEBAIGlubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpFbGVtZW4K
IAogaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OkVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3IoRWxlbWVudCogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKGN1
cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbmxpbmUgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjo6RWxlbWVuCiAKIGlubGluZSB2b2lkIEVsZW1lbnREZXNjZW5kYW50SXRl
cmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKICNlbmRpZgogfQpAQCAtMTUx
LDcgKzE1MSw3IEBAIEFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYKIAog
ICAgIG1fY3VycmVudCA9IG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudGFrZUxhc3QoKTsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFz
c2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1
cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigp
OwpAQCAtMTg1LDcgKzE4NSw3IEBAIEFMV0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYKIAogICAgIG1fY3VycmVudCA9IGRlZXBlc3RTaWJsaW5nOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdo
ZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAg
ICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkBAIC0yMjgs
NyArMjI4LDcgQEAgaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RQogCiBp
bmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENv
bnN0SXRlcmF0b3IoY29uc3QgRWxlbWVudCogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJy
ZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9h
c3NlcnRpb25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTIzNyw3ICsyMzcsNyBAQCBpbmxpbmUg
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFCiAKIGlubGluZSB2b2lkIEVsZW1lbnRE
ZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQogewotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwog
I2VuZGlmCiB9CkBAIC0yNjQsNyArMjY0LDcgQEAgQUxXQVlTX0lOTElORSBFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcgogCiAgICAgbV9jdXJyZW50ID0gbV9hbmNlc3RvclNpYmxpbmdTdGFjay50
YWtlTGFzdCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVu
ZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERp
c3BhdGNoQXNzZXJ0aW9uKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnRU
cmF2ZXJzYWwuaCIKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
I2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCIKICNlbmRpZgogCkBAIC01OCw3
ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290OwogICAg
IEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zIG1fYXNzZXJ0aW9uczsK
ICNlbmRpZgogfTsKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBDb250YWlu
ZXJOb2RlKiBtX3Jvb3Q7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEVsZW1lbnRJdGVyYXRv
ckFzc2VydGlvbnMgbV9hc3NlcnRpb25zOwogI2VuZGlmCiB9OwpAQCAtMTA2LDcgKzEwNiw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+OjpFbGVtZW50SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwg
RWxlbWVudFR5cGUqIGN1cnJlbnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICAsIG1fY3VycmVu
dChjdXJyZW50KQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICwgbV9hc3NlcnRpb25zKGN1cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTExOCw3ICsxMTgsNyBAQCBp
bmxpbmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlCiAgICAgQVNTRVJUKG1fY3Vy
cmVudCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAg
ICAgbV9jdXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBt
X3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8v
IERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAg
ICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRj
aEFzc2VydGlvbigpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1f
YXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cygqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQp
CiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAt
MTQ2LDcgKzE0Niw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGUK
ICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpu
ZXh0U2libGluZygqbV9jdXJyZW50KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAvLyBEcm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVh
Y2hlcyB0aGUgZW5kLgogICAgIGlmICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMu
ZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUg
RWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlCiAgICAgQVNTRVJUKG1fY3VycmVudCk7
CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9j
dXJyZW50ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKCptX2N1cnJl
bnQpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERy
b3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAg
aWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFz
c2VydGlvbigpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNz
ZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhl
IGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFt
X2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlv
bigpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+JiBFbGUKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSB2b2lkIEVs
ZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OmRyb3BBc3NlcnRpb25zKCkKIHsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Fzc2VydGlvbnMuY2xlYXIo
KTsKICNlbmRpZgogfQpAQCAtMjEzLDcgKzIxMyw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8
RWxlbWVudFR5cGU+JiBFbGUKICAgICBBU1NFUlQobV9jdXJyZW50ICE9IG1fcm9vdCk7CiAgICAg
QVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50
ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUg
YXNzZXJ0aW9uIHdoZW4gdGhlIGl0ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1f
Y3VycmVudCkKICAgICAgICAgbV9hc3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9u
KCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6RWxlbWVudENvbnN0SXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSogcm9vdCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJl
bnQpCiAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICAsIG1fY3VycmVudChjdXJyZW50KQotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9hc3NlcnRpb25zKGN1
cnJlbnQpCiAjZW5kaWYKIHsKQEAgLTI3Niw3ICsyNzYsNyBAQCBpbmxpbmUgRWxlbWVudENvbnN0
SXRlcmF0b3I8RWxlbWVudFR5cGU+CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJU
KCFtX2Fzc2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlv
biB3aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQp
CiAgICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAt
MjkwLDcgKzI5MCw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4K
ICAgICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVl
SGFzTXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpw
cmV2aW91cygqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRoZSBpdGVyYXRv
ciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIG1fYXNzZXJ0
aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzA0LDcgKzMwNCw3IEBAIGlu
bGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBBU1NFUlQobV9jdXJy
ZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFzTXV0YXRlZCgpKTsKICAg
ICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZygqbV9jdXJy
ZW50KTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBE
cm9wIHRoZSBhc3NlcnRpb24gd2hlbiB0aGUgaXRlcmF0b3IgcmVhY2hlcyB0aGUgZW5kLgogICAg
IGlmICghbV9jdXJyZW50KQogICAgICAgICBtX2Fzc2VydGlvbnMuZHJvcEV2ZW50RGlzcGF0Y2hB
c3NlcnRpb24oKTsKQEAgLTMxOCw3ICszMTgsNyBAQCBpbmxpbmUgRWxlbWVudENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CiAgICAgQVNTRVJUKCFtX2Fz
c2VydGlvbnMuZG9tVHJlZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKCptX2N1cnJlbnQpOwotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3
aGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAg
ICAgICAgIG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzMy
LDcgKzMzMiw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAg
ICBBU1NFUlQobV9jdXJyZW50KTsKICAgICBBU1NFUlQoIW1fYXNzZXJ0aW9ucy5kb21UcmVlSGFz
TXV0YXRlZCgpKTsKICAgICBtX2N1cnJlbnQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0
U2tpcHBpbmdDaGlsZHJlbigqbV9jdXJyZW50LCBtX3Jvb3QpOwotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIERyb3AgdGhlIGFzc2VydGlvbiB3aGVuIHRo
ZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQuCiAgICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAg
IG1fYXNzZXJ0aW9ucy5kcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpOwpAQCAtMzQ3LDcgKzM0
Nyw3IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4KICAgICBBU1NF
UlQobV9jdXJyZW50ICE9IG1fcm9vdCk7CiAgICAgQVNTRVJUKCFtX2Fzc2VydGlvbnMuZG9tVHJl
ZUhhc011dGF0ZWQoKSk7CiAgICAgbV9jdXJyZW50ID0gZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKm1fY3VycmVudCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gRHJvcCB0aGUgYXNzZXJ0aW9uIHdoZW4gdGhlIGl0
ZXJhdG9yIHJlYWNoZXMgdGhlIGVuZC4KICAgICBpZiAoIW1fY3VycmVudCkKICAgICAgICAgbV9h
c3NlcnRpb25zLmRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CkBAIC0zNTgsNyArMzU4LDcg
QEAgaW5saW5lIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPgogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIHZvaWQgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9ucygpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7CiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1
LDcgKzExNSw3IEBAIGJvb2wgVG91Y2hFdmVudENvbnRleHQ6OmlzVG91Y2hFdmVudENvbnQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogCiB2b2lkIFRvdWNoRXZlbnRDb250ZXh0OjpjaGVja1JlYWNoYWJpbGl0eShjb25zdCBS
ZWY8VG91Y2hMaXN0PiYgdG91Y2hMaXN0KSBjb25zdAogewpAQCAtMTI0LDcgKzEyNCw3IEBAIHZv
aWQgVG91Y2hFdmVudENvbnRleHQ6OmNoZWNrUmVhY2hhYmlsaXQKICAgICAgICAgQVNTRVJUKCFp
c1VucmVhY2hhYmxlTm9kZShkb3duY2FzdDxOb2RlPih0b3VjaExpc3QtPml0ZW0oaSktPnRhcmdl
dCgpKSkpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNUb3VjaEV2ZW50Q29udGV4dCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc1VucmVhY2hhYmxlTm9k
ZShFdmVudFRhcmdldCopIGNvbnN0OwogI2VuZGlmCiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2
YXRlOgogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogCiBpbmxpbmUgYm9vbCBFdmVudENvbnRleHQ6Omlz
VW5yZWFjaGFibGVOb2RlKEV2ZW50VGFyZ2V0KiB0YXJnZXQpIGNvbnN0CiB7CkBAIC0xMzQsNyAr
MTM0LDcgQEAgaW5saW5lIFRvdWNoTGlzdCYgVG91Y2hFdmVudENvbnRleHQ6OnRvdQogCiAjZW5k
aWYKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIEFTU0VSVF9ESVNBQkxFRAorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpICYmICFBU1NFUlRfRU5BQkxFRAogCiBpbmxpbmUgdm9pZCBUb3Vj
aEV2ZW50Q29udGV4dDo6Y2hlY2tSZWFjaGFiaWxpdHkoY29uc3QgUmVmPFRvdWNoTGlzdD4mKSBj
b25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBdHRyaWJ1dGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgdmlydHVhbCB2b2lkIGNoZWNrVmFsaWRpdHlGb3JFdmVudFRhcmdldChFdmVudFRhcmdldCYp
IHsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguY3BwCShyZXZpc2lvbiAy
NTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDM4LDEzICs0MzgsMTMgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFyZ2V0ZXI6OmNvbGxl
Y3RUcmVlUwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2FuY2VzdG9y
VHJlZVNjb3Blcy5pc0VtcHR5KCkpOwogfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFT
U0VSVF9FTkFCTEVECiAKIGlubGluZSB2b2lkIFJlbGF0ZWROb2RlUmV0YXJnZXRlcjo6Y2hlY2tD
b25zaXN0ZW5jeShOb2RlJikKIHsKIH0KIAotI2Vsc2UKKyNlbHNlIC8vIEFTU0VSVF9FTkFCTEVE
CiAKIHZvaWQgUmVsYXRlZE5vZGVSZXRhcmdldGVyOjpjaGVja0NvbnNpc3RlbmN5KE5vZGUmIGN1
cnJlbnRUYXJnZXQpCiB7CkBAIC00NTQsNiArNDU0LDYgQEAgdm9pZCBSZWxhdGVkTm9kZVJldGFy
Z2V0ZXI6OmNoZWNrQ29uc2lzdAogICAgIEFTU0VSVChtX3JldGFyZ2V0ZWRSZWxhdGVkTm9kZSA9
PSAmY3VycmVudFRhcmdldC50cmVlU2NvcGUoKS5yZXRhcmdldFRvU2NvcGUobV9yZWxhdGVkTm9k
ZSkpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRTZW5kZXIuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50U2VuZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2FuY2VsRXZlbnQoVCYpOwogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5n
RXZlbnRzKCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29s
IGhhc1BlbmRpbmdFdmVudHMoVCYgc2VuZGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fZGlzcGF0Y2hTb29uTGlzdC5maW5kKCZzZW5kZXIpICE9IG5vdEZvdW5kIHx8IG1fZGlzcGF0
Y2hpbmdMaXN0LmZpbmQoJnNlbmRlcikgIT0gbm90Rm91bmQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBFdmVu
dFRhcmdldDo6aXNQYXltZW50UmVxdWVzdCgpIGNvbgogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVu
ZXI+JiYgbGlzdGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQog
ewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGxpc3RlbmVy
LT5jaGVja1ZhbGlkaXR5Rm9yRXZlbnRUYXJnZXQoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTE0OSw3
ICsxNDksNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlCiAgICAg
aWYgKGV4aXN0aW5nTGlzdGVuZXIpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCAqZXhpc3RpbmdMaXN0
ZW5lciwgZmFsc2UpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIGxpc3RlbmVyLT5jaGVja1ZhbGlkaXR5Rm9yRXZlbnRUYXJnZXQoKnRoaXMpOwog
I2VuZGlmCiAKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojppbm5lckludm9r
ZUV2ZW50TGlzdGVuCiAgICAgICAgIGlmIChyZWdpc3RlcmVkTGlzdGVuZXItPmlzUGFzc2l2ZSgp
KQogICAgICAgICAgICAgZXZlbnQuc2V0SW5QYXNzaXZlTGlzdGVuZXIodHJ1ZSk7CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgcmVnaXN0ZXJlZExp
c3RlbmVyLT5jYWxsYmFjaygpLmNoZWNrVmFsaWRpdHlGb3JFdmVudFRhcmdldCgqdGhpcyk7CiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAg
Tm9kZTo6fk5vZGUoKQogCiAgICAgZG9jdW1lbnQoKS5kZWNyZW1lbnRSZWZlcmVuY2luZ05vZGVD
b3VudCgpOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgKCFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpKQor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIChBU1NF
UlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykpCiAgICAgZm9yIChhdXRv
KiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewogICAgICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQtPnRvdWNoRXZlbnRMaXN0ZW5lcnND
b250YWluKCp0aGlzKSk7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFkb2N1bWVudC0+dG91Y2hFdmVudEhhbmRsZXJzQ29udGFpbigqdGhpcykpOwpAQCAtMTEzMCw3
ICsxMTMwLDcgQEAgU2hhZG93Um9vdCogTm9kZTo6Y29udGFpbmluZ1NoYWRvd1Jvb3QoKQogICAg
IHJldHVybiBpczxTaGFkb3dSb290Pihyb290KSA/IGRvd25jYXN0PFNoYWRvd1Jvb3Q+KCZyb290
KSA6IG51bGxwdHI7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKIC8vIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1jbG9zZWQtc2hhZG93
LWhpZGRlbgogc3RhdGljIGJvb2wgaXNDbG9zZWRTaGFkb3dIaWRkZW5Vc2luZ1NwZWNEZWZpbml0
aW9uKGNvbnN0IE5vZGUmIEEsIGNvbnN0IE5vZGUmIEIpCiB7CkBAIC0yMDk2LDcgKzIwOTYsNyBA
QCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1bWVuCiAjZW5kaWYKICAgICB9
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQor
I2lmIEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW9sZERvY3VtZW50LnRvdWNoRXZlbnRMaXN0ZW5lcnND
b250YWluKCp0aGlzKSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW9s
ZERvY3VtZW50LnRvdWNoRXZlbnRIYW5kbGVyc0NvbnRhaW4oKnRoaXMpKTsKQEAgLTI1MzUsNyAr
MjUzNSw3IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogICAgIGlmIChpczxTVkdFbGVt
ZW50PigqdGhpcykpCiAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCp0aGlzKS5kZXRhY2hB
bGxQcm9wZXJ0aWVzKCk7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCiAgICAgZGVsZXRlIHRoaXM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Miw3ICs0ODIsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNPbmVSZWYoKSBjb25zdDsKICAgICB1bnNpZ25lZCByZWZDb3VudCgpIGNvbnN0OwogCi0j
aWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2RlbGV0aW9uSGFz
QmVndW4geyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCB7IHRydWUgfTsK
QEAgLTY3OSw3ICs2NzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlUmFy
ZURhdGEsIE5vZGVSYXJlRGF0YURlbGV0ZXI+IG1fcmFyZURhdGE7CiB9OwogCi0jaWZuZGVmIE5E
RUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiBpbmxpbmUgdm9pZCBhZG9wdGVkKE5vZGUqIG5vZGUp
CiB7CiAgICAgaWYgKCFub2RlKQpAQCAtNjg4LDcgKzY4OCw3IEBAIGlubGluZSB2b2lkIGFkb3B0
ZWQoTm9kZSogbm9kZSkKICAgICBBU1NFUlQoIW5vZGUtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0
aW9uKTsKICAgICBub2RlLT5tX2Fkb3B0aW9uSXNSZXF1aXJlZCA9IGZhbHNlOwogfQotI2VuZGlm
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6OnJl
ZigpIGNvbnN0CiB7CkBAIC03MTAsNyArNzEwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIE5vZGU6
OmRlcmVmKCkgY29uc3QKICAgICBpZiAoIXVwZGF0ZWRSZWZDb3VudCkgewogICAgICAgICAvLyBE
b24ndCB1cGRhdGUgbV9yZWZDb3VudEFuZFBhcmVudEJpdCB0byBhdm9pZCBkb3VibGUgZGVzdHJ1
Y3Rpb24gdGhyb3VnaCB1c2Ugb2YgUmVmPFQ+L1JlZlB0cjxUPi4KICAgICAgICAgLy8gKFRoaXMg
aXMgYSBzZWN1cml0eSBtaXRpZ2F0aW9uIGluIGNhc2Ugb2YgcHJvZ3JhbW1lciBlcnJvci4gSXQg
d2lsbCBBU1NFUlQgaW4gZGVidWcgYnVpbGRzLikKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwogI2Vu
ZGlmCiAgICAgICAgIGNvbnN0X2Nhc3Q8Tm9kZSY+KCp0aGlzKS5yZW1vdmVkTGFzdFJlZigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHREaXNhbGxvd2VkU2NvcGUuaAkocmV2aXNp
b24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gUmVs
ZWFzZSBhc3NlcnRzIGluIGNhbkV4ZWN1dGVTY3JpcHQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9y
IHNlY3VyaXR5IGRlZmVuc2UgcHVycG9zZXMuCiAgICAgICAgIHN0YXRpYyBib29sIGlzRXZlbnRE
aXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoTm9kZSYgbm9kZSkKICAgICAgICAgewotI2lmICFBU1NF
UlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisjaWYgQVNTRVJUX0VO
QUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgICAgICAgICByZXR1cm4g
aXNTY3JpcHRBbGxvd2VkKCkgfHwgRXZlbnRBbGxvd2VkU2NvcGU6OmlzQWxsb3dlZE5vZGUobm9k
ZSk7CiAjZWxzZQogICAgICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwpAQCAtMTA5LDcgKzEw
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH07CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgY2xhc3MgRXZlbnRBbGxvd2VkU2NvcGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgRXZlbnRBbGxvd2VkU2NvcGUoQ29udGFpbmVy
Tm9kZSYgdXNlckFnZW50Q29udGVudFJvb3QpCkBAIC0xNDAsMTMgKzE0MCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIEV2ZW50QWxsb3dlZFNjb3BlKiBtX3ByZXZpb3VzU2NvcGU7CiAgICAgICAgIHN0
YXRpYyBFdmVudEFsbG93ZWRTY29wZSogc19jdXJyZW50U2NvcGU7CiAgICAgfTsKLSNlbHNlCisj
ZWxzZSAvLyBub3QgQVNTRVJUX0VOQUJMRUQKICAgICBjbGFzcyBFdmVudEFsbG93ZWRTY29wZSB7
CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBFdmVudEFsbG93ZWRTY29wZShDb250YWlu
ZXJOb2RlJikgeyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZE5vZGUoTm9kZSYpIHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwotI2VuZGlmCisjZW5kaWYgLy8gbm90IEFTU0VSVF9FTkFC
TEVECiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgb25jZSB0aGUgc3luYyBsYXlv
dXQgaW5zaWRlIFNWR0ltYWdlOjpkcmF3IGlzIHJlbW92ZWQsCiAgICAgLy8gQ2FjaGVkU1ZHRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEgbm8gbG9uZ2VyIHN5bmNocm9ub3VzbHkgY3JlYXRlcyBh
IGRvY3VtZW50IGR1cmluZyBzdHlsZSByZXNvbHV0aW9uLApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMsMTMgKzEyMywxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJl
bW92ZUZyb21DCiAgICAgfQogfQogCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9F
TkFCTEVECiAKIGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNoZWNrQ29uc2lz
dGVuY3koKSBjb25zdAogewogfQogCi0jZWxzZQorI2Vsc2UgLy8gQVNTRVJUX0VOQUJMRUQKIAog
dm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjaGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsK
QEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2hlY2tD
b25zaXMKICAgICB9CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIHsKICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBpZiAobV9jb250ZXh0SWRlbnRpZmllcikgewogICAgICAgICBMb2NrZXI8TG9j
az4gbG9ja2VyKGFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwTG9jayk7CiAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIWFsbFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRzTWFwKCkuY29udGFp
bnMobV9jb250ZXh0SWRlbnRpZmllciksCkBAIC0xNTksNyArMTU5LDcgQEAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgIH0KIAogICAgIG1faW5TY3JpcHRFeGVj
dXRpb25Db250ZXh0RGVzdHJ1Y3RvciA9IHRydWU7Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHNldEFjdGl2ZVNlcnZp
Y2VXb3JrZXIobnVsbHB0cik7CkBAIC0xNjgsNyArMTY4LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6flNjcmlwdEV4ZWN1dGlvbgogICAgIHdoaWxlIChhdXRvKiBkZXN0cnVjdGlvbk9ic2Vy
dmVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy50YWtlQW55KCkpCiAgICAgICAgIGRlc3RydWN0
aW9uT2JzZXJ2ZXItPmNvbnRleHREZXN0cm95ZWQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faW5TY3JpcHRFeGVjdXRpb25Db250ZXh0RGVzdHJ1
Y3RvciA9IGZhbHNlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNCw3ICsz
MjQsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgYm9vbCBtX2FjdGl2ZURPTU9iamVjdEFkZGl0
aW9uRm9yYmlkZGVuIHsgZmFsc2UgfTsKICAgICBib29sIG1fd2lsbHByb2Nlc3NNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0c1Nvb24geyBmYWxzZSB9OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2luU2NyaXB0RXhlY3V0aW9uQ29udGV4dERlc3Ry
dWN0b3IgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxl
Y3RvclF1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JR
dWVyeS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3Rv
clF1ZXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0
YXRpYyBib29sIGlzU2luZ2xlVGFnTmFtZVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yJiBzZWxl
Y3RvcikKIHsKICAgICByZXR1cm4gc2VsZWN0b3IuaXNMYXN0SW5UYWdIaXN0b3J5KCkgJiYgc2Vs
ZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6VGFnOwpAQCAtNDYsNyArNDYsNyBAQCBzdGF0
aWMgYm9vbCBpc1NpbmdsZUNsYXNzTmFtZVNlbGVjdG9yKGNvCiB7CiAgICAgcmV0dXJuIHNlbGVj
dG9yLmlzTGFzdEluVGFnSGlzdG9yeSgpICYmIHNlbGVjdG9yLm1hdGNoKCkgPT0gQ1NTU2VsZWN0
b3I6OkNsYXNzOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogZW51bSBj
bGFzcyBJZE1hdGNoaW5nVHlwZSA6IHVpbnQ4X3QgewogICAgIE5vbmUsCkBAIC01NDIsNyArNTQy
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZQogICAgIGNhc2Ug
Q29tcGlsZWRTaW5nbGVXaXRoUm9vdEZpbHRlcjoKICAgICBjYXNlIENvbXBpbGVkU2luZ2xlOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAh
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICNlbmRpZiAvLyBF
TkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNz
aWdubWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25t
ZW50LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3Np
Z25tZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc2xvdE5hbWVGcm9tU2xvCiAgICAgcmV0dXJuIHNsb3ROYW1lRnJvbUF0dHJp
YnV0ZVZhbHVlKGRvd25jYXN0PEVsZW1lbnQ+KGNoaWxkKS5hdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHNsb3RBdHRyKSk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKIHN0YXRpYyBIVE1MU2xvdEVsZW1lbnQqIGZpbmRTbG90RWxlbWVudChTaGFk
b3dSb290JiBzaGFkb3dSb290LCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZSkKIHsKICAgICBm
b3IgKGF1dG8mIHNsb3RFbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8SFRNTFNsb3RFbGVtZW50
PihzaGFkb3dSb290KSkgewpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgSFRNTFNsb3RFbGVtZW50
KiBmaW5kU2xvdEVsZW1lbnQoCiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQotI2VuZGlm
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogc3RhdGljIEhUTUxTbG90RWxlbWVudCogbmV4
dFNsb3RFbGVtZW50U2tpcHBpbmdTdWJ0cmVlKENvbnRhaW5lck5vZGUmIHN0YXJ0aW5nTm9kZSwg
Q29udGFpbmVyTm9kZSogc2tpcHBlZFN1YnRyZWUpCiB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9p
ZCBTbG90QXNzaWdubWVudDo6cmVuYW1lU2xvdEVsZW1lbnQoSAogCiB2b2lkIFNsb3RBc3NpZ25t
ZW50OjphZGRTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lLCBIVE1MU2xv
dEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQogewotI2lmbmRl
ZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEFTU0VSVCghbV9zbG90RWxlbWVudHNG
b3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKCZzbG90RWxlbWVudCkpOwogICAgIG1fc2xvdEVs
ZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5hZGQoJnNsb3RFbGVtZW50KTsKICNlbmRpZgpAQCAt
MTQyLDcgKzE0Miw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW0K
IAogdm9pZCBTbG90QXNzaWdubWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRv
bVN0cmluZyYgbmFtZSwgSFRNTFNsb3RFbGVtZW50JiBzbG90RWxlbWVudCwgQ29udGFpbmVyTm9k
ZSogb2xkUGFyZW50T2ZSZW1vdmVkVHJlZUZvclJlbW92YWwsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jv
b3QpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgQVNTRVJUKG1f
c2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucygmc2xvdEVsZW1lbnQpKTsK
ICAgICBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2sucmVtb3ZlKCZzbG90RWxlbWVu
dCk7CiAjZW5kaWYKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIFNsb3RBc3NpZ25tZW50OjpyZXNv
bHZlU2xvdHNBZnRlclNsCiAgICAgaWYgKG11dGF0aW9uVHlwZSA9PSBTbG90TXV0YXRpb25UeXBl
OjpJbnNlcnRpb24pIHsKICAgICAgICAgLy8gVGhpcyBjb2RlIHBhdGggaXMgdGFrZW4gb25seSB3
aGVuIGNvbnRpbnVlIGFib3ZlIGZvciAhY3VycmVudFNsb3QgaXMgdGFrZW4uCiAgICAgICAgIC8v
IGkuZS4gdGhlcmUgaXMgYSBuZXcgc2xvdCBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlIGJ1
dCB3ZSBoYXZlIHlldCB0byBpbnZva2UgYWRkU2xvdEVsZW1lbnRCeU5hbWUgb24gaXQuCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGZvciAoYXV0byYg
ZW50cnkgOiBtX3Nsb3RzKQogICAgICAgICAgICAgQVNTRVJUKGVudHJ5LnZhbHVlLT5zZWVuRmly
c3RFbGVtZW50IHx8ICFmaW5kU2xvdEVsZW1lbnQoc2hhZG93Um9vdCwgZW50cnkua2V5KSk7CiAj
ZW5kaWYKQEAgLTM0MSwxMCArMzQxLDggQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVu
dDo6ZmluZEZpcgogICAgIGlmIChzbG90LnNob3VsZFJlc29sdmVTbG90RWxlbWVudCgpKQogICAg
ICAgICByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKHNoYWRvd1Jvb3QpOwogCi0jaWZuZGVmIE5ERUJV
RwogICAgIEFTU0VSVCghc2xvdC5lbGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVu
Y3lDaGVjay5jb250YWlucyhzbG90LmVsZW1lbnQuZ2V0KCkpKTsKICAgICBBU1NFUlQoISFzbG90
LmVsZW1lbnQgPT0gISFzbG90LmVsZW1lbnRDb3VudCk7Ci0jZW5kaWYKIAogICAgIHJldHVybiBz
bG90LmVsZW1lbnQuZ2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2ln
bm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFNsb3Q+PiBtX3Nsb3RzOwogCi0jaWZuZGVm
IE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgSGFzaFNldDxIVE1MU2xvdEVsZW1lbnQq
PiBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2s7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZU9yZGVyZWRNYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgVHJlZVNjb3BlT3JkZXJlZE1hcDo6YWRkKGNv
bnN0IEF0b20KICAgICB9KTsKICAgICBNYXBFbnRyeSYgZW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNT
RVJUSU9OUykKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9O
UykKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZW50cnkucmVnaXN0ZXJl
ZEVsZW1lbnRzLmNvbnRhaW5zKCZlbGVtZW50KSk7CiAgICAgZW50cnkucmVnaXN0ZXJlZEVsZW1l
bnRzLmFkZCgmZWxlbWVudCk7CiAjZW5kaWYKQEAgLTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgRWxl
bWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0CiAgICAgICAgIHJldHVybiAmZWxlbWVudDsK
ICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAv
LyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQgbWF5IGNhbGwgZ2V0RWxlbWVudEJ5SWQgdG8gZmluZCBp
dHMgb3duZXIgZm9ybSBpbiB0aGUgbWlkZGxlIG9mIGEgdHJlZSByZW1vdmFsLgogICAgIGlmIChh
dXRvKiBjdXJyZW50U2NvcGUgPSBDb250YWluZXJDaGlsZFJlbW92YWxTY29wZTo6Y3VycmVudFNj
b3BlKCkpIHsKICAgICAgICAgQVNTRVJUKCZzY29wZS5yb290Tm9kZSgpID09ICZjdXJyZW50U2Nv
cGUtPnBhcmVudE9mUmVtb3ZlZFRyZWUoKS5yb290Tm9kZSgpKTsKQEAgLTEzNyw3ICsxMzcsNyBA
QCBpbmxpbmUgRWxlbWVudCogVHJlZVNjb3BlT3JkZXJlZE1hcDo6Z2V0CiAgICAgICAgIH0KICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlT3JkZXJlZE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGVPcmRlcmVkTWFwLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGVPcmRlcmVkTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRWxlbWVudCogZWxlbWVudCB7IG51bGxwdHIgfTsKICAg
ICAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CiAgICAgICAgIFZlY3RvcjxFbGVtZW50Kj4gb3Jk
ZXJlZExpc3Q7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJU
SU9OUykKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
ICAgICAgICAgSGFzaFNldDxFbGVtZW50Kj4gcmVnaXN0ZXJlZEVsZW1lbnRzOwogI2VuZGlmCiAg
ICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcg
KzE4Niw3IEBAIFN0cmluZyBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QKICAgICBy
ZXR1cm4gY29udGVudFR5cGUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIH0KIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBCbG9iOjppc05vcm1hbGl6
ZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIC8vIEZJWE1F
OiBEbyB3ZSByZWFsbHkgd2FudCB0byB0cmVhdCB0aGUgZW1wdHkgc3RyaW5nIGFuZCBudWxsIHN0
cmluZyBhcyB2YWxpZCBjb250ZW50IHR5cGVzPwpAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgQmxv
Yjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUoY29uc3QKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBVUkxSZWdpc3RyeSYgQmxv
Yjo6cmVnaXN0cnkoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgJKHJldmlzaW9u
IDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29udGVu
dFR5cGUoY29uc3QgU3RyaW5nJik7CiAgICAgLy8gVGhlIG5vcm1hbGl6YXRpb24gcHJvY2VkdXJl
IGRlc2NyaWJlZCBpbiB0aGUgRmlsZSBBUEkgc3BlYy4KICAgICBzdGF0aWMgU3RyaW5nIG5vcm1h
bGl6ZWRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBzdGF0aWMgYm9vbCBpc05vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBpc05vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb25zdCBDU3RyaW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENhY2hlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxLDcg
KzUwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBCYWNrRm9yd2FyZEMKIAogdm9p
ZCBCYWNrRm9yd2FyZENhY2hlOjpyZW1vdmVBbGxJdGVtc0ZvclBhZ2UoUGFnZSYgcGFnZSkKIHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFtX2lzSW5SZW1vdmVBbGxJdGVtc0ZvclBhZ2UsICJXZSBzaG91bGQgbm90IHJl
ZW50ZXIgdGhpcyBtZXRob2QiKTsKICAgICBTZXRGb3JTY29wZTxib29sPiBpblJlbW92ZUFsbEl0
ZW1zRm9yUGFnZVNjb3BlIHsgbV9pc0luUmVtb3ZlQWxsSXRlbXNGb3JQYWdlLCB0cnVlIH07CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDYWNoZS5oCShy
ZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2Fj
aGUuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIExpc3RI
YXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4+IG1faXRlbXM7CiAgICAgdW5zaWduZWQgbV9tYXhT
aXplIHswfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IGJvb2wgbV9pc0luUmVtb3ZlQWxsSXRlbXNGb3JQYWdlIHsgZmFsc2UgfTsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3
ICsxNTUsNyBAQCB2b2lkIENhbnZhc0Jhc2U6Om5vdGlmeU9ic2VydmVyc0NhbnZhc0RlCiAKICAg
ICBtX29ic2VydmVycy5jbGVhcigpOwogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgbV9kaWROb3RpZnlPYnNlcnZlcnNDYW52YXNEZXN0cm95ZWQgPSB0cnVlOwogI2Vu
ZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaAkocmV2aXNpb24gMjU0MDQ4KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXI+IG1fY29udGV4dFN0YXRlU2F2ZXI7CiAKICAgICBib29sIG1f
b3JpZ2luQ2xlYW4geyB0cnVlIH07Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgYm9vbCBtX2RpZE5vdGlmeU9ic2VydmVyc0NhbnZhc0Rlc3Ryb3llZCB7IGZhbHNlIH07
CiAjZW5kaWYKICAgICBIYXNoU2V0PENhbnZhc09ic2VydmVyKj4gbV9vYnNlcnZlcnM7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmdUb0VsZW1lbnRzTWFwIG1fbmFtZU1hcDsK
ICAgICBWZWN0b3I8QXRvbVN0cmluZz4gbV9wcm9wZXJ0eU5hbWVzOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2RpZFBvcHVsYXRlIHsgZmFs
c2UgfTsKICNlbmRpZgogfTsKQEAgLTE1MCw3ICsxNTAsNyBAQCBpbmxpbmUgc2l6ZV90IENvbGxl
Y3Rpb25OYW1lZEVsZW1lbnRDYWNoCiAKIGlubGluZSB2b2lkIENvbGxlY3Rpb25OYW1lZEVsZW1l
bnRDYWNoZTo6ZGlkUG9wdWxhdGUoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIG1fZGlkUG9wdWxhdGUgPSB0cnVlOwogI2VuZGlmCiAgICAgaWYgKHNp
emVfdCBjb3N0ID0gbWVtb3J5Q29zdCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNyArNzM2LDcg
QEAgY29uc3QgVmVjdG9yPEhUTUxFbGVtZW50Kj4mIEhUTUxTZWxlY3RFbAogICAgIGlmIChtX3No
b3VsZFJlY2FsY0xpc3RJdGVtcykKICAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7CiAgICAgZWxz
ZSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIFZl
Y3RvcjxIVE1MRWxlbWVudCo+IGl0ZW1zID0gbV9saXN0SXRlbXM7CiAgICAgICAgIHJlY2FsY0xp
c3RJdGVtcyhmYWxzZSk7CiAgICAgICAgIEFTU0VSVChpdGVtcyA9PSBtX2xpc3RJdGVtcyk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNw
cAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dz
Q29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEwICs0MywxMCBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoSFRNTFRhYmxlUm93CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBh
c3NlcnRSb3dJc0luVGFibGUoSFRNTFRhYmxlRWxlbWVudCYgdGFibGUsIEhUTUxUYWJsZVJvd0Vs
ZW1lbnQqIHJvdykKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICBVTlVTRURfUEFSQU0odGFibGUpOwogICAgIFVOVVNFRF9QQVJBTShyb3cpOwotI2Vsc2UK
KyNlbHNlIC8vIG5vdCBBU1NFUlRfRU5BQkxFRAogICAgIGlmICghcm93KQogICAgICAgICByZXR1
cm47CiAgICAgaWYgKHJvdy0+cGFyZW50Tm9kZSgpID09ICZ0YWJsZSkKQEAgLTU0LDcgKzU0LDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFzc2VydFJvd0lzSW5UYWJsZShIVAogICAgIEFTU0VSVChy
b3ctPnBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKHJvdy0+cGFyZW50Tm9kZSgpLT5oYXNUYWdO
YW1lKHRoZWFkVGFnKSB8fCByb3ctPnBhcmVudE5vZGUoKS0+aGFzVGFnTmFtZSh0Ym9keVRhZykg
fHwgcm93LT5wYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodGZvb3RUYWcpKTsKICAgICBBU1NFUlQo
cm93LT5wYXJlbnROb2RlKCktPnBhcmVudE5vZGUoKSA9PSAmdGFibGUpOwotI2VuZGlmCisjZW5k
aWYgLy8gbm90IEFTU0VSVF9FTkFCTEVECiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luU2Vj
dGlvbihIVE1MVGFibGVSb3dFbGVtZW50JiByb3csIGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiBz
ZWN0aW9uVGFnKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NDMsMTMgKzY0MywxNyBAQCB1bnNpZ25lZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5k
CiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBpbm5lclRleHRWYWx1ZSgpLmxlbmd0aCgpOwogICAg
IGluZGV4ID0gc3RkOjptaW4oaW5kZXgsIGxlbmd0aCk7IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3Qg
aGF2ZSB0byBjYWxsIGlubmVyVGV4dFZhbHVlKCkganVzdCB0byBpZ25vcmUgdGhlIGxhc3QgTEYu
IFNlZSBmaW5pc2hUZXh0LgotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAwCisgICAgLy8g
RklYTUU6IFRoaXMgYXNzZXJ0aW9uIGNvZGUgd2FzIG5ldmVyIGJ1aWx0LCBoYXMgYml0IHJvdHRl
ZCwgYW5kIG5lZWRzIHRvIGJlIGZpeGVkIGJlZm9yZSBpdCBjYW4gYmUgZW5hYmxlZDoKKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NzA2LgorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHBhc3Nl
ZFBvc2l0aW9uOwogICAgIHVuc2lnbmVkIGluZGV4Q29tcHV0ZWRCeVZpc2libGVQb3NpdGlvbiA9
IDA7CiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc05vdE51bGwoKSkKICAgICAgICAgaW5kZXhD
b21wdXRlZEJ5VmlzaWJsZVBvc2l0aW9uID0gV2ViQ29yZTo6aW5kZXhGb3JWaXNpYmxlUG9zaXRp
b24oaW5uZXJUZXh0LCB2aXNpYmxlUG9zaXRpb24sIGZhbHNlIC8qIGZvclNlbGVjdGlvblByZXNl
cnZhdGlvbiAqLyk7CiAgICAgQVNTRVJUKGluZGV4ID09IGluZGV4Q29tcHV0ZWRCeVZpc2libGVQ
b3NpdGlvbik7CiAjZW5kaWYKKyNlbmRpZgogICAgIHJldHVybiBpbmRleDsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
Ojp1bndpbgogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjp+Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZSgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgdW53aW5kU3RhdGVTdGFjaygpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCShyZXZpc2lv
biAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBIVE1MUGFyc2VyU2NoZWR1
bGVyOjpIVE1MUGFyc2VyU2NoZWR1bGVyCiAgICAgLCBtX3BhcnNlclRpbWVMaW1pdChTZWNvbmRz
KHBhcnNlclRpbWVMaW1pdChtX3BhcnNlci5kb2N1bWVudCgpLT5wYWdlKCkpKSkKICAgICAsIG1f
Y29udGludWVOZXh0Q2h1bmtUaW1lcigqdGhpcywgJkhUTUxQYXJzZXJTY2hlZHVsZXI6OmNvbnRp
bnVlTmV4dENodW5rVGltZXJGaXJlZCkKICAgICAsIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGlt
ZXIoZmFsc2UpCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
LCBtX3N1c3BlbmRlZChmYWxzZSkKICNlbmRpZgogewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQg
SFRNTFBhcnNlclNjaGVkdWxlcjo6c3VzcGVuZCgpCiB7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRl
ZCk7CiAgICAgQVNTRVJUKCFtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyKTsKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX3N1c3BlbmRlZCA9IHRydWU7
CiAjZW5kaWYKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgSFRNTFBhcnNlclNjaGVkdWxlcjo6
cmVzdW1lKCkKIHsKICAgICBBU1NFUlQobV9zdXNwZW5kZWQpOwogICAgIEFTU0VSVCghbV9jb250
aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0aXZlKCkpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlclNjaGVkdWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0
ZToKICAgICBTZWNvbmRzIG1fcGFyc2VyVGltZUxpbWl0OwogICAgIFRpbWVyIG1fY29udGludWVO
ZXh0Q2h1bmtUaW1lcjsKICAgICBib29sIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXI7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX3N1c3Bl
bmRlZDsKICNlbmRpZgogICAgIGJvb2wgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9r
ZW5zIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tl
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbi5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIEhUTUxU
b2tlbjo6YmVnaW5TdGFydFRhZyhVQ2gKICAgICBtX3NlbGZDbG9zaW5nID0gZmFsc2U7CiAgICAg
bV9hdHRyaWJ1dGVzLmNsZWFyKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwogI2VuZGlmCiAKQEAg
LTI5MCw3ICsyOTAsNyBAQCBpbmxpbmUgdm9pZCBIVE1MVG9rZW46OmJlZ2luRW5kVGFnKExDaGFy
CiAgICAgbV9zZWxmQ2xvc2luZyA9IGZhbHNlOwogICAgIG1fYXR0cmlidXRlcy5jbGVhcigpOwog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9jdXJyZW50
QXR0cmlidXRlID0gbnVsbHB0cjsKICNlbmRpZgogCkBAIC0zMDQsNyArMzA0LDcgQEAgaW5saW5l
IHZvaWQgSFRNTFRva2VuOjpiZWdpbkVuZFRhZyhjb25zdAogICAgIG1fc2VsZkNsb3NpbmcgPSBm
YWxzZTsKICAgICBtX2F0dHJpYnV0ZXMuY2xlYXIoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1fY3VycmVudEF0dHJpYnV0ZSA9IG51bGxwdHI7CiAj
ZW5kaWYKIApAQCAtMzI3LDcgKzMyNyw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6ZW5kQXR0
cmlidXRlKHVuc2kKICAgICBBU1NFUlQob2Zmc2V0KTsKICAgICBBU1NFUlQobV9jdXJyZW50QXR0
cmlidXRlKTsKICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUtPmVuZE9mZnNldCA9IG9mZnNldCAtIG1f
YXR0cmlidXRlQmFzZU9mZnNldDsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2N1cnJlbnRBdHRyaWJ1dGUgPSBudWxscHRyOwogI2VuZGlmCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCBIVE1MVHJlZUJ1aWxk
ZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jCiAgICAgLCBtX3RyZWUoZG9jdW1lbnQsIHBhcnNl
ckNvbnRlbnRQb2xpY3ksIG9wdGlvbnMubWF4aW11bURPTVRyZWVEZXB0aCkKICAgICAsIG1fc2Ny
aXB0VG9Qcm9jZXNzU3RhcnRQb3NpdGlvbih1bmluaXRpYWxpemVkUG9zaXRpb25WYWx1ZTEoKSkK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Rlc3Ry
dWN0aW9uUHJvaGliaXRlZCA9IGZhbHNlOwogI2VuZGlmCiB9CkBAIC0yOTQsNyArMjk0LDcgQEAg
SFRNTFRyZWVCdWlsZGVyOjpIVE1MVHJlZUJ1aWxkZXIoSFRNTERvYwogCiAgICAgbV90cmVlLnNl
dEZvcm0oaXM8SFRNTEZvcm1FbGVtZW50Pihjb250ZXh0RWxlbWVudCkgPyAmZG93bmNhc3Q8SFRN
TEZvcm1FbGVtZW50Pihjb250ZXh0RWxlbWVudCkgOiBIVE1MRm9ybUVsZW1lbnQ6OmZpbmRDbG9z
ZXN0Rm9ybUFuY2VzdG9yKGNvbnRleHRFbGVtZW50KSk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IGZhbHNl
OwogI2VuZGlmCiB9CkBAIC0zMzgsNyArMzM4LDcgQEAgUmVmUHRyPFNjcmlwdEVsZW1lbnQ+IEhU
TUxUcmVlQnVpbGRlcjo6dAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZShB
dG9taWNIVE1MVG9rZW4mJiB0b2tlbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBBU1NFUlQoIW1fZGVzdHJveWVkKTsKICAgICBBU1NFUlQoIW1fZGVz
dHJ1Y3Rpb25Qcm9oaWJpdGVkKTsKICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IHRydWU7
CkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUo
QXRvbQogICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxh
Y2VtZW50KG1faW5zZXJ0aW9uTW9kZSA9PSBJbnNlcnRpb25Nb2RlOjpUZXh0IHx8IGluRm9yZWln
bkNvbnRlbnQpOwogICAgIG1fcGFyc2VyLnRva2VuaXplcigpLnNldFNob3VsZEFsbG93Q0RBVEEo
aW5Gb3JlaWduQ29udGVudCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2Rlc3RydWN0aW9uUHJvaGliaXRlZCA9IGZhbHNlOwogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCShyZXZp
c2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1fZnJhbWVzZXRPayB7IHRydWUgfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9kZXN0cm95ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9kZXN0cnVjdGlvblByb2hpYml0ZWQgeyB0cnVlIH07CiAjZW5kaWYKQEAgLTIyNiw3ICsyMjYs
NyBAQCBwcml2YXRlOgogCiBpbmxpbmUgSFRNTFRyZWVCdWlsZGVyOjp+SFRNTFRyZWVCdWlsZGVy
KCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NF
UlQoIW1fZGVzdHJveWVkKTsKICAgICBBU1NFUlQoIW1fZGVzdHJ1Y3Rpb25Qcm9oaWJpdGVkKTsK
ICAgICBtX2Rlc3Ryb3llZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsy
MTMsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjptYXBSaWdodFRvCiBjb25zdCBE
aXNwbGF5OjpCb3gmIEZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeUZvckJveChjb25zdCBCb3gm
IGxheW91dEJveCwgT3B0aW9uYWw8RXNjYXBlVHlwZT4gZXNjYXBlVHlwZSkgY29uc3QKIHsKICAg
ICBVTlVTRURfUEFSQU0oZXNjYXBlVHlwZSk7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgYXV0byBpc09rVG9BY2Nlc3NEaXNwbGF5Qm94ID0gWyZdIHsKICAgICAgICAg
Ly8gMS4gSGlnaGx5IGNvbW1vbiBjYXNlIG9mIGFjY2Vzc2luZyB0aGUgZm9ybWF0dGluZyByb290
J3MgZGlzcGxheSBib3ggaXRzZWxmLiBUaGlzIGlzIGZvcm1hdHRpbmcgY29udGV4dCBlc2NhcGlu
ZyBpbiB0aGUgc3RyaWN0IHNlbnNlLCBzaW5jZQogICAgICAgICAvLyB0aGUgZm9ybWF0dGluZyBj
b250ZXh0IHJvb3QgYm94IGxpdmVzIGluIHRoZSBwYXJlbnQgZm9ybWF0dGluZyBjb250ZXh0LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRXN0aQogICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBV
c2VkVmVydGljYWxNYXJnaW4geyBub25Db2xsYXBzZWRWYWx1ZXMsIGNvbGxhcHNlZFZhbHVlcyB9
OwogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxNYXJnaW4pOwogICAg
IGRpc3BsYXlCb3guc2V0VG9wKHZlcnRpY2FsUG9zaXRpb25XaXRoTWFyZ2luKGxheW91dEJveCwg
dmVydGljYWxNYXJnaW4pKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBkaXNwbGF5Qm94LnNldEhhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSgpOwogI2VuZGlm
CiB9CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlRXN0aQogICAgICAgICBkaXNwbGF5Qm94LnNldEhhc0NsZWFyYW5jZSgpOwogfQogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Omhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25z
dAogewogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSBsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCk7IGFuY2VzdG9yICYmICFhbmNlc3Rvci0+ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCk7IGFuY2VzdG9yID0gYW5jZXN0b3ItPmNvbnRhaW5pbmdCbG9jaygpKSB7CkBAIC0zNDcs
NyArMzQ3LDcgQEAgYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpoYXNQcmVjb21wdQogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVE
CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUZsb2F0aW5nUG9zaXRpb24o
Y29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI1NDA0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJlbW92ZUVzdGltYXRlZE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJv
eCkgeyBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZUxpc3QucmVtb3ZlKCZsYXlvdXRCb3gpOyB9CiAg
ICAgYm9vbCBoYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoY29uc3QgQm94JikgY29uc3Q7CiAgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNv
bnN0IEZsb2F0aW5nQ29udGV4dCYsIGNvbnN0IEJveCYpIGNvbnN0OwotI2lmbmRlZiBOREVCVUcK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEVzdGltYXRlZE1hcmdpbkJlZm9yZSBlc3RpbWF0ZWRN
YXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fZXN0aW1h
dGVkTWFyZ2luQmVmb3JlTGlzdC5nZXQoJmxheW91dEJveCk7IH0KICAgICBib29sIGhhc1ByZWNv
bXB1dGVkTWFyZ2luQmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guY3BwCShyZXZp
c2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgQm94OjpCb3goY29uc3Qg
Qm94JiBvdGhlcikKICAgICAsIG1faGFzQ2xlYXJhbmNlKG90aGVyLm1faGFzQ2xlYXJhbmNlKQog
ICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIpCiAgICAgLCBtX3BhZGRpbmcob3RoZXIubV9w
YWRkaW5nKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwg
bV9oYXNWYWxpZFRvcChvdGhlci5tX2hhc1ZhbGlkVG9wKQogICAgICwgbV9oYXNWYWxpZExlZnQo
b3RoZXIubV9oYXNWYWxpZExlZnQpCiAgICAgLCBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbihv
dGhlci5tX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBSZWN0IHBhZGRpbmdCb3goKSBj
b25zdDsKICAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25zdDsKIAotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQgc2V0SGFzRXN0aW1hdGVkTWFyZ2luQmVm
b3JlKCkgeyBtX2hhc0VzdGltYXRlZE1hcmdpbkJlZm9yZSA9IHRydWU7IH0KICNlbmRpZgogCkBA
IC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFkZGluZyhPcHRpb25hbDxM
YXlvdXQ6OkVkZ2VzPik7CiAKIHByaXZhdGU6Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgdm9pZCBpbnZhbGlkYXRlTWFyZ2luKCk7CiAgICAgdm9pZCBpbnZh
bGlkYXRlQm9yZGVyKCkgeyBtX2hhc1ZhbGlkQm9yZGVyID0gZmFsc2U7IH0KICAgICB2b2lkIGlu
dmFsaWRhdGVQYWRkaW5nKCkgeyBtX2hhc1ZhbGlkUGFkZGluZyA9IGZhbHNlOyB9CkBAIC0xNTMs
NyArMTUzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0SGFzVmFsaWRDb250ZW50SGVpZ2h0
KCkgeyBtX2hhc1ZhbGlkQ29udGVudEhlaWdodCA9IHRydWU7IH0KICAgICB2b2lkIHNldEhhc1Zh
bGlkQ29udGVudFdpZHRoKCkgeyBtX2hhc1ZhbGlkQ29udGVudFdpZHRoID0gdHJ1ZTsgfQotI2Vu
ZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogICAgIExheW91dFBvaW50IG1fdG9wTGVm
dDsKICAgICBMYXlvdXRVbml0IG1fY29udGVudFdpZHRoOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgTGF5b3V0OjpFZGdlcyBtX2JvcmRlcjsKICAgICBPcHRpb25hbDxMYXlvdXQ6
OkVkZ2VzPiBtX3BhZGRpbmc7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBib29sIG1faGFzVmFsaWRUb3AgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNW
YWxpZExlZnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4g
eyBmYWxzZSB9OwpAQCAtMTc5LDEwICsxNzksMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFz
VmFsaWRDb250ZW50SGVpZ2h0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRDb250ZW50
V2lkdGggeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNFc3RpbWF0ZWRNYXJnaW5CZWZvcmUgeyBm
YWxzZSB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIH07CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB2b2lkIEJveDo6aW52YWxp
ZGF0ZU1hcmdpbigpCiB7CiAgICAgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4gPSBmYWxzZTsK
QEAgLTIxMSw3ICsyMTEsNyBAQCBpbmxpbmUgTGF5b3V0UG9pbnQgQm94Ojp0b3BMZWZ0KCkgY29u
c3QKIAogaW5saW5lIHZvaWQgQm94OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91dFBvaW50JiB0b3BM
ZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNl
dEhhc1ZhbGlkVG9wKCk7CiAgICAgc2V0SGFzVmFsaWRMZWZ0KCk7CiAjZW5kaWYKQEAgLTIyMCw3
ICsyMjAsNyBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFRvcExlZnQoY29uc3QgTGF5b3V0CiAKIGlu
bGluZSB2b2lkIEJveDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQogewotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkVG9wKCk7CiAjZW5kaWYK
ICAgICBtX3RvcExlZnQuc2V0WSh0b3ApOwpAQCAtMjI4LDcgKzIyOCw3IEBAIGlubGluZSB2b2lk
IEJveDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldExlZnQo
TGF5b3V0VW5pdCBsZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIHNldEhhc1ZhbGlkTGVmdCgpOwogI2VuZGlmCiAgICAgbV90b3BMZWZ0LnNldFgo
bGVmdCk7CkBAIC0yMzYsNyArMjM2LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRMZWZ0KExheW91
dFVuaXQgbGVmdAogCiBpbmxpbmUgdm9pZCBCb3g6OnNldENvbnRlbnRCb3hIZWlnaHQoTGF5b3V0
VW5pdCBoZWlnaHQpCiB7IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogICAgIHNldEhhc1ZhbGlkQ29udGVudEhlaWdodCgpOwogI2VuZGlmCiAgICAgbV9jb250ZW50
SGVpZ2h0ID0gaGVpZ2h0OwpAQCAtMjQ0LDcgKzI0NCw3IEBAIGlubGluZSB2b2lkIEJveDo6c2V0
Q29udGVudEJveEhlaWdodChMYXkKIAogaW5saW5lIHZvaWQgQm94OjpzZXRDb250ZW50Qm94V2lk
dGgoTGF5b3V0VW5pdCB3aWR0aCkKIHsgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKTsKICNlbmRpZgogICAgIG1f
Y29udGVudFdpZHRoID0gd2lkdGg7CkBAIC0yNjQsNyArMjY0LDcgQEAgaW5saW5lIExheW91dFVu
aXQgQm94Ojpjb250ZW50Qm94V2lkdGgoKQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldEhvcml6b250
YWxNYXJnaW4oTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbiBtYXJnaW4pCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRIb3Jpem9u
dGFsTWFyZ2luKCk7CiAjZW5kaWYKICAgICBtX2hvcml6b250YWxNYXJnaW4gPSBtYXJnaW47CkBA
IC0yNzIsNyArMjcyLDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKExh
eQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRpY2FsTWFyZ2luKExheW91dDo6VXNlZFZlcnRp
Y2FsTWFyZ2luIG1hcmdpbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAgc2V0SGFzVmFsaWRW
ZXJ0aWNhbE5vbkNvbGxhcHNlZE1hcmdpbigpOwogICAgIGludmFsaWRhdGVFc3RpbWF0ZWRNYXJn
aW5CZWZvcmUoKTsKQEAgLTI4Miw3ICsyODIsNyBAQCBpbmxpbmUgdm9pZCBCb3g6OnNldFZlcnRp
Y2FsTWFyZ2luKExheW91CiAKIGlubGluZSB2b2lkIEJveDo6c2V0SG9yaXpvbnRhbENvbXB1dGVk
TWFyZ2luKExheW91dDo6Q29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIG1hcmdpbikKIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzZXRIYXNWYWxpZEhvcml6
b250YWxDb21wdXRlZE1hcmdpbigpOwogI2VuZGlmCiAgICAgbV9ob3Jpem9udGFsQ29tcHV0ZWRN
YXJnaW4gPSBtYXJnaW47CkBAIC0yOTAsNyArMjkwLDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRI
b3Jpem9udGFsQ29tcHV0ZWRNYQogCiBpbmxpbmUgdm9pZCBCb3g6OnNldEJvcmRlcihMYXlvdXQ6
OkVkZ2VzIGJvcmRlcikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBzZXRIYXNWYWxpZEJvcmRlcigpOwogI2VuZGlmCiAgICAgbV9ib3JkZXIgPSBib3Jk
ZXI7CkBAIC0yOTgsNyArMjk4LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRCb3JkZXIoTGF5b3V0
OjpFZGdlcwogCiBpbmxpbmUgdm9pZCBCb3g6OnNldFBhZGRpbmcoT3B0aW9uYWw8TGF5b3V0OjpF
ZGdlcz4gcGFkZGluZykKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBzZXRIYXNWYWxpZFBhZGRpbmcoKTsKICNlbmRpZgogICAgIG1fcGFkZGluZyA9IHBh
ZGRpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlu
bGluZVJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheUlubGluZVJlY3QuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVSZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIElubGluZUxheW91dFJlY3Qo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICB2b2lkIGludmFsaWRhdGVUb3AoKSB7IG1faGFzVmFsaWRUb3AgPSBmYWxzZTsg
fQogICAgIHZvaWQgaW52YWxpZGF0ZUxlZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0gZmFsc2U7IH0K
ICAgICB2b2lkIGludmFsaWRhdGVXaWR0aCgpIHsgbV9oYXNWYWxpZFdpZHRoID0gZmFsc2U7IH0K
QEAgLTg3LDE0ICs4NywxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFdpZHRoIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aGFzVmFsaWRIZWlnaHQgeyBmYWxzZSB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJM
RUQKICAgICBJbmxpbmVMYXlvdXRSZWN0IG1fcmVjdDsKIH07CiAKIGlubGluZSBJbmxpbmVSZWN0
OjpJbmxpbmVSZWN0KElubGluZUxheW91dFVuaXQgdG9wLCBJbmxpbmVMYXlvdXRVbml0IGxlZnQs
IElubGluZUxheW91dFVuaXQgd2lkdGgsIElubGluZUxheW91dFVuaXQgaGVpZ2h0KQogICAgIDog
bV9yZWN0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICAgICBtX2hh
c1ZhbGlkTGVmdCA9IHRydWU7CiAgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKQEAgLTEwNyw3
ICsxMDcsNyBAQCBpbmxpbmUgSW5saW5lUmVjdDo6SW5saW5lUmVjdChjb25zdCBJbmxpCiB7CiB9
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIGlubGluZSB2b2lk
IElubGluZVJlY3Q6OmludmFsaWRhdGVQb3NpdGlvbigpCiB7CiAgICAgaW52YWxpZGF0ZVRvcCgp
OwpAQCAtMTI1LDcgKzEyNSw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldEhhc1ZhbGlk
U2l6ZSgKICAgICBtX2hhc1ZhbGlkV2lkdGggPSB0cnVlOwogICAgIG1faGFzVmFsaWRIZWlnaHQg
PSB0cnVlOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogaW5saW5lIElu
bGluZUxheW91dFVuaXQgSW5saW5lUmVjdDo6dG9wKCkgY29uc3QKIHsKQEAgLTE3Nyw3ICsxNzcs
NyBAQCBpbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVSZWN0OjpoZWlnCiAKIGlubGluZSB2
b2lkIElubGluZVJlY3Q6OnNldFRvcExlZnQoY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIHRvcExl
ZnQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0
SGFzVmFsaWRQb3NpdGlvbigpOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldExvY2F0aW9uKHRvcExl
ZnQpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldFRvcExl
ZnQoY29uc3QKIAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0VG9wKElubGluZUxheW91dFVu
aXQgdG9wKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IG1faGFzVmFsaWRUb3AgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldFkodG9wKTsKQEAg
LTE5Myw3ICsxOTMsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVSZWN0OjpzZXRUb3AoSW5saW5lTGF5
CiAKIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldEJvdHRvbShJbmxpbmVMYXlvdXRVbml0IGJv
dHRvbSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBt
X2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICAgICBtX2hhc1ZhbGlkSGVpZ2h0ID0gdHJ1ZTsKICNlbmRp
ZgpAQCAtMjAyLDcgKzIwMiw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldEJvdHRvbShJ
bmxpbmUKIAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0TGVmdChJbmxpbmVMYXlvdXRVbml0
IGxlZnQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
bV9oYXNWYWxpZExlZnQgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldFgobGVmdCk7CkBA
IC0yMTAsNyArMjEwLDcgQEAgaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0TGVmdChJbmxpbmVM
YQogCiBpbmxpbmUgdm9pZCBJbmxpbmVSZWN0OjpzZXRXaWR0aChJbmxpbmVMYXlvdXRVbml0IHdp
ZHRoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1f
aGFzVmFsaWRXaWR0aCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0V2lkdGgod2lkdGgp
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIGlubGluZSB2b2lkIElubGluZVJlY3Q6OnNldFdpZHRoKElu
bGluZUwKIAogaW5saW5lIHZvaWQgSW5saW5lUmVjdDo6c2V0SGVpZ2h0KElubGluZUxheW91dFVu
aXQgaGVpZ2h0KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIG1faGFzVmFsaWRIZWlnaHQgPSB0cnVlOwogI2VuZGlmCiAgICAgbV9yZWN0LnNldEhlaWdo
dChoZWlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3Bs
YXlMaW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0
cmVlL0Rpc3BsYXlMaW5lQm94LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KCkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxzZSB9OwogICAgICAg
ICBib29sIG1faGFzVmFsaWREZXNjZW50IHsgZmFsc2UgfTsKICNlbmRpZgpAQCAtMTI2LDcgKzEy
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lz
Q29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgeyBmYWxzZSB9OwogI2Vu
ZGlmCkBAIC0xNDMsNyArMTQzLDcgQEAgaW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5s
aW5lUmVjdAogICAgICwgbV9iYXNlbGluZShiYXNlbGluZSkKICAgICAsIG1fYmFzZWxpbmVPZmZz
ZXQoYmFzZWxpbmVPZmZzZXQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKICAgICBtX2hhc1ZhbGlkQmFz
ZWxpbmVPZmZzZXQgPSB0cnVlOwogI2VuZGlmCkBAIC0xNjQsNyArMTY0LDcgQEAgaW5saW5lIGNv
bnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OgogCiBpbmxpbmUgdm9pZCBMaW5lQm94Ojpz
ZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0
KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFz
VmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CiAjZW5kaWYKICAgICBtX2Jhc2VsaW5lT2Zmc2V0
ID0gc3RkOjptYXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOwpAQCAtMTkzLDcg
KzE5Myw3IEBAIGlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJhc2VsaW4KIAogaW5s
aW5lIHZvaWQgTGluZUJveDo6cmVzZXRCYXNlbGluZSgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1
ZTsKICNlbmRpZgogICAgIG1fYmFzZWxpbmVPZmZzZXQgPSAwX2x1OwpAQCAtMjA0LDcgKzIwNCw3
IEBAIGlubGluZSBMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW4KICAgICA6IG1fYXNj
ZW50KGFzY2VudCkKICAgICAsIG1fZGVzY2VudChkZXNjZW50KQogewotI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwog
ICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgpAQCAtMjEyLDcgKzIxMiw3IEBA
IGlubGluZSBMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoSW5saW4KIAogaW5saW5lIHZvaWQg
TGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0IGFzY2VudCkKIHsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlk
QXNjZW50ID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fYXNjZW50ID0gYXNjZW50OwpAQCAtMjIwLDcg
KzIyMCw3IEBAIGlubGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2NlbnQKIAogaW5s
aW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnQoSW5saW5lTGF5b3V0VW5pdCBk
ZXNjZW50KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fZGVzY2VudCA9IGRlc2Nl
bnQ7CkBAIC0yMjgsNyArMjI4LDcgQEAgaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNl
dERlc2NlbgogCiBpbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQoKQogewotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzVmFsaWRBc2Nl
bnQgPSB0cnVlOwogICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSZWN0LmgJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5UmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBv
cGVyYXRvciBMYXlvdXRSZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBpbnZhbGlkYXRlVG9wKCkgeyBtX2hh
c1ZhbGlkVG9wID0gZmFsc2U7IH0KICAgICB2b2lkIGludmFsaWRhdGVMZWZ0KCkgeyBtX2hhc1Zh
bGlkTGVmdCA9IGZhbHNlOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlV2lkdGgoKSB7IG1faGFzVmFs
aWRXaWR0aCA9IGZhbHNlOyB9CkBAIC05MywxNCArOTMsMTQgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzVmFsaWRMZWZ0IHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRXaWR0aCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2hhc1ZhbGlkSGVpZ2h0IHsgZmFsc2UgfTsKLSNlbmRpZgorI2Vu
ZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5b3V0UmVjdCBtX3JlY3Q7CiB9OwogCiBpbmxp
bmUgUmVjdDo6UmVjdChMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0
IHdpZHRoLCBMYXlvdXRVbml0IGhlaWdodCkKICAgICA6IG1fcmVjdChsZWZ0LCB0b3AsIHdpZHRo
LCBoZWlnaHQpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgbV9oYXNWYWxpZFRvcCA9IHRydWU7CiAgICAgbV9oYXNWYWxpZExlZnQgPSB0cnVlOwogICAg
IG1faGFzVmFsaWRXaWR0aCA9IHRydWU7CkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIFJlY3Q6
OlJlY3QoTGF5b3V0UG9pbnQgdG9wTGVmdCwgTAogewogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2lmIEFTU0VSVF9FTkFCTEVECiBpbmxpbmUgdm9pZCBSZWN0OjppbnZhbGlkYXRlUG9zaXRp
b24oKQogewogICAgIGludmFsaWRhdGVUb3AoKTsKQEAgLTE4OSw3ICsxODksNyBAQCBpbmxpbmUg
TGF5b3V0VW5pdCBSZWN0OjpoZWlnaHQoKSBjb25zdAogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRU
b3BMZWZ0KGNvbnN0IExheW91dFBvaW50JiB0b3BMZWZ0KQogewotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHNldEhhc1ZhbGlkUG9zaXRpb24oKTsKICNlbmRp
ZgogICAgIG1fcmVjdC5zZXRMb2NhdGlvbih0b3BMZWZ0KTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBp
bmxpbmUgdm9pZCBSZWN0OjpzZXRUb3BMZWZ0KGNvbnN0IExheW91CiAKIGlubGluZSB2b2lkIFJl
Y3Q6OnNldFRvcChMYXlvdXRVbml0IHRvcCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKICNlbmRpZgogICAgIG1f
cmVjdC5zZXRZKHRvcCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6c2V0
VG9wKExheW91dFVuaXQgdG9wKQogCiBpbmxpbmUgdm9pZCBSZWN0OjpzZXRMZWZ0KExheW91dFVu
aXQgbGVmdCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICBtX2hhc1ZhbGlkTGVmdCA9IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0WChsZWZ0KTsK
QEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgdm9pZCBSZWN0OjpzZXRMZWZ0KExheW91dFVuaXQg
bGVmCiAKIGlubGluZSB2b2lkIFJlY3Q6OnNldFdpZHRoKExheW91dFVuaXQgd2lkdGgpCiB7Ci0j
aWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZFdp
ZHRoID0gdHJ1ZTsKICNlbmRpZgogICAgIG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7CkBAIC0yMjEs
NyArMjIxLDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6c2V0V2lkdGgoTGF5b3V0VW5pdCB3aQogCiBp
bmxpbmUgdm9pZCBSZWN0OjpzZXRIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQpCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9oYXNWYWxpZEhlaWdodCA9
IHRydWU7CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdodCk7CkBAIC0yMjksNyAr
MjI5LDcgQEAgaW5saW5lIHZvaWQgUmVjdDo6c2V0SGVpZ2h0KExheW91dFVuaXQgaAogCiBpbmxp
bmUgdm9pZCBSZWN0OjpzZXRTaXplKGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgc2V0SGFzVmFsaWRTaXplKCk7
CiAjZW5kaWYKICAgICBtX3JlY3Quc2V0U2l6ZShzaXplKTsKQEAgLTI4MSw3ICsyODEsNyBAQCBp
bmxpbmUgdm9pZCBSZWN0OjpleHBhbmQoT3B0aW9uYWw8TGF5b3V0CiBpbmxpbmUgUmVjdCBSZWN0
OjpjbG9uZSgpIGNvbnN0CiB7CiAgICAgUmVjdCByZWN0OwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHJlY3QubV9oYXNWYWxpZFRvcCA9IG1faGFzVmFsaWRU
b3A7CiAgICAgcmVjdC5tX2hhc1ZhbGlkTGVmdCA9IG1faGFzVmFsaWRMZWZ0OwogICAgIHJlY3Qu
bV9oYXNWYWxpZFdpZHRoID0gbV9oYXNWYWxpZFdpZHRoOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIEl0ZXJhdG9yIGVuZChjb25z
dCBGbG9hdGluZ1N0YXRlOgogICAgIHJldHVybiBJdGVyYXRvcihmbG9hdHMsIHsgfSk7CiB9CiAK
LSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBib29sIGFyZUZsb2F0
c0hvcml6b250YWxseVNvcnRlZChjb25zdCBGbG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQog
ewogICAgIGF1dG8mIGZsb2F0cyA9IGZsb2F0aW5nU3RhdGUuZmxvYXRzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg2Myw3ICs4NjMsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpDb2xsYXBzaWJsZUNvbnRl
bnQ6OmFwCiBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpDb2xsYXBzaWJsZUNvbnRlbnQ6
OmNvbGxhcHNlKCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7Ci0jaWZuZGVmIE5ERUJVRwor
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byBoYXNTZWVuTm9uV2hpdGVzcGFjZVRleHRDb250
ZW50ID0gZmFsc2U7CiAjZW5kaWYKICAgICAvLyBDb2xsYXBzZSBjb2xsYXBzaWJsZSB0cmFpbGlu
ZyBjb250ZW50IGFuZCBtb3ZlIGFsbCB0aGUgb3RoZXIgdHJhaWxpbmcgcnVucy4KQEAgLTg4Myw3
ICs4ODMsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCdWlsZGVyOjpDb2xsYXBzaWJsCiAgICAg
ICAgICAgICBydW4uc2V0Q29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoKCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoIWhhc1NlZW5Ob25XaGl0ZXNwYWNlVGV4dENvbnRl
bnQpOwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgaGFz
U2Vlbk5vbldoaXRlc3BhY2VUZXh0Q29udGVudCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAg
IC8vIE11c3QgYmUgYSBsZXR0ZXIgc3BhY2luZyBjb2xsYXBzZS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5jcHAJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFi
bGVHcmlkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBUYWJsZUdyaWQ6OkNv
bHVtbjo6Q29sdW1uKGNvbnN0IEJveCogY29sCiAKIHZvaWQgVGFibGVHcmlkOjpDb2x1bW46OnNl
dFdpZHRoQ29uc3RyYWludHMoRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgd2lkdGhDb25zdHJhaW50cykKIHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2hhc1dpZHRoQ29uc3RyYWludHMgPSB0cnVlOwogI2VuZGlmCiAgICAgbV93
aWR0aENvbnN0cmFpbnRzID0gd2lkdGhDb25zdHJhaW50czsKQEAgLTU2LDcgKzU2LDcgQEAgRm9y
bWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYQogCiB2b2lkIFRhYmxlR3JpZDo6
Q29sdW1uOjpzZXRMb2dpY2FsV2lkdGgoTGF5b3V0VW5pdCBjb21wdXRlZExvZ2ljYWxXaWR0aCkK
IHsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc0NvbXB1dGVk
V2lkdGggPSB0cnVlOwogI2VuZGlmCiAgICAgbV9jb21wdXRlZExvZ2ljYWxXaWR0aCA9IGNvbXB1
dGVkTG9naWNhbFdpZHRoOwpAQCAtNzAsNyArNzAsNyBAQCBMYXlvdXRVbml0IFRhYmxlR3JpZDo6
Q29sdW1uOjpsb2dpY2FsV2lkCiAKIHZvaWQgVGFibGVHcmlkOjpDb2x1bW46OnNldExvZ2ljYWxM
ZWZ0KExheW91dFVuaXQgY29tcHV0ZWRMb2dpY2FsTGVmdCkKIHsKLSNpZm5kZWYgTkRFQlVHCisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2hhc0NvbXB1dGVkTGVmdCA9IHRydWU7CiAjZW5kaWYK
ICAgICBtX2NvbXB1dGVkTG9naWNhbExlZnQgPSBjb21wdXRlZExvZ2ljYWxMZWZ0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0
aW5nL1RhYmxlR3JpZC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgTGF5b3V0VW5pdCBtX2NvbXB1dGVkTG9naWNhbExlZnQ7CiAgICAgICAgIFdlYWtQ
dHI8Y29uc3QgQm94PiBtX2NvbHVtbkJveDsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgICAgICBib29sIG1faGFzV2lkdGhDb25zdHJhaW50cyB7IGZhbHNlIH07CiAg
ICAgICAgIGJvb2wgbV9oYXNDb21wdXRlZFdpZHRoIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBt
X2hhc0NvbXB1dGVkTGVmdCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2Myw3ICs5NjMsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVuCiAgICAgfQogICAgIGNh
c2UgUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBG
QUxMVEhST1VHSDsKICNlbmRpZgogICAgIGNhc2UgUG9saWN5QWN0aW9uOjpJZ25vcmU6CkBAIC0x
MjE5LDcgKzEyMTksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphdHRhY2hUb0ZyYW1lKEZyYW1l
CiAgICAgbV93cml0ZXIuc2V0RnJhbWUoZnJhbWUpOwogICAgIGF0dGFjaFRvRnJhbWUoKTsKIAot
I2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faGFzRXZlckJlZW5BdHRh
Y2hlZCA9IHRydWU7CiAjZW5kaWYKIApAQCAtMTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6YXR0YWNoVG9GcmFtZSgpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZy
b21GcmFtZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgaWYg
KG1faGFzRXZlckJlZW5BdHRhY2hlZCkKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2Zy
YW1lLCAiZGV0YWNoRnJvbUZyYW1lKCkgaXMgYmVpbmcgY2FsbGVkIG9uIGEgRG9jdW1lbnRMb2Fk
ZXIgdHdpY2Ugd2l0aG91dCBhbiBhdHRhY2hUb0ZyYW1lKCkgaW5iZXR3ZWVuIik7CiAgICAgZWxz
ZQpAQCAtMTUxNiwxNCArMTUxNiwxNCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRl
UmVzb3VyY2VECiAgICAgfQogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVE
CiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmlzU3Vic3RpdHV0ZUxvYWRQZW5kaW5nKFJlc291cmNl
TG9hZGVyKiBsb2FkZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGluZ1N1YnN0aXR1dGVS
ZXNvdXJjZXMuY29udGFpbnMobG9hZGVyKTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJU
X0VOQUJMRUQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVM
b2FkKFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiB7CkBAIC0xNjkwLDcgKzE2OTAsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjphZGRTdWJyZXNvdXJjZUxvYWRlCiAgICAgaWYgKGxvYWRlci0+b3B0
aW9ucygpLmFwcGxpY2F0aW9uQ2FjaGVNb2RlID09IEFwcGxpY2F0aW9uQ2FjaGVNb2RlOjpCeXBh
c3MpCiAgICAgICAgIHJldHVybjsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIGlmIChkb2N1bWVudCgpKSB7CiAgICAgICAgIHN3aXRjaCAoZG9jdW1lbnQo
KS0+YmFja0ZvcndhcmRDYWNoZVN0YXRlKCkpIHsKICAgICAgICAgY2FzZSBEb2N1bWVudDo6Tm90
SW5CYWNrRm9yd2FyZENhY2hlOgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsNyArMjM3LDcgQEAgcHVibGljOgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJj
ZXMoKSBjb25zdDsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJv
b2wgaXNTdWJzdGl0dXRlTG9hZFBlbmRpbmcoUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICNlbmRp
ZgogICAgIHZvaWQgY2FuY2VsUGVuZGluZ1N1YnN0aXR1dGVMb2FkKFJlc291cmNlTG9hZGVyKik7
ICAgCkBAIC02MjAsNyArNjIwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxEb2N1bWVudElk
ZW50aWZpZXI+IG1fdGVtcG9yYXJ5U2VydmljZVdvcmtlckNsaWVudDsKICNlbmRpZgogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc0V2ZXJCZWVuQXR0
YWNoZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclZpZGVvLmgiCiAjZW5kaWYKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogLy8gSW1hZ2VMb2FkZXIgb2JqZWN0cyBhcmUgYWxsb2NhdGVkIGFzIG1lbWJl
cnMgb2Ygb3RoZXIgb2JqZWN0cywgc28gZ2VuZXJpYyBwb2ludGVyIGNoZWNrIHdvdWxkIGFsd2F5
cyBmYWlsLgogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTYyLDggKzYyLDggQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgVmFsdWVDaGVjazxXZWJDb3JlOjpJbQogICAgIH0KIH07CiAKLX0KLSNlbmRpZgorfSAv
LyBuYW1lc3BhY2UgV1RGCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICszNzgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9zd2l0Y2hpbmdDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faWdub3JlRm9yUmVxdWVzdENvdW50IHsgZmFsc2UgfTsKIAot
I2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9kZWxldGVkIHsg
ZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2xydUluZGV4IHsgMCB9OwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHJldmlzaW9uIDI1
NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCBhdXRvIE1lbW9yeUNhY2hlOjpscnVMaXN0
Rm9yKENhY2hlZFJlc291CiB7CiAgICAgdW5zaWduZWQgYWNjZXNzQ291bnQgPSBzdGQ6Om1heChy
ZXNvdXJjZS5hY2Nlc3NDb3VudCgpLCAxVSk7CiAgICAgdW5zaWduZWQgcXVldWVJbmRleCA9IFdU
Rjo6ZmFzdExvZzIocmVzb3VyY2Uuc2l6ZSgpIC8gYWNjZXNzQ291bnQpOwotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHJlc291cmNlLm1fbHJ1SW5kZXggPSBxdWV1ZUlu
ZGV4OwogI2VuZGlmCiAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1v
dmVGcm9tTFJVTGlzdChDYWNoCiAgICAgaWYgKCFyZXNvdXJjZS5hY2Nlc3NDb3VudCgpKQogICAg
ICAgICByZXR1cm47CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICB1bnNpZ25lZCBvbGRMaXN0SW5kZXggPSByZXNvdXJjZS5tX2xydUluZGV4OwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMz
MSw3ICs0MzMxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgYXV0byBuZWVkc1N0eWxlUmVjYWxjID0gWyZdIHsKICAgICAgICAg
RGVzY2VuZGFudHNEZXF1ZSBkZXF1ZTsKICAgICAgICAgd2hpbGUgKGF1dG8gdmlldyA9IG5leHRS
ZW5kZXJlZERlc2NlbmRhbnQoZGVxdWUpKSB7CkBAIC00MzUwLDcgKzQzNTAsNyBAQCB2b2lkIEZy
YW1lVmlldzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lCiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH07Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAg
ICAgQVNTRVJUKCFuZWVkc1N0eWxlUmVjYWxjKCkpOwogICAgIEFTU0VSVCghbmVlZHNMYXlvdXQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4
dC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lk
IEZyYW1lVmlld0xheW91dENvbnRleHQ6OmFkZExheW91dERlCiAgICAgICAgIGxheW91dFN0YXRl
LT5hZGRMYXlvdXREZWx0YShkZWx0YSk7CiB9CiAgICAgCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiBib29sIEZyYW1lVmlld0xheW91dENvbnRleHQ6OmxheW91dERl
bHRhTWF0Y2hlcyhjb25zdCBMYXlvdXRTaXplJiBkZWx0YSkKIHsKICAgICBpZiAoYXV0byogbGF5
b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIC8vIElmIHdlJ3JlIGRvaW5nIGEgZnVsbCBy
ZXBhaW50IG1fbGF5b3V0U3RhdGUgd2lsbCBiZSAwLCBidXQgaW4gdGhhdCBjYXNlIGxheW91dERl
bHRhIGRvZXNuJ3QgbWF0dGVyLgogICAgIExheW91dFNpemUgbGF5b3V0RGVsdGEoKSBjb25zdDsK
ICAgICB2b2lkIGFkZExheW91dERlbHRhKGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGxheW91dERlbHRh
TWF0Y2hlcyhjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAjZW5kaWYKICAgICB1c2luZyBMYXlv
dXRTdGF0ZVN0YWNrID0gVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJMYXlvdXRTdGF0ZT4+
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM1LDcgKzE4MzUsNyBAQCB2
b2lkIFBhZ2U6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsCiAKICNlbmRpZgogCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAKIHZvaWQgUGFnZTo6Y2hlY2tT
dWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewpAQCAtMTg0OCw3ICsxODQ4LDcgQEAg
dm9pZCBQYWdlOjpjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeQogICAgIEFTU0VSVChtX3N1
YmZyYW1lQ291bnQgKyAxID09IHN1YmZyYW1lQ291bnQpOwogfQogCi0jZW5kaWYKKyNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogCiB2b2lkIFBhZ2U6OnJlc3VtZUFuaW1hdGluZ0ltYWdlcygpCiB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5OSwxMiArOTk5LDEyIEBAIGlubGluZSBQ
YWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKICAgICByZXR1cm4gKm1fZ3JvdXA7CiB9CiAKLSNpZiBB
U1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKIAogaW5saW5lIHZvaWQgUGFnZTo6
Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdAogewogfQogCi0jZW5kaWYKKyNl
bmRpZiAvLyAhQVNTRVJUX0VOQUJMRUQKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcAkocmV2aXNp
b24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMg
Ym9vbCBjb25zdHJhaW50c0FyZUFsbFJlbGF0aXZlKGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6UGFyYW1ldGVycyYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gIWNvbmZpZ3VyYXRp
b24ud2lkdGhJc1NldCAmJiAhY29uZmlndXJhdGlvbi5oZWlnaHRJc1NldCAmJiAhY29uZmlndXJh
dGlvbi5pbml0aWFsU2NhbGVJc1NldDsKIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFC
TEVECiAKIHN0YXRpYyBmbG9hdCBwbGF0Zm9ybURldmljZVdpZHRoT3ZlcnJpZGUoKQogewpAQCAt
NjMzLDcgKzYzMyw3IEBAIGJvb2wgVmlld3BvcnRDb25maWd1cmF0aW9uOjpzZXRJc0tub3duVG8K
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiAhTE9HX0RJU0FCTEVE
CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZpZXdwb3J0
Q29uZmlndXJhdGlvbjo6UGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU0MDQ4KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUGFyYW1ldGVycyB4aHRtbE1vYmlsZVBhcmFtZXRlcnMoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUGFyYW1ldGVycyB0ZXN0aW5nUGFyYW1ldGVycygpOwogICAgIAotI2lmbmRlZiBO
REVCVUcKKyNpZiAhTE9HX0RJU0FCTEVECiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDI1NDA0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8TlNFdmVudD4gbV9zYXZlZEN1cnJlbnRFdmVudDsKLSNpZm5kZWYgTkRFQlVHCisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBSZXRhaW5QdHI8TlNFdmVudD4gbV9ldmVudDsKICNlbmRpZgog
ICAgIFJldGFpblB0cjxOU0V2ZW50PiBtX3NhdmVkUHJlc3N1cmVFdmVudDsKQEAgLTExOCw3ICsx
MTgsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgQ3VycmVudEV2ZW50U2NvcGU6OkN1cnJlbnRFdmVu
dFNjb3BlKE5TRXZlbnQgKmV2ZW50LCBOU0V2ZW50ICpjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVu
dCkKICAgICA6IG1fc2F2ZWRDdXJyZW50RXZlbnQoY3VycmVudE5TRXZlbnRTbG90KCkpCi0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLCBtX2V2ZW50KGV2ZW50KQogI2Vu
ZGlmCiAgICAgLCBtX3NhdmVkUHJlc3N1cmVFdmVudChjb3JyZXNwb25kaW5nUHJlc3N1cmVFdmVu
dFNsb3QoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21wb25lbnRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EYXRlQ29tcG9uZW50cy5j
cHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RhdGVDb21w
b25lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBAIFN0cmluZyBEYXRl
Q29tcG9uZW50czo6dG9TdHJpbmdGb3JUaW1lKFMKICAgICBzd2l0Y2ggKGVmZmVjdGl2ZUZvcm1h
dCkgewogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFT
U0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBGQUxMVEhST1VHSDsg
Ly8gVG8gTm9uZS4KICNlbmRpZgogICAgIGNhc2UgTm9uZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzU2Ny
b2xsYWJsZUFyZWEgewogICAgIHZpcnR1YWwgflNhbWVTaXplQXNTY3JvbGxhYmxlQXJlYSgpOwot
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgd2Vha1B0
ckZhY3Rvcldhc0NvbnN0cnVjdGVkT25NYWluVGhyZWFkOwogI2VuZGlmCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBSZWY8U2hhcmVkQnVm
ZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShWCiAKIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5l
SW50b09uZVNlZ21lbnQoKSBjb25zdAogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NF
UlRfRU5BQkxFRAogICAgIC8vIEZJWE1FOiBXZSBvdWdodCB0byBiZSBhYmxlIHRvIHNldCB0aGlz
IHRvIHRydWUgYW5kIGhhdmUgbm8gYXNzZXJ0aW9ucyBmaXJlLgogICAgIC8vIFJlbW92ZSBhbGwg
aW5zdGFuY2VzIG9mIGFwcGVuZGluZyBhZnRlciBjYWxsaW5nIHRoaXMsIGJlY2F1c2UgdGhleSBh
cmUgYWxsIE8obl4yKSBhbGdvcml0aG1zIHNpbmNlIHIyMTU2ODYuCiAgICAgLy8gbV9oYXNCZWVu
Q29tYmluZWRJbnRvT25lU2VnbWVudCA9IHRydWU7CkBAIC0yMDAsNyArMjAwLDcgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgYwogICAgIHJldHVybiBjbG9uZTsKIH0K
IAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogYm9vbCBTaGFyZWRC
dWZmZXI6OmludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3QKIHsKICAgICBzaXplX3QgcG9zaXRp
b24gPSAwOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5
Q29uc2lzdGVudCgKICAgICB9CiAgICAgcmV0dXJuIHBvc2l0aW9uID09IG1fc2l6ZTsKIH0KLSNl
bmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAg
cHJpdmF0ZToKICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogICAgIG11dGFibGUgRGF0YVNlZ21l
bnRWZWN0b3IgbV9zZWdtZW50czsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIG11dGFibGUgYm9vbCBtX2hhc0JlZW5Db21iaW5lZEludG9PbmVTZWdtZW50
IHsgZmFsc2UgfTsKICAgICBib29sIGludGVybmFsbHlDb25zaXN0ZW50KCkgY29uc3Q7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAkocmV2aXNp
b24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNlbmRpZgogCkBA
IC03OCw3ICs3OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdXBwbGVtZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdXBwbGVtZW50KCkgPSBkZWZhdWx0OwotI2lmICFBU1NF
UlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCisjaWYgQVNTRVJUX0VO
QUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgdmlydHVhbCBib29sIGlz
UmVmQ291bnRlZFdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKQEAg
LTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3N1cHBsZW1lbnRzLmdl
dChrZXkpOwogICAgIH0KIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogcHJvdGVjdGVkOgogICAgIFN1cHBsZW1lbnRhYmxlKCkgPSBkZWZhdWx0OwogI2VuZGlmCkBA
IC0xMjMsNyArMTIzLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hN
YXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxTdXBwbGVtZW50PFQ+PiwgUHRySGFzaDxj
b25zdCBjaGFyKj4+IFN1cHBsZW1lbnRNYXA7CiAgICAgU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1l
bnRzOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxU
aHJlYWQ+IG1fdGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgogfTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBjbGFzcyBUaW1lckhlYXBSZWZlcmVuY2U7CiAvLyBUaGVuIHdlIHNldCBhIHNpbmdsZSBzaGFy
ZWQgc3lzdGVtIHRpbWVyIHRvIGZpcmUgYXQgdGhhdCB0aW1lLgogLy8KIC8vIFdoZW4gYSB0aW1l
cidzICJuZXh0IGZpcmUgdGltZSIgY2hhbmdlcywgd2UgbmVlZCB0byBtb3ZlIGl0IGFyb3VuZCBp
biB0aGUgcHJpb3JpdHkgcXVldWUuCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiBzdGF0aWMgVGhyZWFkVGltZXJIZWFwJiB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKQog
ewogICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkudGhyZWFkVGltZXJzKCkudGltZXJIZWFw
KCk7CkBAIC0zMDAsNyArMzAwLDcgQEAgU2Vjb25kcyBUaW1lckJhc2U6Om5leHRGaXJlSW50ZXJ2
YWwoKSBjbwogCiBpbmxpbmUgdm9pZCBUaW1lckJhc2U6OmNoZWNrSGVhcEluZGV4KCkgY29uc3QK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQo
bV9oZWFwSXRlbSk7CiAgICAgYXV0byYgaGVhcCA9IG1faGVhcEl0ZW0tPnRpbWVySGVhcCgpOwog
ICAgIEFTU0VSVCgmaGVhcCA9PSAmdGhyZWFkR2xvYmFsVGltZXJIZWFwKCkpOwpAQCAtNDM0LDcg
KzQzNCw3IEBAIHZvaWQgVGltZXJCYXNlOjp1cGRhdGVIZWFwSWZOZWVkZWQoTW9ub3QKICAgICBp
ZiAoZmlyZVRpbWUgJiYgaGFzVmFsaWRIZWFwUG9zaXRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgT3B0aW9uYWw8
dW5zaWduZWQ+IG9sZEhlYXBJbmRleDsKICAgICBpZiAobV9oZWFwSXRlbS0+aXNJbkhlYXAoKSkK
ICAgICAgICAgb2xkSGVhcEluZGV4ID0gbV9oZWFwSXRlbS0+aGVhcEluZGV4KCk7CkBAIC00NDks
NyArNDQ5LDcgQEAgdm9pZCBUaW1lckJhc2U6OnVwZGF0ZUhlYXBJZk5lZWRlZChNb25vdAogICAg
IGVsc2UKICAgICAgICAgaGVhcEluY3JlYXNlS2V5KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBPcHRpb25hbDx1bnNpZ25lZD4gbmV3SGVhcEluZGV4
OwogICAgIGlmIChtX2hlYXBJdGVtLT5pc0luSGVhcCgpKQogICAgICAgICBuZXdIZWFwSW5kZXgg
PSBtX2hlYXBJdGVtLT5oZWFwSW5kZXgoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTgwLDEyICsxODAsMTIgQEAgVmVjdG9yPE5hdGl2ZUltYWdlUHRyPiBCaXRtYXBJ
bWFnZTo6ZnJhbQogfQogI2VuZGlmCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJU
X0VOQUJMRUQKIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogewogICAgIHJldHVy
biBzaXplKCkud2lkdGgoKSAhPSAxIHx8IHNpemUoKS5oZWlnaHQoKSAhPSAxIHx8IGZyYW1lQ291
bnQoKSA+IDE7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBJbWFnZURy
YXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEhhbmRsZSBwbGF0Zm9y
bS1zcGVjaWZpYyBkYXRhCiAgICAgdm9pZCBpbnZhbGlkYXRlUGxhdGZvcm1EYXRhKCk7CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG5vdFNvbGlk
Q29sb3IoKSBvdmVycmlkZTsKICNlbmRpZgogCkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fY2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3Rpbmcg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9sYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWRGb3JU
ZXN0aW5nIHsgZmFsc2UgfTsKIAotI2lmICFMT0dfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RCB8fCAhTE9HX0RJU0FCTEVECiAgICAgc2l6ZV90IG1fbGF0ZUZyYW1lQ291bnQgeyAwIH07CiAg
ICAgc2l6ZV90IG1fZWFybHlGcmFtZUNvdW50IHsgMCB9OwogICAgIHNpemVfdCBtX2NhY2hlZEZy
YW1lQ291bnQgeyAwIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB2aXJ0dWFs
IGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAkocmV2
aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFNj
cmF0Y2hCdWZmZXIoKQogICAgICAgICA6IG1fcHVyZ2VUaW1lcigqdGhpcywgJlNjcmF0Y2hCdWZm
ZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcikKICAgICAgICAgLCBtX2xhc3RXYXNJbnNldChmYWxzZSkK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgLCBtX2J1
ZmZlckluVXNlKGZhbHNlKQogI2VuZGlmCiAgICAgewpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6
CiAgICAgSW1hZ2VCdWZmZXIqIGdldFNjcmF0Y2hCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9idWZmZXJJblVzZSk7Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fYnVmZmVySW5Vc2UgPSB0cnVlOwog
I2VuZGlmCiAgICAgICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIHJlY3JlYXRlIHRoZSBidWZmZXIg
aWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KQEAgLTExOSw3ICsxMTksNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCkKICAgICB7
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fYnVm
ZmVySW5Vc2UgPSBmYWxzZTsKICNlbmRpZgogICAgICAgICBpZiAobV9wdXJnZVRpbWVyLmlzQWN0
aXZlKCkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGFzdFdhc0lu
c2V0OwogICAgIEZsb2F0U2l6ZSBtX2xhc3RMYXllclNpemU7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fYnVmZmVySW5Vc2U7CiAjZW5kaWYK
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIENBQ0ZMYXllclRy
ZWVIb3N0OjpzZXRXaW5kb3coSFdORCB3CiAgICAgaWYgKHdpbmRvdyA9PSBtX3dpbmRvdykKICAg
ICAgICAgcmV0dXJuOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgY2FzZSBXaW5kb3dOb3RTZXQ6CiAgICAgICAg
IEFTU0VSVF9BUkcod2luZG93LCB3aW5kb3cpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmgJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkRmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNo
YW5nZXMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzIHsgZmFs
c2UgfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGVu
dW0geyBXaW5kb3dOb3RTZXQsIFdpbmRvd1NldCwgV2luZG93Q2xlYXJlZCB9IG1fc3RhdGUgeyBX
aW5kb3dOb3RTZXQgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyRGF0YUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5jcHAJKHJldmlz
aW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyRGF0YUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDE3ICszMzYsMTMgQEAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlckRhdAogCiB2b2lkIEltYWdlQnVmZmVy
RGF0YTo6cHV0RGF0YShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIHNvdXJjZUZvcm1hdCwgY29uc3QgSW50U2l6ZSYgc291cmNlU2l6ZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgYm9vbCBhY2NlbGVyYXRlUmVuZGVyaW5nKQogewotI2lmIEFTU0VSVF9E
SVNBQkxFRAotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKLSNlbmRpZgotCiAgICAgQVNTRVJUKHNv
dXJjZVJlY3Qud2lkdGgoKSA+IDApOwogICAgIEFTU0VSVChzb3VyY2VSZWN0LmhlaWdodCgpID4g
MCk7CiAgICAgCiAgICAgQ2hlY2tlZDxpbnQ+IG9yaWdpbnggPSBzb3VyY2VSZWN0LngoKTsKICAg
ICBDaGVja2VkPGludD4gZGVzdHggPSAoQ2hlY2tlZDxpbnQ+KGRlc3RQb2ludC54KCkpICsgc291
cmNlUmVjdC54KCkpOwogICAgIEFTU0VSVChkZXN0eC51bnNhZmVHZXQoKSA+PSAwKTsKLSAgICBB
U1NFUlQoZGVzdHgudW5zYWZlR2V0KCkgPCBzaXplLndpZHRoKCkpOworICAgIEFTU0VSVF9VTlVT
RUQoc2l6ZSwgZGVzdHgudW5zYWZlR2V0KCkgPCBzaXplLndpZHRoKCkpOwogICAgIEFTU0VSVChv
cmlnaW54LnVuc2FmZUdldCgpID49IDApOwogICAgIEFTU0VSVChvcmlnaW54LnVuc2FmZUdldCgp
IDw9IHNvdXJjZVJlY3QubWF4WCgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5MCw3ICsx
MzkwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXJhYmljQ2hhcmFjdGVyKFVDaAogfQogI2Vu
ZGlmCiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc1VzZXJJbnN0YWxsZWRGb250KENURm9udFJlZiBmb250KQogewogI2lmIEhB
VkUoRElTQUxMT1dBQkxFX1VTRVJfSU5TVEFMTEVEX0ZPTlRTKQpAQCAtMTQwMSw3ICsxNDAxLDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzVXNlckluc3RhbGxlZEZvbnQoQwogICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogI2lm
ICFVU0UoUExBVEZPUk1fU1lTVEVNX0ZBTExCQUNLX0xJU1QpICYmIChQTEFURk9STShNQUMpIHx8
IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBUQVJHRVRfT1NfSU9TKSkKIHN0YXRpYyBSZXRhaW5Q
dHI8Q1RGb250UmVmPiBjcmVhdGVGb250Rm9yQ2hhcmFjdGVycyhDVEZvbnRSZWYgZm9udCwgQ0ZT
dHJpbmdSZWYgbG9jYWxlU3RyaW5nLCBBbGxvd1VzZXJJbnN0YWxsZWRGb250cywgY29uc3QgVUNo
YXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR3N0
QWxsb2NhdG9yRmFzdE1hbGxvYy5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9Hc3RBbGxvY2F0b3JGYXN0TWFsbG9jLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgR3N0TWVtb3J5KiBnc3RB
bGxvY2F0b3JGYXN0TWFsbG9jCiAKIHN0YXRpYyB2b2lkIGdzdEFsbG9jYXRvckZhc3RNYWxsb2NG
cmVlKEdzdEFsbG9jYXRvciogYWxsb2NhdG9yLCBHc3RNZW1vcnkqIG1lbW9yeSkKIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBBU1NFUlQoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoYWxsb2NhdG9yLCBnc3RfYWxsb2NhdG9yX2Zhc3RfbWFsbG9jX2dl
dF90eXBlKCkpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFsbG9jYXRvcik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFQYWlu
dGluZ0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhUGFpbnRpbmdDb250ZXh0Q2Fpcm8uY3Bw
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFQYWludGluZ0NvbnRleHRDYWlyby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDcgKzYwLDcgQEAgUGFpbnRpbmdDb250ZXh0Q2Fpcm86OkZvclBhaW50aW5nOjpG
b3JQYQogCiAgICAgICAgICAgICAvLyBEZXJlZiB0aGUgQnVmZmVyIG9iamVjdC4KICAgICAgICAg
ICAgIHVzZXJEYXRhLT5maXJzdC0+ZGVyZWYoKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIC8vIE1hcmsgdGhlIGRlbGV0aW9uIG9mIHRoZSBj
YWlyb19zdXJmYWNlX3Qgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzCiAgICAgICAgICAgICAv
LyBQYWludGluZ0NvbnRleHRDYWlybyBhcyBjb21wbGV0ZS4gVGhpcyB3YXkgd2UgY2hlY2sgdGhh
dCB0aGUgY2Fpcm9fc3VyZmFjZV90CiAgICAgICAgICAgICAvLyBvYmplY3QgZG9lc24ndCBvdXRs
aXZlIHRoZSBQYWludGluZ0NvbnRleHRDYWlybyB0aHJvdWdoIHdoaWNoIGl0IHdhcyB1c2VkLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUJhY2tpbmdTdG9yZVRleHR1cmVNYXBwZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2lu
Z1N0b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQmFja2luZ1N0
b3JlVGV4dHVyZU1hcHBlckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IHZvaWQgQmFja2luZ1N0b3JlVGV4dHVyZU1hcHBlckltcGw6OmNyZWEKICAgICBhdXRvJiB1cGRh
dGUgPSBtX2xheWVyU3RhdGUudXBkYXRlOwogCiAgICAgLy8gQXNzZXJ0IG5vIHRpbGUgd2l0aCB0
aGlzIElEIGhhcyBiZWVuIHJlZ2lzdGVyZWQgeWV0LgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIGF1dG8gbWF0Y2hlc1RpbGUgPSBbdGlsZUlEXShhdXRvJiB0
aWxlKSB7IHJldHVybiB0aWxlLnRpbGVJRCA9PSB0aWxlSUQ7IH07CiAjZW5kaWYKICAgICBBU1NF
UlQoc3RkOjpub25lX29mKHVwZGF0ZS50aWxlc1RvQ3JlYXRlLmJlZ2luKCksIHVwZGF0ZS50aWxl
c1RvQ3JlYXRlLmVuZCgpLCBtYXRjaGVzVGlsZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1cmVN
YXBwZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwu
Y3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIENvbnRlbnRMYXllclRleHR1cmVNYXBw
ZXJJbXBsOjpDb250ZW50TGEKIAogQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6On5Db250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbCgpCiB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9jbGllbnQubG9jayk7CiAg
ICAgQVNTRVJUKCFtX2NsaWVudC5jbGllbnQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYWRpZW50RGlyZWN0MkQu
Y3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhZGllbnREaXJlY3QyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcs
NyBAQCB2b2lkIEdyYWRpZW50OjpmaWxsKEdyYXBoaWNzQ29udGV4dCYgY29uCiAgICAgICAgICAg
ICBpZiAoIW1fY2FjaGVkSGFzaCB8fCAhbV9ncmFkaWVudCkKICAgICAgICAgICAgICAgICBnZW5l
cmF0ZUdyYWRpZW50KGQyZENvbnRleHQpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgICAgICAgICBkMmRDb250ZXh0LT5TZXRUYWdzKEdSQURJRU5UX0RS
QVdJTkcsIF9fTElORV9fKTsKICNlbmRpZgogCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBHcmFk
aWVudDo6ZmlsbChHcmFwaGljc0NvbnRleHQmIGNvbgogICAgICAgICAgICAgaWYgKCFtX2NhY2hl
ZEhhc2ggfHwgIW1fZ3JhZGllbnQpCiAgICAgICAgICAgICAgICAgZ2VuZXJhdGVHcmFkaWVudChk
MmRDb250ZXh0KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICAgICAgICAgZDJkQ29udGV4dC0+U2V0VGFncyhHUkFESUVOVF9EUkFXSU5HLCBfX0xJTkVf
Xyk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCShyZXZp
c2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTIsNyArMzkyLDcg
QEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludAogICAgIGlmICh3aWR0
aCA8PSAwIHx8IGhlaWdodCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAoYml0bWFwKSB7CiAgICAgICAgIGF1
dG8gcGl4ZWxTaXplID0gYml0bWFwLT5HZXRQaXhlbFNpemUoKTsKICAgICAgICAgQVNTRVJUKHBp
eGVsU2l6ZS53aWR0aCA+PSBzb3VyY2VTaXplLndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BhdGhEaXJlY3QyRC5jcHAJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Q
YXRoRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBQ
YXRoOjpjbGVhckdlb21ldHJpZXMoKQogCiB2b2lkIFBhdGg6OmFwcGVuZEdlb21ldHJ5KElEMkQx
R2VvbWV0cnkqIGdlb21ldHJ5KQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIHVuc2lnbmVkIGJlZm9yZSA9IHJlZkNvdW50KGdlb21ldHJ5KTsKICNlbmRp
ZgogCkBAIC0xNDMsNyArMTQzLDcgQEAgdm9pZCBQYXRoOjpjcmVhdGVHZW9tZXRyeVdpdGhGaWxs
TW9kZShXaQogCiBQYXRoOjpQYXRoKGNvbnN0IFBhdGgmIG90aGVyKQogewotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVuc2lnbmVkIHBhdGhDb3VudCA9IHJl
ZkNvdW50KG90aGVyLm1fcGF0aC5nZXQoKSk7CiAgICAgdW5zaWduZWQgYWN0aXZlUGF0aENvdW50
ID0gcmVmQ291bnQob3RoZXIubV9hY3RpdmVQYXRoLmdldCgpKTsKICNlbmRpZgpAQCAtMTU5LDcg
KzE1OSw3IEBAIFBhdGg6OlBhdGgoY29uc3QgUGF0aCYgb3RoZXIpCiAgICAgCiBQYXRoOjpQYXRo
KFBhdGgmJiBvdGhlcikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICB1bnNpZ25lZCBwYXRoQ291bnQgPSByZWZDb3VudChvdGhlci5tX3BhdGguZ2V0KCkp
OwogICAgIHVuc2lnbmVkIGFjdGl2ZVBhdGhDb3VudCA9IHJlZkNvdW50KG90aGVyLm1fYWN0aXZl
UGF0aC5nZXQoKSk7CiAjZW5kaWYKQEAgLTE3NSw3ICsxNzUsNyBAQCBQYXRoJiBQYXRoOjpvcGVy
YXRvcj0oY29uc3QgUGF0aCYgb3RoZXIpCiB7CiAgICAgaWYgKHRoaXMgPT0gJm90aGVyKQogICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgdW5zaWduZWQgcGF0aENvdW50ID0gcmVmQ291bnQob3RoZXIubV9wYXRoLmdldCgp
KTsKICAgICB1bnNpZ25lZCBhY3RpdmVQYXRoQ291bnQgPSByZWZDb3VudChvdGhlci5tX2FjdGl2
ZVBhdGguZ2V0KCkpOwogI2VuZGlmCkBAIC0xOTYsNyArMTk2LDcgQEAgUGF0aCYgUGF0aDo6b3Bl
cmF0b3I9KFBhdGgmJiBvdGhlcikKICAgICBpZiAodGhpcyA9PSAmb3RoZXIpCiAgICAgICAgIHJl
dHVybiAqdGhpczsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIHVuc2lnbmVkIHBhdGhDb3VudCA9IHJlZkNvdW50KG90aGVyLm1fcGF0aC5nZXQoKSk7CiAg
ICAgdW5zaWduZWQgYWN0aXZlUGF0aENvdW50ID0gcmVmQ291bnQob3RoZXIubV9hY3RpdmVQYXRo
LmdldCgpKTsKICNlbmRpZgpAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wgUGF0aDo6c3Ryb2tlQ29u
dGFpbnMoU3Ryb2tlU3R5bGVBcHAKICAgICBHcmFwaGljc0NvbnRleHQgc2NyYXRjaENvbnRleHQo
JnNjcmF0Y2hDb250ZXh0RDJELCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRl
eHRUeXBlOjpHUFVNZW1vcnkpOwogICAgIGFwcGxpZXIuc3Ryb2tlU3R5bGUoJnNjcmF0Y2hDb250
ZXh0KTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVu
c2lnbmVkIGJlZm9yZSA9IHJlZkNvdW50KG1fcGF0aC5nZXQoKSk7CiAjZW5kaWYKIApAQCAtMjc2
LDcgKzI3Niw3IEBAIHZvaWQgUGF0aDo6dHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm8KICAg
ICBpZiAobV9hY3RpdmVQYXRoKQogICAgICAgICBjbG9zZUFueU9wZW5HZW9tZXRyaWVzKEQyRDFf
RklHVVJFX0VORF9PUEVOKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIHVuc2lnbmVkIGJlZm9yZSA9IHJlZkNvdW50KG1fcGF0aC5nZXQoKSk7CiAjZW5k
aWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3Jt
Q29udGV4dERpcmVjdDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQuY3BwCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRDo6ZW5kRHJhdygpCiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQ6OnNldFRhZ3MoRDJEMV9UQUcgdGFnMSwgRDJEMV9UQUcgdGFnMikKIHsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX3JlbmRlclRhcmdldC0+
U2V0VGFncyh0YWcxLCB0YWcyKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRhZzEpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRP
YnNlcnZlcihPYnNlcnZlciYpOwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGhhc09i
c2VydmVyKE9ic2VydmVyJikgY29uc3Q7CiAjZW5kaWYKIApAQCAtMTcwLDcgKzE3MCw3IEBAIHBy
aXZhdGU6CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlVmVjdG9yOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAor
I2lmIEFTU0VSVF9FTkFCTEVECiBpbmxpbmUgYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
aGFzT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyKSBjb25zdAogewogICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9vYnNlcnZlcnNMb2NrKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJl
YWx0aW1lT3V0CiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UoKQogewogQVNTRVJUKCFtX2F1ZGlvU291cmNlLT5oYXNPYnNlcnZlcigqdGhp
cykpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOwogI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lu
a3MuaXNFbXB0eSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNw
cAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcs
NyArNTcsNyBAQCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OlJlYWx0aW1lT3V0CiBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoKQog
ewogQVNTRVJUKCFtX3ZpZGVvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwotI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9zaW5rc0xvY2spOwogI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lua3MuaXNFbXB0eSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDcgKzkyOSw3IEBAIGJvb2wg
aXNDcm9zc09yaWdpblNhZmVIZWFkZXIoSFRUUEhlYWRlck4KIAogYm9vbCBpc0Nyb3NzT3JpZ2lu
U2FmZUhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEhUVFBIZWFkZXJTZXQmIGFjY2Vz
c0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQpCiB7Ci0jaWZuZGVmIEFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZTsKICAgICBBU1NF
UlQoIWZpbmRIVFRQSGVhZGVyTmFtZShuYW1lLCBoZWFkZXJOYW1lKSk7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAkocmV2
aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIGNvbnN0IGNoYXIqIFNR
TGl0ZURhdGFiYXNlOjpsYXN0RXJyb3JNc2cKICAgICByZXR1cm4gbV9vcGVuRXJyb3JNZXNzYWdl
LmlzTnVsbCgpID8gbm90T3BlbkVycm9yTWVzc2FnZSA6IG1fb3BlbkVycm9yTWVzc2FnZS5kYXRh
KCk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIHZvaWQgU1FMaXRl
RGF0YWJhc2U6OmRpc2FibGVUaHJlYWRpbmdDaGVja3MoKQogewogICAgIC8vIE5vdGUgdGhhdCBT
UUxpdGUgY291bGQgYmUgY29tcGlsZWQgd2l0aCAtRFRIUkVBRFNBRkUsIG9yIHlvdSBtYXkgaGF2
ZSB0dXJuZWQgb2ZmIHRoZSBtdXRleGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIs
NyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgLy8gU2V0IHRoaXMgZmxhZyB0byBhbGxvdyBhY2Nl
c3MgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLiAgTm90IGFsbCBtdWx0aS10aHJlYWRlZCBhY2Nlc3Nl
cyBhcmUgc2FmZSEKICAgICAvLyBTZWUgaHR0cDovL3d3dy5zcWxpdGUub3JnL2N2c3RyYWMvd2lr
aT9wPU11bHRpVGhyZWFkaW5nIGZvciBtb3JlIGluZm8uCi0jaWZuZGVmIE5ERUJVRworI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNhYmxlVGhyZWFkaW5nQ2hl
Y2tzKCk7CiAjZWxzZQogICAgIHZvaWQgZGlzYWJsZVRocmVhZGluZ0NoZWNrcygpIHsgfQpAQCAt
MTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fcGFnZVNpemUgeyAtMSB9OwogICAg
IAogICAgIGJvb2wgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgeyBmYWxzZSB9OwotI2lmbmRlZiBO
REVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9zaGFyYWJsZSB7IGZhbHNlIH07
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw2
IEBAIFNRTGl0ZVN0YXRlbWVudDo6U1FMaXRlU3RhdGVtZW50KFNRTGl0ZUQKICAgICA6IG1fZGF0
YWJhc2UoZGIpCiAgICAgLCBtX3F1ZXJ5KHNxbCkKICAgICAsIG1fc3RhdGVtZW50KDApCi0jaWZu
ZGVmIE5ERUJVRwotICAgICwgbV9pc1ByZXBhcmVkKGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKQEAg
LTc5LDcgKzc2LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6cHJlcGFyZSgpCiAgICAgaWYgKHRh
aWwgJiYgKnRhaWwpCiAgICAgICAgIGVycm9yID0gU1FMSVRFX0VSUk9SOwogCi0jaWZuZGVmIE5E
RUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9pc1ByZXBhcmVkID0gZXJyb3IgPT0gU1FM
SVRFX09LOwogI2VuZGlmCiAgICAgcmV0dXJuIGVycm9yOwpAQCAtMTA4LDcgKzEwNSw3IEBAIGlu
dCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAoKQogICAgIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6Zmlu
YWxpemUoKQogewotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faXNQ
cmVwYXJlZCA9IGZhbHNlOwogI2VuZGlmCiAgICAgaWYgKCFtX3N0YXRlbWVudCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgJKHJldmlzaW9u
IDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtOTYsOCArOTYsOCBAQCBwcml2YXRlOgogICAgIFNRTGl0ZURh
dGFiYXNlJiBtX2RhdGFiYXNlOwogICAgIFN0cmluZyBtX3F1ZXJ5OwogICAgIHNxbGl0ZTNfc3Rt
dCogbV9zdGF0ZW1lbnQ7Ci0jaWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9pc1ByZXBhcmVkOwor
I2lmIEFTU0VSVF9FTkFCTEVECisgICAgYm9vbCBtX2lzUHJlcGFyZWQgeyBmYWxzZSB9OwogI2Vu
ZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ09NUHRyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NPTVB0ci5oCShyZXZpc2lv
biAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ09NUHRyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyOCw3ICsyMjgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgCiAgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsKIH0KIAotI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogaW5saW5lIHVuc2lnbmVkIHJlZkNvdW50KElV
bmtub3duKiBwdHIpCiB7CiAgICAgaWYgKCFwdHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ29tcGxleExpbmVMYXlvdXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db21wbGV4TGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk3Nyw3ICs5NzcsNyBAQCBCaWRpUnVuKiBDb21wbGV4TGluZUxheW91dDo6Y29tcHV0
ZUlubGluCiB2b2lkIENvbXBsZXhMaW5lTGF5b3V0OjpyZW1vdmVJbmxpbmVCb3goQmlkaVJ1biYg
cnVuLCBjb25zdCBSb290SW5saW5lQm94JiByb290TGluZUJveCkgY29uc3QKIHsKICAgICBhdXRv
KiBpbmxpbmVCb3ggPSBydW4uYm94KCk7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYXV0byogaW5saW5lUGFyZW50ID0gaW5saW5lQm94LT5wYXJlbnQoKTsK
ICAgICB3aGlsZSAoaW5saW5lUGFyZW50ICYmIGlubGluZVBhcmVudCAhPSAmcm9vdExpbmVCb3gp
IHsKICAgICAgICAgQVNTRVJUKCFpbmxpbmVQYXJlbnQtPmlzRGlydHkoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgRmxvYXRpbmdPYmplY3Q6OkZsb2F0aW5nT2Jq
ZWN0KFJlbmRlckJveAogICAgICwgbV9zaG91bGRQYWludCh0cnVlKQogICAgICwgbV9pc0Rlc2Nl
bmRhbnQoZmFsc2UpCiAgICAgLCBtX2lzUGxhY2VkKGZhbHNlKQotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkKICNlbmRpZgog
ewpAQCAtNjgsNyArNjgsNyBAQCBGbG9hdGluZ09iamVjdDo6RmxvYXRpbmdPYmplY3QoUmVuZGVy
Qm94CiAgICAgLCBtX3Nob3VsZFBhaW50KHNob3VsZFBhaW50KQogICAgICwgbV9pc0Rlc2NlbmRh
bnQoaXNEZXNjZW5kYW50KQogICAgICwgbV9pc1BsYWNlZCh0cnVlKQotI2lmbmRlZiBOREVCVUcK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9pc0luUGxhY2VkVHJlZShmYWxzZSkKICNlbmRp
ZgogewpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgRmxvYXRpbmdPYmplY3RzOjphZGRQbGFjZWRP
YmplY3QoRmwKICAgICBpZiAobV9wbGFjZWRGbG9hdHNUcmVlKQogICAgICAgICBtX3BsYWNlZEZs
b2F0c1RyZWUtPmFkZChpbnRlcnZhbEZvckZsb2F0aW5nT2JqZWN0KGZsb2F0aW5nT2JqZWN0KSk7
CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBmbG9hdGluZ09iamVj
dC0+c2V0SXNJblBsYWNlZFRyZWUodHJ1ZSk7CiAjZW5kaWYKIH0KQEAgLTM0Myw3ICszNDMsNyBA
QCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6cmVtb3ZlUGxhY2VkT2JqZWN0CiAgICAgfQogCiAgICAg
ZmxvYXRpbmdPYmplY3QtPnNldElzUGxhY2VkKGZhbHNlKTsKLSNpZm5kZWYgTkRFQlVHCisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBmbG9hdGluZ09iamVjdC0+c2V0SXNJblBsYWNlZFRyZWUoZmFs
c2UpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5n
T2JqZWN0cy5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmxvYXRpbmdPYmplY3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGlj
OgogICAgIExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3QgeyByZXR1cm4gbV9wYWdp
bmF0aW9uU3RydXQ7IH0KICAgICB2b2lkIHNldFBhZ2luYXRpb25TdHJ1dChMYXlvdXRVbml0IHN0
cnV0KSB7IG1fcGFnaW5hdGlvblN0cnV0ID0gc3RydXQ7IH0KIAotI2lmbmRlZiBOREVCVUcKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNJblBsYWNlZFRyZWUoKSBjb25zdCB7IHJldHVy
biBtX2lzSW5QbGFjZWRUcmVlOyB9CiAgICAgdm9pZCBzZXRJc0luUGxhY2VkVHJlZShib29sIHZh
bHVlKSB7IG1faXNJblBsYWNlZFRyZWUgPSB2YWx1ZTsgfQogI2VuZGlmCkBAIC0xMDgsNyArMTA4
LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Nob3VsZFBhaW50IDogMTsKICAgICB1bnNp
Z25lZCBtX2lzRGVzY2VuZGFudCA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1BsYWNlZCA6IDE7Ci0j
aWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgbV9pc0luUGxh
Y2VkVHJlZSA6IDE7CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
R3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGhtLmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIHZvaWQgR3JpZFRyYWNrU2l6
aW5nQWxnb3JpdGhtOjpyZXNldCgpCiAgICAgbV9oYXNQZXJjZW50U2l6ZWRSb3dzSW5kZWZpbml0
ZUhlaWdodCA9IGZhbHNlOwogfQogCi0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVE
CiBib29sIEdyaWRUcmFja1NpemluZ0FsZ29yaXRobTo6dHJhY2tzQXJlV2lkZXJUaGFuTWluVHJh
Y2tCcmVhZHRoKCkgY29uc3QKIHsKICAgICBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgYWxsVHJh
Y2tzID0gdHJhY2tzKG1fZGlyZWN0aW9uKTsKQEAgLTEzNTgsNyArMTM1OCw3IEBAIGJvb2wgR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtOjp0cmFja3NBcmUKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiBHcmlkVHJhY2tTaXppbmdB
bGdvcml0aG06OlN0YXRlTWFjaGluZTo6U3RhdGVNYWNoaW5lKEdyaWRUcmFja1NpemluZ0FsZ29y
aXRobSYgYWxnb3JpdGhtKQogICAgIDogbV9hbGdvcml0aG0oYWxnb3JpdGhtKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFja1NpemluZ0FsZ29yaXRobS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkVHJhY2tTaXppbmdBbGdvcml0aG0u
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNBbnlQZXJjZW50U2l6ZWRSb3dzSW5kZWZpbml0ZUhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUGVyY2VudFNpemVkUm93c0luZGVmaW5pdGVIZWlnaHQ7IH0K
IAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgdHJhY2tzQXJl
V2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKCkgY29uc3Q7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5jcHAJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXREaXNhbGxv
d2VkU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
CiBMYXlvdXREaXNhbGxvd2VkU2NvcGUqIExheW91dERpc2FsbG93ZWRTY29wZTo6c19jdXJyZW50
QXNzZXJ0aW9uID0gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xh
eW91dERpc2FsbG93ZWRTY29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9MYXlvdXREaXNhbGxvd2VkU2NvcGUuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dERpc2FsbG93ZWRTY29wZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTAgQEAgY2xhc3MgTGF5b3V0RGlzYWxsb3dlZFNjb3BlIHsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIFJlYXNvbiB7IFBlcmZvcm1hbmNlT3B0aW1pemF0aW9uLCBSZWVu
dHJhbmN5QXZvaWRhbmNlIH07CiAKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VO
QUJMRUQKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUoUmVhc29uKSB7IH0KICAgICBzdGF0aWMg
Ym9vbCBpc0xheW91dEFsbG93ZWQoKSB7IHJldHVybiB0cnVlOyB9Ci0jZWxzZQorI2Vsc2UgLy8g
QVNTRVJUX0VOQUJMRUQKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUoUmVhc29uKQogICAgICAg
ICA6IG1fcHJldmlvdXNBc3NlcnRpb24oc19jdXJyZW50QXNzZXJ0aW9uKQogICAgIHsKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMYXlvdXREaXNhbGxvd2VkU2NvcGUq
IG1fcHJldmlvdXNBc3NlcnRpb247CiAgICAgc3RhdGljIExheW91dERpc2FsbG93ZWRTY29wZSog
c19jdXJyZW50QXNzZXJ0aW9uOwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIH07
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2
aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzE2NSw3ICszMTY1LDcgQEAgVGV4dFJ1biBSZW5kZXJCbG9j
azo6Y29uc3RydWN0VGV4dFJ1bihjbwogICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuKFN0cmlu
Z1ZpZXcoY2hhcmFjdGVycywgbGVuZ3RoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiB9CiAKLSNpZm5k
ZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIHZvaWQgUmVuZGVyQmxvY2s6OmNoZWNrUG9z
aXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCkKIHsKICAgICBhdXRvKiBwb3NpdGlvbmVkRGVzY2Vu
ZGFudHMgPSBwb3NpdGlvbmVkT2JqZWN0cygpOwpAQCAtMzE3NSw4ICszMTc1LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6Y2hlY2tQb3NpdGlvbmVkT2JqZWN0cwogICAgIGZvciAoYXV0byogcmVuZGVy
ZXIgOiAqcG9zaXRpb25lZERlc2NlbmRhbnRzKQogICAgICAgICBBU1NFUlQoIXJlbmRlcmVyLT5u
ZWVkc0xheW91dCgpKTsKIH0KLQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAog
Ym9vbCBSZW5kZXJCbG9jazo6aGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCShyZXZpc2lvbiAyNTQwNDgp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMjk5LDcgKzI5OSw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgY29tcHV0ZVN0
YXJ0UG9zaXRpb25EZWx0YUZvckNoaWxkQXZvaWRpbmdGbG9hdHMoY29uc3QgUmVuZGVyQm94JiBj
aGlsZCwgTGF5b3V0VW5pdCBjaGlsZE1hcmdpblN0YXJ0LCBSZW5kZXJGcmFnbWVudENvbnRhaW5l
ciogPSAwKTsKIAotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHZvaWQg
Y2hlY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5
b3V0QmxvY2tDaGlsZChSCiAgICAgTGF5b3V0UmVjdCBvbGRSZWN0ID0gY2hpbGQuZnJhbWVSZWN0
KCk7CiAgICAgTGF5b3V0VW5pdCBvbGRMb2dpY2FsVG9wID0gbG9naWNhbFRvcEZvckNoaWxkKGNo
aWxkKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExh
eW91dFNpemUgb2xkTGF5b3V0RGVsdGEgPSB2aWV3KCkuZnJhbWVWaWV3KCkubGF5b3V0Q29udGV4
dCgpLmxheW91dERlbHRhKCk7CiAjZW5kaWYKICAgICAvLyBQb3NpdGlvbiB0aGUgY2hpbGQgYXMg
dGhvdWdoIGl0IGRpZG4ndCBjb2xsYXBzZSB3aXRoIHRoZSB0b3AuCkBAIC0yMzU5LDcgKzIzNTks
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplCiAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoJmZsb2F0aW5nT2JqZWN0Lm9yaWdpbmF0aW5nTGluZSgpLT5y
ZW5kZXJlcigpID09IHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmpl
Y3Qub3JpZ2luYXRpbmdMaW5lKCktPm1hcmtEaXJ0eSgpOwogICAgICAgICAgICAgICAgICAgICB9
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0aW5nT2JqZWN0LmNsZWFyT3JpZ2luYXRpbmdMaW5lKCk7CiAjZW5kaWYKICAg
ICAgICAgICAgICAgICB9CkBAIC0zNzQ5LDcgKzM3NDksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6ZW5zdXJlTGluZUJveGVzKCkKIAogICAgIGF1dG8mIGNvbXBsZXhMaW5lTGF5b3V0ID0gKnRo
aXMtPmNvbXBsZXhMaW5lTGF5b3V0KCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBMYXlvdXRVbml0IG9sZEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsK
ICNlbmRpZgogICAgIGJvb2wgZGlkTmVlZExheW91dCA9IG5lZWRzTGF5b3V0KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAKICNpbmNsdWRl
ICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJv
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6Omxh
eW91dAogCiAgICAgICAgIG1fc3RyZXRjaGluZ0NoaWxkcmVuID0gZmFsc2U7CiAKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgTGF5b3V0U2l6ZSBvbGRM
YXlvdXREZWx0YSA9IHZpZXcoKS5mcmFtZVZpZXcoKS5sYXlvdXRDb250ZXh0KCkubGF5b3V0RGVs
dGEoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5lQnJlYWsu
aCIKICNpbmNsdWRlICJSZW5kZXJMaXN0SXRlbS5oIgotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIuaCIKICNlbmRpZgog
I2luY2x1ZGUgIlJlbmRlckZyYWdtZW50Q29udGFpbmVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9D
b250YWluZXIoVAogICAgIH0KICAgICAKICAgICBib29sIGluRml4ZWQgPSBmYWxzZTsKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGZvdW5kQ29udGFp
bmVyID0gIWNvbnRhaW5lciB8fCAobV9tYXBwaW5nLnNpemUoKSAmJiBtX21hcHBpbmdbMF0ubV9y
ZW5kZXJlciA9PSBjb250YWluZXIpOwogI2VuZGlmCiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBS
ZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIoVAogCiAgICAgICAgIC8vIElmIGNvbnRh
aW5lciBpcyB0aGUgUmVuZGVyVmlldyAoc3RlcCAwKSB3ZSB3YW50IHRvIGFwcGx5IGl0cyBzY3Jv
bGwgb2Zmc2V0LgogICAgICAgICBpZiAoaSA+IDAgJiYgY3VycmVudFN0ZXAubV9yZW5kZXJlciA9
PSBjb250YWluZXIpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICAgICAgICAgIGZvdW5kQ29udGFpbmVyID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9D
b250YWluZXIoVAogRmxvYXRQb2ludCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIo
Y29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyKSBjb25zdAogewogICAgIEZsb2F0UG9pbnQgcmVzdWx0OwotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEZsb2F0UG9pbnQgcmVuZGVyZXJNYXBwZWRSZXN1
bHQgPSBtX21hcHBpbmcubGFzdCgpLm1fcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZShwLCBtX21h
cENvb3JkaW5hdGVzRmxhZ3MpOwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw3ICs2MzMs
NyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyCiAgICAgICAgIGdy
aWQuaW5zZXJ0KCpjaGlsZCwgeyBhcmVhLnJvd3MsIGFyZWEuY29sdW1ucyB9KTsKICAgICB9CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBpZiAoZ3JpZC5o
YXNHcmlkSXRlbXMoKSkgewogICAgICAgICBBU1NFUlQoZ3JpZC5udW1UcmFja3MoRm9yUm93cykg
Pj0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRSb3dDb3VudChzdHlsZSgpLCBn
cmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cykpKTsKICAgICAgICAgQVNTRVJUKGdyaWQubnVt
VHJhY2tzKEZvckNvbHVtbnMpID49IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlk
Q29sdW1uQ291bnQoc3R5bGUoKSwgZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMpKSk7
CkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKEdy
aWRUcgogCiAgICAgZ3JpZC5zZXROZWVkc0l0ZW1zUGxhY2VtZW50KGZhbHNlKTsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGZvciAoYXV0byogY2hpbGQg
PSBncmlkLm9yZGVySXRlcmF0b3IoKS5maXJzdCgpOyBjaGlsZDsgY2hpbGQgPSBncmlkLm9yZGVy
SXRlcmF0b3IoKS5uZXh0KCkpIHsKICAgICAgICAgaWYgKGdyaWQub3JkZXJJdGVyYXRvcigpLnNo
b3VsZFNraXBDaGlsZCgqY2hpbGQpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjI4LDEx
ICsxMjI4LDcgQEAgYm9vbCBSZW5kZXJHcmlkOjppc0Jhc2VsaW5lQWxpZ25tZW50Rm9yQwogLy8g
RklYTUU6IFRoaXMgbG9naWMgaXMgc2hhcmVkIGJ5IFJlbmRlckZsZXhpYmxlQm94LCBzbyBpdCBt
aWdodCBiZSByZWZhY3RvcmVkIHNvbWVob3cuCiBpbnQgUmVuZGVyR3JpZDo6YmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSBtb2RlKSBjb25zdAogewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBB
U1NFUlQobW9kZSA9PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0obW9kZSk7Ci0jZW5kaWYKKyAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKICAgICBhdXRvIGJhc2VsaW5lID0gZmlyc3RMaW5l
QmFzZWxpbmUoKTsKICAgICBpZiAoIWJhc2VsaW5lKQogICAgICAgICByZXR1cm4gc3ludGhlc2l6
ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKnRoaXMsIGRpcmVjdGlvbikgKyBtYXJnaW5Mb2dpY2Fs
SGVpZ2h0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgUmVuZGVySW5saW5lOjpS
ZW5kZXJJbmxpbmUoRG9jdW1lbnQmIGRvYwogCiB2b2lkIFJlbmRlcklubGluZTo6d2lsbEJlRGVz
dHJveWVkKCkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICAvLyBNYWtlIHN1cmUgd2UgZG8gbm90IHJldGFpbiAidGhpcyIgaW4gdGhlIGNvbnRpbnVhdGlv
biBvdXRsaW5lIHRhYmxlIG1hcCBvZiBvdXIgY29udGFpbmluZyBibG9ja3MuCiAgICAgaWYgKHBh
cmVudCgpICYmIHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
aGFzT3V0bGluZSgpKSB7CiAgICAgICAgIGJvb2wgY29udGFpbmluZ0Jsb2NrUGFpbnRzQ29udGlu
dWF0aW9uT3V0bGluZSA9IGNvbnRpbnVhdGlvbigpIHx8IGlzQ29udGludWF0aW9uKCk7CkBAIC04
MCw3ICs4MCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95ZWQoKQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJM
RUQKIAogICAgIGlmICghcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpIHsKICAgICAgICAgaWYg
KGZpcnN0TGluZUJveCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBD
bGlwUmVjdHNDYWNoZSB7CiBwdWJsaWM6CiAgICAgQ2xpcFJlY3RzQ2FjaGUoKQogICAgIHsKLSNp
Zm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBOdW1DYWNoZWRDbGlwUmVjdHNUeXBlczsgKytpKSB7CiAgICAgICAgICAgICBtX2NsaXBS
ZWN0c1Jvb3RbaV0gPSAwOwogICAgICAgICAgICAgbV9zY3JvbGxiYXJSZWxldmFuY3lbaV0gPSBJ
Z25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fY2xpcFJlY3RzW2dldEluZGV4KGNsaXBSZWN0c1R5cGUsIHJlc3BlY3RPdmVyZmxv
dyldID0gV1RGTW92ZShjbGlwUmVjdHMpOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIGNvbnN0IFJlbmRlckxheWVyKiBtX2NsaXBSZWN0c1Jvb3RbTnVt
Q2FjaGVkQ2xpcFJlY3RzVHlwZXNdOwogICAgIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5
IG1fc2Nyb2xsYmFyUmVsZXZhbmN5W051bUNhY2hlZENsaXBSZWN0c1R5cGVzXTsKICNlbmRpZgpA
QCAtMzI3LDcgKzMyNyw3IEBAIFJlbmRlckxheWVyOjpSZW5kZXJMYXllcihSZW5kZXJMYXllck1v
ZGUKICAgICAsIG1fcmVxdWlyZXNTY3JvbGxQb3NpdGlvblJlY29uY2lsaWF0aW9uKGZhbHNlKQog
ICAgICwgbV9jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMoZmFsc2UpCiAgICAgLCBtX3Vw
ZGF0aW5nTWFycXVlZVBvc2l0aW9uKGZhbHNlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgICwgbV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQodHJ1ZSkKICNl
bmRpZgogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCkBAIC00NzYzLDcgKzQ3NjMsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExpc3QoTGF5ZXJMaXN0IGxhCiAgICAgaWYgKCFoYXNTZWxm
UGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRl
Y3RvciBtdXRhdGlvbkNoZWNrZXIoKnRoaXMpOwogI2VuZGlmCiAKQEAgLTUzNzgsNyArNTM3OCw3
IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFIKIAogICAgIC8vIFRo
aXMgdmFyaWFibGUgdHJhY2tzIHdoaWNoIGxheWVyIHRoZSBtb3VzZSBlbmRzIHVwIGJlaW5nIGlu
c2lkZS4KICAgICBSZW5kZXJMYXllciogY2FuZGlkYXRlTGF5ZXIgPSBudWxscHRyOwotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9u
RGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCp0aGlzKTsKICNlbmRpZgogCkBAIC01NjU5LDcgKzU2
NTksNyBAQCBSZWY8Q2xpcFJlY3RzPiBSZW5kZXJMYXllcjo6dXBkYXRlQ2xpcFJlCiAgICAgCiAg
ICAgaWYgKCFtX2NsaXBSZWN0c0NhY2hlKQogICAgICAgICBtX2NsaXBSZWN0c0NhY2hlID0gbWFr
ZVVuaXF1ZTxDbGlwUmVjdHNDYWNoZT4oKTsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBtX2NsaXBSZWN0c0NhY2hlLT5tX2NsaXBSZWN0c1Jvb3RbY2xpcFJlY3RzVHlw
ZV0gPSBjbGlwUmVjdHNDb250ZXh0LnJvb3RMYXllcjsKICAgICBtX2NsaXBSZWN0c0NhY2hlLT5t
X3Njcm9sbGJhclJlbGV2YW5jeVtjbGlwUmVjdHNUeXBlXSA9IGNsaXBSZWN0c0NvbnRleHQub3Zl
cmxheVNjcm9sbGJhclNpemVSZWxldmFuY3k7CiAjZW5kaWYKQEAgLTYxNzIsNyArNjE3Miw3IEBA
IExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm8KICAgICAKICAgICBBU1NF
UlQoaXNTdGFja2luZ0NvbnRleHQoKSB8fCAhcG9zaXRpdmVaT3JkZXJMYXllcnMoKS5zaXplKCkp
OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgTGF5ZXJM
aXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXll
ciY+KCp0aGlzKSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgbm9ybWFsRmxvd0xpc3REaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9ybWFsRmxv
d0xpc3REaXJ0eTsgfQogICAgIGJvb2wgek9yZGVyTGlzdHNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fek9yZGVyTGlzdHNEaXJ0eTsgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCBsYXllckxpc3RNdXRhdGlvbkFsbG93ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZDsgfQogICAgIHZvaWQgc2V0TGF5ZXJMaXN0
TXV0YXRpb25BbGxvd2VkKGJvb2wgZmxhZykgeyBtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCA9
IGZsYWc7IH0KICNlbmRpZgpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzIDogMTsKICAgICBib29sIG1fdXBkYXRp
bmdNYXJxdWVlUG9zaXRpb24gOiAxOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiAgICAgYm9vbCBtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCA6IDE7CiAjZW5k
aWYKIApAQCAtMTM2OSw3ICsxMzY5LDcgQEAgaW5saW5lIFJlbmRlckxheWVyKiBSZW5kZXJMYXll
cjo6cGFpbnRPcgogICAgIHJldHVybiBtX2lzTm9ybWFsRmxvd09ubHkgPyBtX3BhcmVudCA6IHN0
YWNraW5nQ29udGV4dCgpOwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiBjbGFzcyBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIHsKIHB1YmxpYzoKICAgICBM
YXllckxpc3RNdXRhdGlvbkRldGVjdG9yKFJlbmRlckxheWVyJiBsYXllcikKQEAgLTEzODgsNyAr
MTM4OCw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyTGF5ZXImIG1fbGF5ZXI7CiAgICAgYm9vbCBt
X3ByZXZpb3VzTXV0YXRpb25BbGxvd2VkU3RhdGU7CiB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKIAogdm9pZCBtYWtlTWF0cml4UmVuZGVyYWJsZShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGJvb2wgaGFzM0RSZW5kZXJpbmcpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzNzUsNyArMjM3NSw3IEBAIHN0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJz
ZVZpc2libGVOb24KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGNhbGxlZCB3aXRoIGEg
c3RhbGUgei1vcmRlciBsaXN0cy4gU2VlIGJ1ZyA4NTUxMi4KICAgICBwYXJlbnQudXBkYXRlTGF5
ZXJMaXN0c0lmTmVlZGVkKCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihwYXJl
bnQpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29t
cG8KIAogICAgIGJhY2tpbmdTaGFyaW5nU3RhdGUudXBkYXRlQmVmb3JlRGVzY2VuZGFudFRyYXZl
cnNhbChsYXllciwgd2lsbEJlQ29tcG9zaXRlZCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9u
Q2hlY2tlcihsYXllcik7CiAjZW5kaWYKIApAQCAtMTE2Miw3ICsxMTYyLDcgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnRyYXZlcnNlVW5jaAogCiAgICAgYmFja2luZ1NoYXJpbmdTdGF0
ZS51cGRhdGVCZWZvcmVEZXNjZW5kYW50VHJhdmVyc2FsKGxheWVyLCBsYXllcklzQ29tcG9zaXRl
ZCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBMYXll
ckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKIApA
QCAtMTI3OSw3ICsxMjc5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJh
Y2tpbgogCiAgICAgYm9vbCByZXF1aXJlc0NoaWxkUmVidWlsZCA9IGxheWVyQmFja2luZyAmJiBs
YXllci5uZWVkc0NvbXBvc2l0aW5nTGF5ZXJDb25uZWN0aW9uKCkgJiYgIWxheWVyLmhhc0NvbXBv
c2l0aW5nRGVzY2VuZGFudCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5
ZXIpOwogI2VuZGlmCiAKQEAgLTE5MzEsNyArMTkzMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjphZGREZXNjZW5kYW4KICAgICAgICAgYWRkVG9PdmVybGFwTWFwKG92ZXJsYXBNYXAs
IGxheWVyLCBsYXllckV4dGVudCk7CiAgICAgfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNo
ZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllciY+KGxheWVyKSk7CiAjZW5kaWYKIApAQCAtMjIx
OCw3ICsyMjE4LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlY3Vyc2l2ZVJlcAog
ICAgIGlmIChsYXllci5pc0NvbXBvc2l0ZWQoKSAmJiAhbGF5ZXIuYmFja2luZygpLT5wYWludHNJ
bnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpCiAgICAgICAgIGxheWVyLnNldEJhY2tpbmdOZWVkc1Jl
cGFpbnQoKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRp
ZgogCkBAIC00MTA5LDcgKzQxMDksNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5
ZXJIYXMzRENvCiAKICAgICBjb25zdF9jYXN0PFJlbmRlckxheWVyJj4obGF5ZXIpLnVwZGF0ZUxh
eWVyTGlzdHNJZk5lZWRlZCgpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoY29u
c3RfY2FzdDxSZW5kZXJMYXllciY+KGxheWVyKSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheW91dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksOSBAQCBSZW5kZXJMYXlvdXRTdGF0ZTo6UmVuZGVy
TGF5b3V0U3RhdGUoUmVuCiAgICAgOiBtX2NsaXBwZWQoZmFsc2UpCiAgICAgLCBtX2lzUGFnaW5h
dGVkKGlzUGFnaW5hdGVkID09IElzUGFnaW5hdGVkOjpZZXMpCiAgICAgLCBtX3BhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZChmYWxzZSkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAsIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkKGZhbHNlKQogICAgICwgbV9sYXlv
dXREZWx0YVlTYXR1cmF0ZWQoZmFsc2UpCi0jZW5kaWYKLSNpZm5kZWYgTkRFQlVHCiAgICAgLCBt
X3JlbmRlcmVyKCZyZW5kZXJlcikKICNlbmRpZgogewpAQCAtNjgsMTEgKzY2LDkgQEAgUmVuZGVy
TGF5b3V0U3RhdGU6OlJlbmRlckxheW91dFN0YXRlKGNvbgogICAgIDogbV9jbGlwcGVkKGZhbHNl
KQogICAgICwgbV9pc1BhZ2luYXRlZChmYWxzZSkKICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRD
aGFuZ2VkKGZhbHNlKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgICwgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQoZmFsc2UpCiAgICAgLCBtX2xheW91dERlbHRh
WVNhdHVyYXRlZChmYWxzZSkKLSNlbmRpZgotI2lmbmRlZiBOREVCVUcKICAgICAsIG1fcmVuZGVy
ZXIoJnJlbmRlcmVyKQogI2VuZGlmCiB7CkBAIC0xMDksNyArMTA1LDcgQEAgdm9pZCBSZW5kZXJM
YXlvdXRTdGF0ZTo6Y29tcHV0ZU9mZnNldHMoYwogICAgICAgICBtX3BhaW50T2Zmc2V0IC09IHRv
TGF5b3V0U2l6ZShyZW5kZXJlci5zY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIG1fbGF5b3V0RGVs
dGEgPSBhbmNlc3Rvci5sYXlvdXREZWx0YSgpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBB
U1NFUlRfRU5BQkxFRAogICAgIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkID0gYW5jZXN0b3IubV9s
YXlvdXREZWx0YVhTYXR1cmF0ZWQ7CiAgICAgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQgPSBhbmNl
c3Rvci5tX2xheW91dERlbHRhWVNhdHVyYXRlZDsKICNlbmRpZgpAQCAtMjYwLDEzICsyNTYsMTMg
QEAgdm9pZCBSZW5kZXJMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoTGluZUdyaQogdm9pZCBSZW5kZXJM
YXlvdXRTdGF0ZTo6YWRkTGF5b3V0RGVsdGEoTGF5b3V0U2l6ZSBkZWx0YSkKIHsKICAgICBtX2xh
eW91dERlbHRhICs9IGRlbHRhOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkIHw9IG1fbGF5b3V0RGVsdGEud2lkdGgo
KSA9PSBMYXlvdXRVbml0OjptYXgoKSB8fCBtX2xheW91dERlbHRhLndpZHRoKCkgPT0gTGF5b3V0
VW5pdDo6bWluKCk7CiAgICAgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQgfD0gbV9sYXlvdXREZWx0
YS5oZWlnaHQoKSA9PSBMYXlvdXRVbml0OjptYXgoKSB8fCBtX2xheW91dERlbHRhLmhlaWdodCgp
ID09IExheW91dFVuaXQ6Om1pbigpOwogI2VuZGlmCiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgUmVuZGVyTGF5b3V0U3RhdGU6OmxheW91dERlbHRh
TWF0Y2hlcyhMYXlvdXRTaXplIGRlbHRhKSBjb25zdAogewogICAgIHJldHVybiAoZGVsdGEud2lk
dGgoKSA9PSBtX2xheW91dERlbHRhLndpZHRoKCkgfHwgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQp
ICYmIChkZWx0YS5oZWlnaHQoKSA9PSBtX2xheW91dERlbHRhLmhlaWdodCgpIHx8IG1fbGF5b3V0
RGVsdGFZU2F0dXJhdGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXlvdXRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXlvdXRTdGF0ZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5b3V0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIDogbV9jbGlwcGVkKGZhbHNlKQogICAgICAgICAsIG1faXNQYWdp
bmF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2Up
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICwgbV9s
YXlvdXREZWx0YVhTYXR1cmF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV9sYXlvdXREZWx0YVlTYXR1
cmF0ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgYm9v
bCBuZWVkc0Jsb2NrRGlyZWN0aW9uTG9jYXRpb25TZXRCZWZvcmVMYXlvdXQoKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVHcmlkIHx8IChtX2lzUGFnaW5hdGVkICYmIG1fcGFnZUxvZ2ljYWxIZWlnaHQp
OyB9CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KICNlbmRpZgogICAg
IExheW91dFJlY3QgY2xpcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NsaXBSZWN0OyB9CkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkTGF5b3V0RGVsdGEoTGF5b3V0U2l6
ZSk7CiAgICAgTGF5b3V0U2l6ZSBsYXlvdXREZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
RGVsdGE7IH0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBi
b29sIGxheW91dERlbHRhTWF0Y2hlcyhMYXlvdXRTaXplKSBjb25zdDsKICNlbmRpZgogCkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNQYWdpbmF0ZWQgOiAxOwogICAg
IC8vIElmIG91ciBwYWdlIGhlaWdodCBoYXMgY2hhbmdlZCwgdGhpcyB3aWxsIGZvcmNlIGFsbCBi
bG9ja3MgdG8gcmVsYXlvdXQuCiAgICAgYm9vbCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCA6
IDE7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBt
X2xheW91dERlbHRhWFNhdHVyYXRlZCA6IDE7CiAgICAgYm9vbCBtX2xheW91dERlbHRhWVNhdHVy
YXRlZCA6IDE7CiAjZW5kaWYKQEAgLTEyOCw3ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIExheW91
dFNpemUgbV9wYWdlT2Zmc2V0OwogICAgIExheW91dFNpemUgbV9saW5lR3JpZE9mZnNldDsKICAg
ICBMYXlvdXRTaXplIG1fbGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luOwotI2lmbmRlZiBOREVCVUcK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlbmRlckVsZW1lbnQqIG1fcmVuZGVyZXIgeyBudWxs
cHRyIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwxMSArMTAyLDExIEBAIFJl
bmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2MKIAogc3RydWN0IFNhbWVTaXpl
QXNSZW5kZXJPYmplY3QgewogICAgIHZpcnR1YWwgflNhbWVTaXplQXNSZW5kZXJPYmplY3QoKSA9
IGRlZmF1bHQ7IC8vIEFsbG9jYXRlIHZ0YWJsZSBwb2ludGVyLgotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgd2Vha1B0ckZhY3Rvcldhc0NvbnN0cnVj
dGVkT25NYWluVGhyZWFkOwogI2VuZGlmCiAgICAgdm9pZCogcG9pbnRlcnNbNV07Ci0jaWZuZGVm
IE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWduZWQgbV9kZWJ1Z0JpdGZpZWxk
cyA6IDI7CiAjZW5kaWYKICAgICB1bnNpZ25lZCBtX2JpdGZpZWxkczsKQEAgLTEyNyw3ICsxMjcs
NyBAQCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2RlJiBub2RlKQogICAgICwgbV9wYXJl
bnQobnVsbHB0cikKICAgICAsIG1fcHJldmlvdXMobnVsbHB0cikKICAgICAsIG1fbmV4dChudWxs
cHRyKQotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV9oYXNBWE9i
amVjdChmYWxzZSkKICAgICAsIG1fc2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oZmFsc2UpCiAjZW5k
aWYKQEAgLTE0Myw4ICsxNDMsOCBAQCBSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2RlJiBu
b2RlKQogUmVuZGVyT2JqZWN0Ojp+UmVuZGVyT2JqZWN0KCkKIHsKICAgICB2aWV3KCkuZGlkRGVz
dHJveVJlbmRlcmVyKCk7Ci0jaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVCghbV9oYXNBWE9iamVj
dCk7CisjaWZuZGVmIE5ERUJVRwogICAgIHJlbmRlck9iamVjdENvdW50ZXIuZGVjcmVtZW50KCk7
CiAjZW5kaWYKICAgICBBU1NFUlQoIWhhc1JhcmVEYXRhKCkpOwpAQCAtNDk0LDcgKzQ5NCw3IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpjbGVhck5lZWRzTGF5b3V0KCkKICAgICBzZXROZWVkc1Bvc2l0
aW9uZWRNb3ZlbWVudExheW91dEJpdChmYWxzZSk7CiAgICAgaWYgKGlzPFJlbmRlckVsZW1lbnQ+
KCp0aGlzKSkKICAgICAgICAgZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oKnRoaXMpLnNldEFuY2Vz
dG9yTGluZUJveERpcnR5KGZhbHNlKTsKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBjaGVja0Jsb2NrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCk7CiAjZW5kaWYK
IH0KQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6bWFya0NvbnRhaW5pbmdC
bG9ja3NGCiAgICAgICAgIHNjaGVkdWxlUmVsYXlvdXRGb3JTdWJ0cmVlKCphbmNlc3Rvcik7CiB9
CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJMRUQKIHZvaWQgUmVuZGVyT2JqZWN0
OjpjaGVja0Jsb2NrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0KCkKIHsKICAgICBBU1NFUlQo
IW5lZWRzTGF5b3V0KCkpOwpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpj
aGVja0Jsb2NrUG9zaXRpb25lZE8KICAgICBpZiAoaXM8UmVuZGVyQmxvY2s+KCp0aGlzKSkKICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyQmxvY2s+KCp0aGlzKS5jaGVja1Bvc2l0aW9uZWRPYmplY3Rz
TmVlZExheW91dCgpOwogfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogdm9p
ZCBSZW5kZXJPYmplY3Q6OnNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShib29sIHNob3Vs
ZEJlRGlydHksIE1hcmtpbmdCZWhhdmlvciBtYXJrUGFyZW50cykKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1
LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVzZURhcmtBcHBl
YXJhbmNlKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0PFN0eWxlQ29sb3I6Ok9wdGlvbnM+IHN0eWxl
Q29sb3JPcHRpb25zKCkgY29uc3Q7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICB2b2lkIHNldEhhc0FYT2JqZWN0KGJvb2wgZmxhZykgeyBtX2hhc0FYT2JqZWN0ID0g
ZmxhZzsgfQogICAgIGJvb2wgaGFzQVhPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0FYT2Jq
ZWN0OyB9CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlck9iamVj
dCogbV9yZW5kZXJPYmplY3Q7CiAgICAgICAgIGJvb2wgbV9wcmVleGlzdGluZ0ZvcmJpZGRlbjsK
ICAgICB9OwotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogICAgIC8vIE9idGFp
bnMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGJsb2NrIChpbmNsdWRpbmcgdGhpcyBibG9jaykgdGhh
dCBjb250cmlidXRlcyBhIGZpcnN0LWxpbmUgc3R5bGUgdG8gb3VyIGlubGluZQogICAgIC8vIGNo
aWxkcmVuLgpAQCAtODEzLDcgKzgxMyw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBpc1NldE5lZWRz
TGF5b3V0Rm9yYmlkZGVuKCkgY29uc3QgeyByZXR1cm4gbV9zZXROZWVkc0xheW91dEZvcmJpZGRl
bjsgfQogICAgIHZvaWQgc2V0TmVlZHNMYXlvdXRJc0ZvcmJpZGRlbihib29sIGZsYWcpIHsgbV9z
ZXROZWVkc0xheW91dEZvcmJpZGRlbiA9IGZsYWc7IH0KICNlbmRpZgpAQCAtODMzLDcgKzgzMyw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
ZmllbGRzLmhhc1JhcmVEYXRhKCk7IH0KICAgICB2b2lkIHNldEhhc1JhcmVEYXRhKGJvb2wgYikg
eyBtX2JpdGZpZWxkcy5zZXRIYXNSYXJlRGF0YShiKTsgfQogCi0jaWZuZGVmIE5ERUJVRworI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgdm9pZCBjaGVja0Jsb2NrUG9zaXRpb25lZE9iamVjdHNOZWVk
TGF5b3V0KCk7CiAjZW5kaWYKIApAQCAtODQzLDcgKzg0Myw3IEBAIHByaXZhdGU6CiAgICAgUmVu
ZGVyT2JqZWN0KiBtX3ByZXZpb3VzOwogICAgIFJlbmRlck9iamVjdCogbV9uZXh0OwogCi0jaWZu
ZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc0FYT2JqZWN0ICAg
ICAgICAgICAgIDogMTsKICAgICBib29sIG1fc2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4gOiAxOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAJKHJl
dmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZW5kZXJRdW90ZTo6c3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaQogCiBjb25zdCB1bnNpZ25lZCBtYXhEaXN0aW5jdFF1b3RlQ2hh
cmFjdGVycyA9IDE2OwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAKIHN0YXRpYyB2b2lkIGNoZWNrTnVtYmVyT2ZEaXN0aW5jdFF1b3RlQ2hhcmFjdGVycyhVQ2hh
ciBjaGFyYWN0ZXIpCiB7CkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrTnVtYmVy
T2ZEaXN0aW5jdFF1b3RlQ2gKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotI2VuZGlm
CisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogc3RydWN0IFF1b3Rlc0Zvckxhbmd1YWdlIHsK
ICAgICBjb25zdCBjaGFyKiBsYW5ndWFnZTsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgY29u
c3QgUXVvdGVzRm9yTGFuZ3VhZ2UqIHF1b3Rlc0ZvCiAKICAgICBjb25zdCB1bnNpZ25lZCBtYXhM
YW5ndWFnZUxlbmd0aCA9IDg7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAvLyBPbmUgdGltZSBjaGVjayB0aGF0IHRoZSB0YWJsZSBtZWV0cyB0aGUgY29u
c3RyYWludHMgdGhhdCB0aGUgY29kZSBiZWxvdyByZWxpZXMgb24uCiAKICAgICBzdGF0aWMgYm9v
bCBkaWRPbmVUaW1lQ2hlY2sgPSBmYWxzZTsKQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgY29u
c3QgUXVvdGVzRm9yTGFuZ3VhZ2UqIHF1b3Rlc0ZvCiAgICAgICAgICAgICBjaGVja051bWJlck9m
RGlzdGluY3RRdW90ZUNoYXJhY3RlcnMocXVvdGVUYWJsZVtpXS5jbG9zZTIpOwogICAgICAgICB9
CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAogICAgIHVuc2lnbmVk
IGxlbmd0aCA9IGxhbmd1YWdlLmxlbmd0aCgpOwogICAgIGlmICghbGVuZ3RoIHx8IGxlbmd0aCA+
IG1heExhbmd1YWdlTGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAg
cHVibGljOgogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdDZWxsQWZ0ZXIo
Y29uc3QgUmVuZGVyVGFibGVDZWxsJik7CiAKICAgICB1c2luZyBSZW5kZXJCbG9ja0Zsb3c6Om5v
ZGVBdFBvaW50OwotI2lmbmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wg
aXNGaXJzdE9yTGFzdENlbGxJblJvdygpIGNvbnN0IHsgcmV0dXJuICF0YWJsZSgpLT5jZWxsQWZ0
ZXIodGhpcykgfHwgIXRhYmxlKCktPmNlbGxCZWZvcmUodGhpcyk7IH0KICNlbmRpZgogICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsNyArNjQ3LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OmNvbXB1dGVPdmVyZmxvdwogICAgIHVuc2lnbmVkIHRvdGFsQ2Vs
bHNDb3VudCA9IG5FZmZDb2xzICogdG90YWxSb3dzOwogICAgIHVuc2lnbmVkIG1heEFsbG93ZWRP
dmVyZmxvd2luZ0NlbGxzQ291bnQgPSB0b3RhbENlbGxzQ291bnQgPCBnTWluVGFibGVTaXplVG9V
c2VGYXN0UGFpbnRQYXRoV2l0aE92ZXJmbG93aW5nQ2VsbCA/IDAgOiBnTWF4QWxsb3dlZE92ZXJm
bG93aW5nQ2VsbFJhdGlvRm9yRmFzdFBhaW50UGF0aCAqIHRvdGFsQ2VsbHNDb3VudDsKIAotI2lm
bmRlZiBOREVCVUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaGFzT3ZlcmZsb3dpbmdD
ZWxsID0gZmFsc2U7CiAjZW5kaWYKICAgICAvLyBOb3cgdGhhdCBvdXIgaGVpZ2h0IGhhcyBiZWVu
IGRldGVybWluZWQsIGFkZCBpbiBvdmVyZmxvdyBmcm9tIGNlbGxzLgpAQCAtNjYwLDcgKzY2MCw3
IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpjb21wdXRlT3ZlcmZsb3cKICAgICAgICAgICAg
IGlmIChyIDwgdG90YWxSb3dzIC0gMSAmJiBjZWxsID09IHByaW1hcnlDZWxsQXQociArIDEsIGMp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgYWRkT3ZlcmZsb3dGcm9t
Q2hpbGQoY2VsbCk7Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAg
ICAgICBoYXNPdmVyZmxvd2luZ0NlbGwgfD0gY2VsbC0+aGFzVmlzdWFsT3ZlcmZsb3coKTsKICNl
bmRpZgogICAgICAgICAgICAgaWYgKGNlbGwtPmhhc1Zpc3VhbE92ZXJmbG93KCkgJiYgIW1fZm9y
Y2VTbG93UGFpbnRQYXRoV2l0aE92ZXJmbG93aW5nQ2VsbCkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjIsNyArNTYyLDcgQEAgYm9vbCBSZW5kZXJUZXh0TGluZUJv
eGVzOjpkaXJ0eVJhbmdlKFJlbgogCiBpbmxpbmUgdm9pZCBSZW5kZXJUZXh0TGluZUJveGVzOjpj
aGVja0NvbnNpc3RlbmN5KCkgY29uc3QKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICNpZmRlZiBDSEVDS19DT05TSVNURU5DWQogICAgIGNvbnN0IElubGluZVRl
eHRCb3gqIHByZXYgPSBudWxscHRyOwogICAgIGZvciAoYXV0byogY2hpbGQgPSBtX2ZpcnN0OyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFRleHRCb3goKSkgewpAQCAtNTcyLDEwICs1NzIsMTAg
QEAgaW5saW5lIHZvaWQgUmVuZGVyVGV4dExpbmVCb3hlczo6Y2hlY2tDbwogICAgIH0KICAgICBB
U1NFUlQocHJldiA9PSBtX2xhc3QpOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiBS
ZW5kZXJUZXh0TGluZUJveGVzOjp+UmVuZGVyVGV4dExpbmVCb3hlcygpCiB7CiAgICAgQVNTRVJU
KCFtX2ZpcnN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGlu
ZUJveGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRMaW5lQm94ZXMuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRMaW5lQm94ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QCBwdWJsaWM6CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVRdWFkc0ZvclJhbmdlKGNv
bnN0IFJlbmRlclRleHQmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBib29sIHVzZVNl
bGVjdGlvbkhlaWdodCwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OwogICAgIFZlY3RvcjxJbnRSZWN0
PiBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0LCBib29sKiB3YXNGaXhlZCkg
Y29uc3Q7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB+
UmVuZGVyVGV4dExpbmVCb3hlcygpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNTQwNDgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjI3LDcgKzYyNyw3IEBAIGlubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJl
bmRlclRleHQmIHQKIAogICAgIEFTU0VSVChwb3MgLSBsYXN0U3BhY2UgLSBwcmVmaXhMZW5ndGgg
Pj0gbWluaW11bVN1ZmZpeExlbmd0aCk7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBIYXNoU2V0PGNvbnN0IEZvbnQqPiBmYWxsYmFja0ZvbnRzOwogICAg
IGZsb2F0IHByZWZpeFdpZHRoID0gaHlwaGVuV2lkdGggKyB0ZXh0V2lkdGgodGV4dCwgbGFzdFNw
YWNlLCBwcmVmaXhMZW5ndGgsIGZvbnQsIHhQb3MsIGlzRml4ZWRQaXRjaCwgY29sbGFwc2VXaGl0
ZVNwYWNlLCBmYWxsYmFja0ZvbnRzKSArIGxhc3RTcGFjZVdvcmRTcGFjaW5nOwogICAgIEFTU0VS
VCh4UG9zICsgcHJlZml4V2lkdGggPD0gYXZhaWxhYmxlV2lkdGgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsNyArMTQ4LDcgQEAgcHJpdmF0ZToKICAgICBHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSwgR3JpZFNwYW5UeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCiAg
ICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBB
U1NFUlQoc3RhcnRMaW5lIDwgZW5kTGluZSk7CiAgICAgICAgIGlmICh0eXBlID09IFRyYW5zbGF0
ZWREZWZpbml0ZSkgewogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0TGluZSA+PSAwKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2
aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBzdHJ1Y3QgU2FtZVNpemVB
c1JlbmRlclN0eWxlIHsKICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICB1
bnNpZ25lZCBtX2JpdGZpZWxkc1syXTsKICAgICB9IG1fbm9uSW5oZXJpdGVkRmxhZ3M7Ci0jaWYg
IUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyNpZiBBU1NF
UlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIGRlbGV0
aW9uQ2hlY2s7CiAjZW5kaWYKIH07CkBAIC0yMzEsNyArMjMxLDcgQEAgaW5saW5lIFJlbmRlclN0
eWxlOjpSZW5kZXJTdHlsZShSZW5kZXJTdAogCiBSZW5kZXJTdHlsZTo6flJlbmRlclN0eWxlKCkK
IHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQor
I2lmIEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAg
IG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3Jl
YXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5
bGUsIERpc3BsYXlUeXBlKTsKICAgICBzdGF0aWMgUmVuZGVyU3R5bGUgY3JlYXRlU3R5bGVJbmhl
cml0aW5nRnJvbVBzZXVkb1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSk7CiAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorI2lm
IEFTU0VSVF9FTkFCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQogICAgIGJvb2wg
ZGVsZXRpb25IYXNCZWd1bigpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZXRpb25IYXNCZWd1bjsgfQog
I2VuZGlmCiAKQEAgLTE5MDUsNyArMTkwNSw3IEBAIHByaXZhdGU6CiAKICAgICBEYXRhUmVmPFNW
R1JlbmRlclN0eWxlPiBtX3N2Z1N0eWxlOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFC
TEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKKyNpZiBBU1NFUlRfRU5BQkxFRCB8fCBFTkFCTEUoU0VD
VVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1biB7IGZhbHNlIH07
CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZUJ1aWxkZXJSdWJ5LmNwcAkocmV2aXNpb24gMjU0MDQ4
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVCdWlsZGVy
UnVieS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzUnVieUFmdGVyQmxvY2soY29ucwogICAgICAgICAmJiBkb3duY2FzdDxSZW5kZXJCbG9j
az4oKm9iamVjdCkuZmlyc3RDaGlsZCgpLT5zdHlsZSgpLnN0eWxlVHlwZSgpID09IFBzZXVkb0lk
OjpBZnRlcjsKIH0KIAotI2lmbmRlZiBBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxF
RAogc3RhdGljIGlubGluZSBib29sIGlzUnVieUNoaWxkRm9yTm9ybWFsUmVtb3ZhbChjb25zdCBS
ZW5kZXJPYmplY3QmIG9iamVjdCkKIHsKICAgICByZXR1cm4gb2JqZWN0LmlzUnVieVJ1bigpCkBA
IC04NCw3ICs4NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1J1YnlDaGlsZEZvck5vcm1hbFIK
ICAgICB8fCBvYmplY3QuaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpCiAgICAgfHwgaXNBbm9ueW1v
dXNSdWJ5SW5saW5lQmxvY2soJm9iamVjdCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRf
RU5BQkxFRAogCiBzdGF0aWMgaW5saW5lIFJlbmRlckJsb2NrKiBydWJ5QmVmb3JlQmxvY2soY29u
c3QgUmVuZGVyRWxlbWVudCogcnVieSkKIHsKQEAgLTM4Niw5ICszODYsNyBAQCBSZW5kZXJQdHI8
UmVuZGVyT2JqZWN0PiBSZW5kZXJUcmVlQnVpbGRlCiAgICAgLy8gSWYgdGhlIGNoaWxkJ3MgcGFy
ZW50IGlzICp0aGlzIChtdXN0IGJlIGEgcnVieSBydW4gb3IgZ2VuZXJhdGVkIGNvbnRlbnQgb3Ig
YW5vbnltb3VzIGJsb2NrKSwKICAgICAvLyBqdXN0IHVzZSB0aGUgbm9ybWFsIHJlbW92ZSBtZXRo
b2QuCiAgICAgaWYgKGNoaWxkLnBhcmVudCgpID09ICZwYXJlbnQpIHsKLSNpZm5kZWYgQVNTRVJU
X0RJU0FCTEVECiAgICAgICAgIEFTU0VSVChpc1J1YnlDaGlsZEZvck5vcm1hbFJlbW92YWwoY2hp
bGQpKTsKLSNlbmRpZgogICAgICAgICByZXR1cm4gbV9idWlsZGVyLmRldGFjaEZyb21SZW5kZXJF
bGVtZW50KHBhcmVudCwgY2hpbGQpOwogICAgIH0KICAgICAvLyBJZiB0aGUgY2hpbGQncyBwYXJl
bnQgaXMgYW4gYW5veW1vdXMgYmxvY2sgKG11c3QgYmUgZ2VuZXJhdGVkIDpiZWZvcmUvOmFmdGVy
IGNvbnRlbnQpCkBAIC00MTAsOSArNDA4LDcgQEAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gUmVu
ZGVyVHJlZUJ1aWxkZQogICAgIC8vIElmIHRoZSBjaGlsZCdzIHBhcmVudCBpcyAqdGhpcyAobXVz
dCBiZSBhIHJ1YnkgcnVuIG9yIGdlbmVyYXRlZCBjb250ZW50IG9yIGFub255bW91cyBibG9jayks
CiAgICAgLy8ganVzdCB1c2UgdGhlIG5vcm1hbCByZW1vdmUgbWV0aG9kLgogICAgIGlmIChjaGls
ZC5wYXJlbnQoKSA9PSAmcGFyZW50KSB7Ci0jaWZuZGVmIEFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICBBU1NFUlQoaXNSdWJ5Q2hpbGRGb3JOb3JtYWxSZW1vdmFsKGNoaWxkKSk7Ci0jZW5kaWYKICAg
ICAgICAgcmV0dXJuIG1fYnVpbGRlci5ibG9ja0J1aWxkZXIoKS5kZXRhY2gocGFyZW50LCBjaGls
ZCk7CiAgICAgfQogICAgIC8vIElmIHRoZSBjaGlsZCdzIHBhcmVudCBpcyBhbiBhbm95bW91cyBi
bG9jayAobXVzdCBiZSBnZW5lcmF0ZWQgOmJlZm9yZS86YWZ0ZXIgY29udGVudCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlUG9zaXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVl
UG9zaXRpb24uY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNyBAQCB2b2lkIFJlbmRlclRyZWVQb3NpdGlvbjo6Y29tcHV0ZU5leHRTaWJsCiB7CiAg
ICAgQVNTRVJUKCFub2RlLnJlbmRlcmVyKCkpOwogICAgIGlmIChtX2hhc1ZhbGlkTmV4dFNpYmxp
bmcpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
Y29uc3QgdW5zaWduZWQgb05TcXVhcmVkQXZvaWRhbmNlTGltaXQgPSAyMDsKICAgICAgICAgYm9v
bCBza2lwQXNzZXJ0ID0gbV9wYXJlbnQuaXNSZW5kZXJWaWV3KCkgfHwgKyttX2Fzc2VydGlvbkxp
bWl0Q291bnRlciA+IG9OU3F1YXJlZEF2b2lkYW5jZUxpbWl0OwogICAgICAgICBBU1NFUlQoc2tp
cEFzc2VydCB8fCBuZXh0U2libGluZ1JlbmRlcmVyKG5vZGUpID09IG1fbmV4dFNpYmxpbmcpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlUG9zaXRpb24uaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVQb3NpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyRWxlbWVudCYgbV9wYXJlbnQ7CiAgICAg
V2Vha1B0cjxSZW5kZXJPYmplY3Q+IG1fbmV4dFNpYmxpbmcgeyBudWxscHRyIH07CiAgICAgYm9v
bCBtX2hhc1ZhbGlkTmV4dFNpYmxpbmcgeyBmYWxzZSB9OwotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHVuc2lnbmVkIG1fYXNzZXJ0aW9uTGltaXRDb3VudGVy
IHsgMCB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9u
dENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09U
RkZvbnRDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTEg
KzEwMiwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgOiBtX2NvbnZlcnRlcihvdGhlci5tX2Nv
bnZlcnRlcikKICAgICAgICAgICAgICwgbV9iYXNlT2ZPZmZzZXQob3RoZXIubV9iYXNlT2ZPZmZz
ZXQpCiAgICAgICAgICAgICAsIG1fbG9jYXRpb24ob3RoZXIubV9sb2NhdGlvbikKLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgICwgbV9hY3RpdmUo
b3RoZXIubV9hY3RpdmUpCiAjZW5kaWYKICAgICAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICAgICAgb3RoZXIubV9hY3RpdmUgPSBmYWxzZTsK
ICNlbmRpZgogICAgICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHNpemVfdCBkZWx0YSA9IG1fY29udmVydGVyLm1fcmVzdWx0LnNpemUoKSAtIG1fYmFzZU9m
T2Zmc2V0OwogICAgICAgICAgICAgQVNTRVJUKGRlbHRhIDwgc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MTZfdD46Om1heCgpKTsKICAgICAgICAgICAgIG1fY29udmVydGVyLm92ZXJ3cml0ZTE2KG1f
bG9jYXRpb24sIGRlbHRhKTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgICAgIG1fYWN0aXZlID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgfQpAQCAt
MTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNWR1RvT1RGRm9udENvbnZlcnRlciYg
bV9jb252ZXJ0ZXI7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX2Jhc2VPZk9mZnNldDsKICAgICAg
ICAgY29uc3Qgc2l6ZV90IG1fbG9jYXRpb247Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgICAgIGJvb2wgbV9hY3RpdmUgPSB7IHRydWUgfTsKICNlbmRpZgog
ICAgIH07CkBAIC02MzcsNyArNjM3LDcgQEAgdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFw
cGVuZENGRlRhYgogICAgIGFwcGVuZDMyKDEgKyBzaXplT2ZUb3BJbmRleCk7IC8vIDEtaW5kZXgg
b2Zmc2V0IGp1c3QgcGFzdCBlbmQgb2YgRElDVCBkYXRhCiAKICAgICAvLyBESUNUIGluZm9ybWF0
aW9uCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgdW5zaWdu
ZWQgdG9wRGljdFN0YXJ0ID0gbV9yZXN1bHQuc2l6ZSgpOwogI2VuZGlmCiAgICAgbV9yZXN1bHQu
YXBwZW5kKG9wZXJhbmQzMkJpdCk7CkBAIC03MTcsMTMgKzcxNywxMyBAQCB2b2lkIFNWR1RvT1RG
Rm9udENvbnZlcnRlcjo6YXBwZW5kQ0ZGVGFiCiAKIEdseXBoIFNWR1RvT1RGRm9udENvbnZlcnRl
cjo6Zmlyc3RHbHlwaChjb25zdCBWZWN0b3I8R2x5cGgsIDE+JiB2LCBVQ2hhcjMyIGNvZGVwb2lu
dCkgY29uc3QKIHsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJMRUQKICAg
ICBVTlVTRURfUEFSQU0oY29kZXBvaW50KTsKICNlbmRpZgogICAgIEFTU0VSVCghdi5pc0VtcHR5
KCkpOwogICAgIGlmICh2LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byBjb2RlUG9pbnRzID0gU3Ry
aW5nVmlldyhtX2dseXBoc1t2WzBdXS5jb2RlcG9pbnRzKS5jb2RlUG9pbnRzKCk7CiAgICAgYXV0
byBjb2RlUG9pbnRzSXRlcmF0b3IgPSBjb2RlUG9pbnRzLmJlZ2luKCk7CiAgICAgQVNTRVJUKGNv
ZGVQb2ludHNJdGVyYXRvciAhPSBjb2RlUG9pbnRzLmVuZCgpKTsKQEAgLTExMDgsNyArMTEwOCw3
IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRLRVJOVGEKICAgICBhcHBlbmQx
NigwKTsgLy8gVmVyc2lvbgogICAgIGFwcGVuZDE2KDIpOyAvLyBOdW1iZXIgb2Ygc3VidGFibGVz
CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBhdXRvIHN1
YnRhYmxlc09mZnNldCA9IG1fcmVzdWx0LnNpemUoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDcgKzU3LDcgQEAgU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5zZm9y
bURpc3RhbgogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1
ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVg6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
I2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBGQUxMVEhS
T1VHSDsKICNlbmRpZgogICAgIGNhc2UgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1f
VU5LTk9XTjoKQEAgLTkyLDcgKzkyLDcgQEAgU1ZHVHJhbnNmb3JtRGlzdGFuY2UgU1ZHVHJhbnNm
b3JtRGlzdGFuYwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1W
YWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVg6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRfRU5BQkxFRAogICAgICAgICBGQUxM
VEhST1VHSDsKICNlbmRpZgogICAgIGNhc2UgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZP
Uk1fVU5LTk9XTjoKQEAgLTEyNSw3ICsxMjUsNyBAQCBTVkdUcmFuc2Zvcm1WYWx1ZSBTVkdUcmFu
c2Zvcm1EaXN0YW5jZTo6CiAgICAgc3dpdGNoIChmaXJzdC50eXBlKCkpIHsKICAgICBjYXNlIFNW
R1RyYW5zZm9ybVZhbHVlOjpTVkdfVFJBTlNGT1JNX01BVFJJWDoKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAg
ICAgICAgIEZBTExUSFJPVUdIOwogI2VuZGlmCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6
U1ZHX1RSQU5TRk9STV9VTktOT1dOOgpAQCAtMTY3LDcgKzE2Nyw3IEBAIFNWR1RyYW5zZm9ybVZh
bHVlIFNWR1RyYW5zZm9ybURpc3RhbmNlOjoKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNh
c2UgU1ZHVHJhbnNmb3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fTUFUUklYOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSNpZiBBU1NFUlRfRElTQUJMRUQKKyNpZiAhQVNTRVJUX0VOQUJM
RUQKICAgICAgICAgRkFMTFRIUk9VR0g7CiAjZW5kaWYKICAgICBjYXNlIFNWR1RyYW5zZm9ybVZh
bHVlOjpTVkdfVFJBTlNGT1JNX1VOS05PV046CkBAIC0yMTEsNyArMjExLDcgQEAgZmxvYXQgU1ZH
VHJhbnNmb3JtRGlzdGFuY2U6OmRpc3RhbmNlKCkgYwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAg
ICAgY2FzZSBTVkdUcmFuc2Zvcm1WYWx1ZTo6U1ZHX1RSQU5TRk9STV9NQVRSSVg6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2lmIEFTU0VSVF9ESVNBQkxFRAorI2lmICFBU1NFUlRf
RU5BQkxFRAogICAgICAgICBGQUxMVEhST1VHSDsKICNlbmRpZgogICAgIGNhc2UgU1ZHVHJhbnNm
b3JtVmFsdWU6OlNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDcgKzI1
NCw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb24KICAgICBpZiAo
IVNVQ0NFRURFRChocikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0jaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYXV0byBuYXRpdmVJbWFnZVNpemUgPSBu
YXRpdmVJbWFnZS0+R2V0UGl4ZWxTaXplKCk7CiAgICAgQVNTRVJUKG5hdGl2ZUltYWdlU2l6ZS5o
ZWlnaHQgPSByZWN0KCkuc2l6ZSgpLmhlaWdodCgpKTsKICAgICBBU1NFUlQobmF0aXZlSW1hZ2VT
aXplLndpZHRoID0gcmVjdCgpLnNpemUoKS53aWR0aCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQxLDcgKzI0MSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdz
V3JhcHBlcihQYWdlKiBwYWdlKQogICAgICAgICA6IG1faW50ZXJuYWxTZXR0aW5ncyhJbnRlcm5h
bFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQogICAgIHZpcnR1YWwgfkludGVybmFsU2V0dGlu
Z3NXcmFwcGVyKCkgeyBtX2ludGVybmFsU2V0dGluZ3MtPmhvc3REZXN0cm95ZWQoKTsgfQotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgaXNSZWZDb3Vu
dGVkV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogICAg
IEludGVybmFsU2V0dGluZ3MqIGludGVybmFsU2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybmFsU2V0dGluZ3MuZ2V0KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50T3JXb3JrZXJJZGVu
dGlmaWVyIG1fY29udGV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRl
cj4gbV9zY3JpcHRMb2FkZXI7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICBSZWY8VGhyZWFkPiBtX2NyZWF0aW9uVGhyZWFkIHsgVGhyZWFkOjpjdXJyZW50
KCkgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgflBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KCkKICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKICAgICAg
ICAgQVNTRVJUKHBhaW50RGVmaW5pdGlvbk1hcCgpLmlzRW1wdHkoKSk7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFN0ZXAuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhTdGVwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDcgKzE0NCw3IEBA
IHZvaWQgU3RlcDo6ZXZhbHVhdGUoTm9kZSYgY29udGV4dCwgTm9kZVMKICAgICB9CiB9CiAKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBpbmxpbmUgTm9k
ZTo6Tm9kZVR5cGUgcHJpbWFyeU5vZGVUeXBlKFN0ZXA6OkF4aXMgYXhpcykKIHsKICAgICBzd2l0
Y2ggKGF4aXMpIHsKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgaW5saW5lIE5vZGU6Ok5vZGVU
eXBlIHByaW1hcnlOb2RlCiAgICAgICAgICAgICByZXR1cm4gTm9kZTo6RUxFTUVOVF9OT0RFOwog
ICAgIH0KIH0KLSNlbmRpZgorI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKIC8vIEV2YWx1YXRl
IE5vZGVUZXN0IHdpdGhvdXQgY29uc2lkZXJpbmcgbWVyZ2VkIHByZWRpY2F0ZXMuCiBpbmxpbmUg
Ym9vbCBub2RlTWF0Y2hlc0Jhc2ljVGVzdChOb2RlJiBub2RlLCBTdGVwOjpBeGlzIGF4aXMsIGNv
bnN0IFN0ZXA6Ok5vZGVUZXN0JiBub2RlVGVzdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDU1IEBACisyMDIwLTAxLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBDb252ZXJ0IEFTU0VSVF9ESVNBQkxFRCB0byBBU1NFUlRfRU5BQkxFRCwgYW5kIGZpeCBz
b21lIHRlc3RzIG9mIE5ERUJVRyB0aGF0IHNob3VsZCBhY3R1YWxseSB0ZXN0IGZvciBBU1NFUlRf
RU5BQkxFRC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpT
dG9yYWdlOjpzZXRDYXBhY2l0eSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHRvTlNVUkxTZXNzaW9uUmVzcG9uc2VEaXNw
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtT
ZXNzaW9uQ29jb2EpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6d2FpdEZvck1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXIuaDoKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY2VpdmVy
Ojp3aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2VpdmVyTWFwKToKKyAgICAgICAgKElQQzo6TWVzc2Fn
ZVJlY2VpdmVyOjp3aWxsQmVSZW1vdmVkRnJvbU1lc3NhZ2VSZWNlaXZlck1hcCk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbToKKyAgICAgICAgKElQQzo6
cmVhZEZyb21NYWNoUG9ydCk6CisgICAgICAgICogUGxhdGZvcm0vbWFjL01hY2hVdGlsaXRpZXMu
Y3BwOgorICAgICAgICAoc2V0TWFjaEV4Y2VwdGlvblBvcnQpOgorICAgICAgICAqIFNoYXJlZC9B
UEkvQVBJQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkNsaWVudDo6Q2xpZW50KToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgICogU2hh
cmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EuaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVk
U3RyaW5nSGFzaFRhYmxlUmVhZE9ubHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9CYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBk
YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VMb2FkU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUxvYWRTdGF0ZTo6VHJh
bnNhY3Rpb246OlRva2VuOjpUb2tlbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06Ok5ldHNjYXBlUGx1Z2luU3RyZWFt
KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJlYW06Om5vdGlmeUFuZERlc3Ry
b3lTdHJlYW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuTW9kYWwpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNoZWNrRG9jdW1lbnRzQ2Fw
dHVyZVN0YXRlQ29uc2lzdGVuY3kpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNz
TmFtZSk6CisKIDIwMjAtMDEtMDUgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01lZGlhIGluIEdQVSBwcm9jZXNzXSBBZGQgcmVtb3RlIE1JTUUgdHlw
ZSBjYWNoZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6aW52YWxpZGF0ZUFuZENhbmNlbAogICAgIGlmIChtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
aW52YWxpZGF0ZUFuZENhbmNlbCgpOwogI2VuZGlmCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgbV9pc0ludmFsaWRhdGVkID0gdHJ1ZTsKICNlbmRpZgogfQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgUHJlZmV0Y2hDYWNoZSBtX3ByZWZldGNoQ2FjaGU7CiAKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1faXNJbnZhbGlkYXRlZCB7IGZhbHNl
IH07CiAjZW5kaWYKICAgICBSZWZQdHI8TmV0d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTg3LDcgKzk4Nyw3IEBAIHZvaWQgU3RvcmFnZTo6c2V0Q2FwYWNpdHkoc2l6ZV90
IGNhcGFjaXQKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgY29uc3Qgc2l6ZV90IGFzc3VtZWRB
dmVyYWdlUmVjb3JkU2l6ZSA9IDUwIDw8IDEwOwogICAgIHNpemVfdCBtYXhpbXVtUmVjb3JkQ291
bnQgPSBjYXBhY2l0eSAvIGFzc3VtZWRBdmVyYWdlUmVjb3JkU2l6ZTsKICAgICAvLyB+MTAgYml0
cyBwZXIgZWxlbWVudCBhcmUgcmVxdWlyZWQgZm9yIDwxJSBmYWxzZSBwb3NpdGl2ZSByYXRlLgpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25SZXNwb25zZURpc3Bvc2l0
aW9uIHQKICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb246OlN0b3BBbGxMb2FkczoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0j
aWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9FTkFCTEVECiAgICAgICAgIEZBTExUSFJP
VUdIOwogI2VuZGlmCiAgICAgY2FzZSBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZToKQEAg
LTkyNiw3ICs5MjYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Np
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VS
VF9FTkFCTEVECiBzdGF0aWMgYm9vbCBzZXNzaW9uc0NyZWF0ZWQgPSBmYWxzZTsKICNlbmRpZgog
CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lv
bkNvY29hCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFT
U0VSVF9FTkFCTEVECiAgICAgc2Vzc2lvbnNDcmVhdGVkID0gdHJ1ZTsKICNlbmRpZgogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjU0
MDQ4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyMCw3ICs1MjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4gQ29u
bmVjdGlvbjo6d2FpCiAKICAgICAvLyBEb24ndCBldmVuIHN0YXJ0IHdhaXRpbmcgaWYgd2UgaGF2
ZSBJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMgYW5kIHRoZXJlJ3MgYSBzeW5j
IG1lc3NhZ2UgYWxyZWFkeSBpbiB0aGUgcXVldWUuCiAgICAgaWYgKGhhc0luY29taW5nU3luY2hy
b25vdXNNZXNzYWdlICYmIHdhaXRGb3JPcHRpb25zLmNvbnRhaW5zKFdhaXRGb3JPcHRpb246Oklu
dGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpIHsKLSNpZiAhQVNTRVJUX0RJU0FC
TEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2sobV93YWl0Rm9yTWVzc2FnZU11dGV4KTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBo
YXZpbmcgbXVsdGlwbGUgY2xpZW50cyB3YWl0aW5nIGZvciBtZXNzYWdlcy4KICAgICAgICAgQVNT
RVJUKCFtX3dhaXRpbmdGb3JNZXNzYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNlaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNlaXZlci5oCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjZWl2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsQmVBZGRlZFRvTWVzc2FnZVJlY2Vp
dmVyTWFwKCkKICAgICB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwQ291bnQrKzsKICNlbmRpZgogICAgIH0KQEAg
LTYzLDEyICs2MywxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21NZXNz
YWdlUmVjZWl2ZXJNYXAoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fbWVzc2FnZVJlY2VpdmVy
TWFwQ291bnQpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAg
ICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcENvdW50LS07CiAjZW5kaWYKICAgICB9CiAKLSNpZiAh
QVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICB1bnNpZ25lZCBtX21lc3Nh
Z2VSZWNlaXZlck1hcENvdW50IHsgMCB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0Nvbm5lY3Rpb25Db2NvYS5tbQkocmV2aXNp
b24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvQ29ubmVjdGlv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgc3RhdGljIG1hY2hf
bXNnX2hlYWRlcl90KiByZWFkRnJvbU1hY2hQbwogICAgIH0KIAogICAgIGlmIChrciAhPSBNQUNI
X01TR19TVUNDRVNTKSB7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVE
CiAgICAgICAgIFdlYktpdDo6c2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3Jt
YXRpb24oKF9fYnJpZGdlIENGU3RyaW5nUmVmKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
VW5oYW5kbGVkIGVycm9yIGNvZGUgJXggZnJvbSBtYWNoX21zZywgcmVjZWl2ZSBwb3J0IGlzICV4
Iiwga3IsIG1hY2hQb3J0XSk7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9NYWNoVXRpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL21hYy9NYWNoVXRpbGl0aWVzLmNwcAko
cmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9ybS9tYWMvTWFjaFV0aWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBzZXRNYWNoRXhj
ZXB0aW9uUG9ydChtYWNoX3BvcnRfdCBleAogICAgIEFTU0VSVChNQUNIX1BPUlRfVkFMSUQoZXhj
ZXB0aW9uUG9ydCkpOwogCiAgICAgLy8gQXNzZXJ0IHRoYXQgd2UgZG9udCB0cnkgdG8gY2FsbCBz
ZXRNYWNoRXhjZXB0aW9uUG9ydCBtb3JlIHRoYW4gb25jZSBwZXIgcHJvY2Vzcy4KLSNpZiAhQVNT
RVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBzdGF0aWMgbWFjaF9wb3J0X3Qg
dGFza0V4Y2VwdGlvblBvcnQgPSBNQUNIX1BPUlRfTlVMTDsKICAgICBBU1NFUlQodGFza0V4Y2Vw
dGlvblBvcnQgPT0gTUFDSF9QT1JUX05VTEwpOwogICAgIHRhc2tFeGNlcHRpb25Qb3J0ID0gZXhj
ZXB0aW9uUG9ydDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hU
YWJsZVJlYWRPbmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWRTdHJpbmdIYXNoVGFibGVSZWFkT25seS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlZFN0cmluZ0hhc2hUYWJsZVJlYWRPbmx5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJM
RUQKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVkIHYpCiB7CiAgICAgLy8g
VGFrZW4gZnJvbSBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnZvc2UvYy1zdHVmZi9iaXRoYWNrcy5o
dG1sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSUNsaWVudC5oCShyZXZpc2lvbiAyNTQw
NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDcgKzUxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xpZW50SW50ZXJmYWNlPiBj
bGFzcwogcHVibGljOgogICAgIENsaWVudCgpCiAgICAgewotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBhdXRvIGludGVyZmFjZVNpemVzID0gSW50ZXJm
YWNlU2l6ZXM8Q2xpZW50VmVyc2lvbnM+OjpzaXplcygpOwogICAgICAgICBBU1NFUlQoc3RkOjpp
c19zb3J0ZWQoaW50ZXJmYWNlU2l6ZXMuYmVnaW4oKSwgaW50ZXJmYWNlU2l6ZXMuZW5kKCkpKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLUmVtb3RlT2JqZWN0Q29kZXIubW0JKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAIC0gKGlkKWluaXQKICAgICByZXR1cm4gc2VsZjsKIH0KIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgQVNTRVJUKF9jdXJyZW50RGljdGlvbmFyeSA9PSBfcm9vdERpY3Rpb25hcnkpOwpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1l
bnRDb2RlcnNDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gSXNPYmpDT2IKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lID0gSXNPYmpDT2JqZWN0PFQ+PiBPcHRpb25hbDxSZXRhaW5QdHI8VD4+IGRlY29kZShE
ZWNvZGVyJiwgTlNBcnJheTxDbGFzcz4gKmFsbG93ZWRDbGFzc2VzID0gQFsgW1QgY2xhc3NdIF0p
OwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBJc09iakNPYmplY3Q8VD4+IE9wdGlv
bmFsPFJldGFpblB0cjxUPj4gZGVjb2RlKERlY29kZXImLCBDbGFzcyBhbGxvd2VkQ2xhc3MpOwog
Ci0jaWZuZGVmIE5ERUJVRworI2lmIEFTU0VSVF9FTkFCTEVECiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc09iamVjdENsYXNzQWxsb3dlZChpZCBvYmplY3QsIE5TQXJyYXk8Q2xhc3M+ICphbGxvd2Vk
Q2xhc3NlcykKIHsKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JqZWN0
Q2xhc3NBbGxvd2VkKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotI2VuZGlmCisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWU+CiB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBUICpvYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbgogICAgIGlmICgh
Yml0bWFwKQogICAgICAgICByZXR1cm47CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBJbnRTaXplIHVwZGF0ZVNpemUgPSB1cGRhdGVJbmZvLnVwZGF0ZVJl
Y3RCb3VuZHMuc2l6ZSgpOwogICAgIHVwZGF0ZVNpemUuc2NhbGUobV9kZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgQVNTRVJUKGJpdG1hcC0+c2l6ZSgpID09IHVwZGF0ZVNpemUpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNrLmgJKHJldmlzaW9uIDI1NDA0OCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAgIE9wdGlvbmFsPENhbGxiYWNr
RnVuY3Rpb24+IG1fY2FsbGJhY2s7CiAKLSNpZm5kZWYgTkRFQlVHCisjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBSZWY8VGhyZWFkPiBtX29yaWdpblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07
CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0ZS5o
CShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlTG9hZFN0
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDE0ICs5NywxNCBAQCBwdWJsaWM6CiAgICAgICAg
IGNsYXNzIFRva2VuIHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgVG9rZW4oVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5B
QkxFRAogICAgICAgICAgICAgICAgIDogbV9wYWdlTG9hZFN0YXRlKCp0cmFuc2FjdGlvbi5tX3Bh
Z2VMb2FkU3RhdGUpCiAjZW5kaWYKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB0cmFu
c2FjdGlvbi5tX3BhZ2VMb2FkU3RhdGUtPm1fbWF5SGF2ZVVuY29tbWl0dGVkQ2hhbmdlcyA9IHRy
dWU7CiAgICAgICAgICAgICB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VO
QUJMRUQKICAgICAgICAgICAgIFBhZ2VMb2FkU3RhdGUmIG1fcGFnZUxvYWRTdGF0ZTsKICNlbmRp
ZgogICAgICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNyArNTE0LDcgQEAgV2ViUGFnZVByb3h5
Ojp+V2ViUGFnZVByb3h5KCkKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
ZXN0cnVjdG9yOiIpOwogCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+d2ViUGFnZShtX2lkZW50aWZp
ZXIpICE9IHRoaXMpOwotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIGZvciAoV2ViUGFnZVByb3h5KiBwYWdlIDogbV9wcm9jZXNzLT5wYWdlcygpKQogICAgICAg
ICBBU1NFUlQocGFnZSAhPSB0aGlzKTsKICNlbmRpZgpAQCAtNzM2OCw3ICs3MzY4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGVBZnRlclByb2NlcwogCiAgICAgUGFnZUNsaWVudFBy
b3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIC8vIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgcmVzZXRT
dGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZCgpIGlzIGNhbGxlZCBldmVuIHRob3VnaCB0aGUgcHJvY2Vz
cyBpcyBsYXVuY2hpbmcuCiAgICAgaWYgKHRlcm1pbmF0aW9uUmVhc29uICE9IFByb2Nlc3NUZXJt
aW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApCiAgICAgICAgIEFTU0VSVChtX3Byb2Nlc3Mt
PnN0YXRlKCkgPT0gV2ViUHJvY2Vzc1Byb3h5OjpTdGF0ZTo6TGF1bmNoaW5nIHx8IG1fcHJvY2Vz
cy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpUZXJtaW5hdGVkKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1By
b2Nlc3NMYXVuY2hlck1hYy5tbQkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNz
KCkKICAgICAgICAgaWYgKCFwcm9jZXNzTGF1bmNoZXItPmlzTGF1bmNoaW5nKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQK
ICAgICAgICAgbWFjaF9wb3J0X3VyZWZzX3Qgc2VuZFJpZ2h0Q291bnQgPSAwOwogICAgICAgICBt
YWNoX3BvcnRfZ2V0X3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgTUFDSF9Q
T1JUX1JJR0hUX1NFTkQsICZzZW5kUmlnaHRDb3VudCk7CiAgICAgICAgIEFTU0VSVChzZW5kUmln
aHRDb3VudCA+PSAxKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6
bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBBU1NFUlQoeHBjX2dldF90eXBlKHJlcGx5KSA9
PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKICAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKHhwY19k
aWN0aW9uYXJ5X2dldF9zdHJpbmcocmVwbHksICJtZXNzYWdlLW5hbWUiKSwgInByb2Nlc3MtZmlu
aXNoZWQtbGF1bmNoaW5nIikpOwogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgICAgICAgICBtYWNoX3BvcnRfdXJlZnNfdCBzZW5kUmlnaHRDb3VudCA9IDA7
CiAgICAgICAgICAgICBtYWNoX3BvcnRfZ2V0X3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVu
aW5nUG9ydCwgTUFDSF9QT1JUX1JJR0hUX1NFTkQsICZzZW5kUmlnaHRDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlQoc2VuZFJpZ2h0Q291bnQgPj0gMSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTIsNyArMTkx
Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z3JhbnRVc2VyTWVkaWFEZXZpY2VTYW4KIAogc3RhdGlj
IGlubGluZSB2b2lkIGNoZWNrRG9jdW1lbnRzQ2FwdHVyZVN0YXRlQ29uc2lzdGVuY3koY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGV4dGVuc2lvbklEcykKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisj
aWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGlzQ2FwdHVyaW5nQXVkaW8gPSBXVEY6OmFueU9m
KERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS52YWx1ZXMoKSwgW10oYXV0byogZG9jdW1lbnQp
IHsKICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5tZWRpYVN0YXRlKCkgJiBNZWRpYVByb2R1Y2Vy
OjpBdWRpb0NhcHR1cmVNYXNrOwogICAgIH0pOwpAQCAtMTkyNCw3ICsxOTI0LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGNoZWNrRG9jdW1lbnRzQ2FwdHVyZQogICAgICAgICBBU1NFUlQoZXh0ZW5z
aW9uSURzLmZpbmRNYXRjaGluZyhbXShhdXRvJiBpZCkgeyByZXR1cm4gaWQuY29udGFpbnMoIm1p
Y3JvcGhvbmUiKTsgfSkgPT0gbm90Rm91bmQpOwogICAgIGlmIChpc0NhcHR1cmluZ1ZpZGVvKQog
ICAgICAgICBBU1NFUlQoZXh0ZW5zaW9uSURzLmZpbmRNYXRjaGluZyhbXShhdXRvJiBpZCkgeyBy
ZXR1cm4gaWQuY29udGFpbnMoImNhbWVyYSIpOyB9KSA9PSBub3RGb3VuZCk7Ci0jZW5kaWYKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnJldm9rZVVzZXJN
ZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNp
b25JRHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNywxMSArMTM3LDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb24KIAogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gcG9saWN5RGVjaXNpb25D
b21wbGV0aW9uSGFuZGxlcjsKICAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAg
ICAgICAgbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UgPSB0cnVlOwogI2VuZGlmCiAgICAg
ICAgIHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAgICAgICAgIG1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNl
ID0gZmFsc2U7CiAjZW5kaWYKICAgICAgICAgICAgIC8vIElmIG1fY29yZUxvYWRlciBiZWNvbWVz
IG51bGwgYXMgYSByZXN1bHQgb2YgdGhlIGRpZFJlY2VpdmVSZXNwb25zZSBjYWxsYmFjaywgd2Ug
Y2FuJ3QgdXNlIHRoZSBzZW5kIGZ1bmN0aW9uKCkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI1
NDA0OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIFdl
YlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlciBtX2ludGVyY2VwdENvbnRyb2xsZXI7CiAgICAg
c2l6ZV90IG1fbnVtQnl0ZXNSZWNlaXZlZCB7IDAgfTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9u
c2UgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw3ICs0Niw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0
cmUKICAgICAsIG1fb2Zmc2V0KDApCiAgICAgLCBtX2ZpbGVIYW5kbGUoRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAsIG1faXNTdGFydGVkKGZhbHNlKQotI2lmICFB
U1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICwgbV91cmxOb3RpZnlIYXNC
ZWVuQ2FsbGVkKGZhbHNlKQogI2VuZGlmICAgIAogICAgICwgbV9kZWxpdmVyeURhdGFUaW1lcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFU
b1BsdWdpbikKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpu
b3RpZnlBbmREZXN0CiAgICAgaWYgKG1fc2VuZE5vdGlmaWNhdGlvbikgewogICAgICAgICBtX3Bs
dWdpbi0+TlBQX1VSTE5vdGlmeShtX3JlcXVlc3RVUkxTdHJpbmcudXRmOCgpLmRhdGEoKSwgcmVh
c29uLCBtX25vdGlmaWNhdGlvbkRhdGEpOwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNp
ZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBtX3VybE5vdGlmeUhhc0JlZW5DYWxsZWQgPSB0cnVl
OwogI2VuZGlmICAgIAogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyAr
OTQsNyBAQCBwcml2YXRlOgogICAgIC8vIFdoZXRoZXIgTlBQX05ld1N0cmVhbSBoYXMgc3VjY2Vz
c2Z1bGx5IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7CiAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1fdXJsTm90aWZ5SGFzQmVl
bkNhbGxlZDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMTcsNyArNTAx
Nyw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuTW9kYWwoKQogCiAgICAgbV9pc1J1bm5pbmdNb2RhbCA9
IHRydWU7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5Nb2RhbCgpKTsKLSNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZWY8V2ViUGFnZT4g
cHJvdGVjdG9yKCp0aGlzKTsKICNlbmRpZgogICAgIFJ1bkxvb3A6OnJ1bigpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShy
ZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZSgpCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3MsICJ1cGRhdGVQcm9jZXNzTmFtZTogRmFpbGVkIHRvIHNldCB0
aGUgZGlzcGxheSBuYW1lIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIGVycm9yIGNvZGU6ICVs
ZCIsIHN0YXRpY19jYXN0PGxvbmc+KGVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAgICAg
Ly8gSXQgaXMgcG9zc2libGUgZm9yIF9MU1NldEFwcGxpY2F0aW9uSW5mb3JtYXRpb25JdGVtKCkg
dG8gcmV0dXJuIDAgYW5kIHlldCBmYWlsIHRvIHNldCB0aGUgZGlzcGxheSBuYW1lIHNvIHdlIG1h
a2Ugc3VyZSB0aGUgZGlzcGxheSBuYW1lIGhhcyBhY3R1YWxseSBiZWVuIHNldC4KICAgICAgICAg
U3RyaW5nIGFjdHVhbEFwcGxpY2F0aW9uTmFtZSA9IGFkb3B0Q0YoKENGU3RyaW5nUmVmKV9MU0Nv
cHlBcHBsaWNhdGlvbkluZm9ybWF0aW9uSXRlbShrTFNEZWZhdWx0U2Vzc2lvbklELCBfTFNHZXRD
dXJyZW50QXBwbGljYXRpb25BU04oKSwgX2tMU0Rpc3BsYXlOYW1lS2V5KSkuZ2V0KCk7CiAgICAg
ICAgIEFTU0VSVCghYWN0dWFsQXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMS0wNiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBBU1NFUlRfRElT
QUJMRUQgdG8gQVNTRVJUX0VOQUJMRUQsIGFuZCBmaXggc29tZSB0ZXN0cyBvZiBOREVCVUcgdGhh
dCBzaG91bGQgYWN0dWFsbHkgdGVzdCBmb3IgQVNTRVJUX0VOQUJMRUQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NzYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYUltcGw6OmNsb3NlKToKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oOgorCiAyMDIwLTAxLTAzICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzb21lIHNoYXJlZCBzY2hl
bWVzIHRvIHRoZSBXZWJLaXQueGN3b3Jrc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCShyZXZpc2lvbiAyNTQwNDgpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsOSArNTAsNiBAQCBpbmxpbmUgU3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJl
YUltcGwoCiAgICAgLCBtX3NlY3VyaXR5T3JpZ2luKG9yaWdpbikKICAgICAsIG1fc3RvcmFnZU1h
cChTdG9yYWdlTWFwOjpjcmVhdGUocXVvdGEpKQogICAgICwgbV9zdG9yYWdlU3luY01hbmFnZXIo
V1RGTW92ZShzeW5jTWFuYWdlcikpCi0jaWZuZGVmIE5ERUJVRwotICAgICwgbV9pc1NodXRkb3du
KGZhbHNlKQotI2VuZGlmCiAgICAgLCBtX2FjY2Vzc0NvdW50KDApCiAgICAgLCBtX2Nsb3NlRGF0
YWJhc2VUaW1lcigqdGhpcywgJlN0b3JhZ2VBcmVhSW1wbDo6Y2xvc2VEYXRhYmFzZVRpbWVyRmly
ZWQpCiB7CkBAIC04Nyw3ICs4NCw3IEBAIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBs
KGNvbnN0IFMKICAgICAsIG1fc2VjdXJpdHlPcmlnaW4oYXJlYS5tX3NlY3VyaXR5T3JpZ2luKQog
ICAgICwgbV9zdG9yYWdlTWFwKGFyZWEubV9zdG9yYWdlTWFwKQogICAgICwgbV9zdG9yYWdlU3lu
Y01hbmFnZXIoYXJlYS5tX3N0b3JhZ2VTeW5jTWFuYWdlcikKLSNpZm5kZWYgTkRFQlVHCisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICAsIG1faXNTaHV0ZG93bihhcmVhLm1faXNTaHV0ZG93bikKICNl
bmRpZgogICAgICwgbV9hY2Nlc3NDb3VudCgwKQpAQCAtMjA2LDcgKzIwMyw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWFJbXBsOjpjbG9zZSgpCiAgICAgaWYgKG1fc3RvcmFnZUFyZWFTeW5jKQogICAgICAg
ICBtX3N0b3JhZ2VBcmVhU3luYy0+c2NoZWR1bGVGaW5hbFN5bmMoKTsKIAotI2lmbmRlZiBOREVC
VUcKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faXNTaHV0ZG93biA9IHRydWU7CiAjZW5kaWYK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBs
LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlQXJlYUltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsOCArOTAsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYVN5bmM+IG1fc3RvcmFnZUFyZWFTeW5jOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpTdG9yYWdlU3luY01hbmFnZXI+IG1fc3RvcmFnZVN5bmNNYW5hZ2VyOwogCi0j
aWZuZGVmIE5ERUJVRwotICAgIGJvb2wgbV9pc1NodXRkb3duOworI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgYm9vbCBtX2lzU2h1dGRvd24geyBmYWxzZSB9OwogI2VuZGlmCiAgICAgdW5zaWduZWQg
bV9hY2Nlc3NDb3VudDsKICAgICBXZWJDb3JlOjpUaW1lciBtX2Nsb3NlRGF0YWJhc2VUaW1lcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE0IEBACisyMDIwLTAxLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBDb252ZXJ0IEFTU0VSVF9ESVNBQkxFRCB0byBBU1NFUlRfRU5BQkxFRCwgYW5kIGZpeCBz
b21lIHRlc3RzIG9mIE5ERUJVRyB0aGF0IHNob3VsZCBhY3R1YWxseSB0ZXN0IGZvciBBU1NFUlRf
RU5BQkxFRC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSGlzdG9yeS9XZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSBy
ZW1vdmVJdGVtRm9yVVJMU3RyaW5nOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06
CisKIDIwMjAtMDEtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGEgc291Y2Ugb2YgV2ViS2l0MSB0ZXN0IGZsYWtpbmVzcwpJbmRleDogU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQkocmV2aXNpb24g
MjU0MDQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTQsNyArMjU0LDcgQEAgLSAoQk9PTClyZW1vdmVJdGVtRm9y
VVJMU3RyaW5nOihOU1N0cmluZwogCiAgICAgW19lbnRyaWVzQnlVUkwgcmVtb3ZlT2JqZWN0Rm9y
S2V5OlVSTFN0cmluZ107CiAgICAgCi0jaWYgQVNTRVJUX0RJU0FCTEVECisjaWYgIUFTU0VSVF9F
TkFCTEVECiAgICAgW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOmVudHJ5XTsKICNlbHNl
CiAgICAgQk9PTCBpdGVtV2FzSW5EYXRlQ2FjaGVzID0gW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRl
Q2FjaGVzOmVudHJ5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUwOSw3IEBAIC0g
KHZvaWQpX2NsZWFyU2VsZWN0aW9uCiAgICAgICAgIFtkb2N1bWVudFZpZXcgZGVzZWxlY3RBbGxd
OwogfQogCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAtIChCT09M
KV9hdE1vc3RPbmVGcmFtZUhhc1NlbGVjdGlvbgogewogICAgIC8vIEZJWE1FOiA0MTg2MDUwIGlz
IG9uZSBrbm93biBjYXNlIHRoYXQgbWFrZXMgdGhpcyBkZWJ1ZyBjaGVjayBmYWlsLgpAQCAtNTI0
LDcgKzUyNCw3IEBAIC0gKEJPT0wpX2F0TW9zdE9uZUZyYW1lSGFzU2VsZWN0aW9uCiAgICAgfQog
ICAgIHJldHVybiBZRVM7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCiAt
IChXZWJGcmFtZSAqKV9maW5kRnJhbWVXaXRoU2VsZWN0aW9uCiB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQwNDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wMS0w
NiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBBU1NF
UlRfRElTQUJMRUQgdG8gQVNTRVJUX0VOQUJMRUQsIGFuZCBmaXggc29tZSB0ZXN0cyBvZiBOREVC
VUcgdGhhdCBzaG91bGQgYWN0dWFsbHkgdGVzdCBmb3IgQVNTRVJUX0VOQUJMRUQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU3NzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFF1YXJ0ekNv
cmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHA6CisgICAgICAgIChXS1FDQTo6Q0FEM0RSZW5k
ZXJlcjo6c3dhcENoYWluKToKKyAgICAgICAgKFdLUUNBOjpDQUQzRFJlbmRlcmVyOjppbml0aWFs
aXplKToKKyAgICAgICAgKiBXZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIu
aDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OlJlbGVhc2UpOgor
ICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxOS0xMi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgdG8gc2ltcGxpZnkgYnJvYWRjYXN0aW5nIHRv
IGFsbCBtZWRpYSBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJ
KHJldmlzaW9uIDI1NDA0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTQzLDcgKzI5NDMsNyBAQCBVTE9ORyBXZWJWaWV3OjpSZWxl
YXNlKCkKIAogICAgIFVMT05HIG5ld1JlZiA9IC0tbV9yZWZDb3VudDsKICAgICBpZiAoIW5ld1Jl
ZikgewotI2lmICFBU1NFUlRfRElTQUJMRUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgICAgICBt
X2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCiAgICAgICAgIGRlbGV0ZSh0aGlzKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgJKHJldmlzaW9uIDI1NDA0OCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNjE3LDcg
KzYxNyw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgVUxPTkcgbV9yZWZDb3VudCB7IDAg
fTsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1f
ZGVsZXRpb25IYXNCZWd1biB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBIV05EIG1faG9zdFdpbmRv
dyB7IG51bGxwdHIgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFF1YXJ0
ekNvcmVBZGRpdGlvbnMvQ0FEM0RSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNw
cAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0UXVh
cnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDcgKzE0Miw3IEBAIENDb21QdHI8SURpcmVjdDNEU3dhcENoYWluOT4gQ0FEM0RSZW5kZXIKICAg
ICBpZiAodXNlRGVmYXVsdFN3YXBDaGFpbikgewogICAgICAgICBDQ29tUHRyPElEaXJlY3QzRFN3
YXBDaGFpbjk+IGRlZmF1bHRTd2FwQ2hhaW47CiAgICAgICAgIGlmIChTVUNDRUVERUQobV9kM2RE
ZXZpY2UtPkdldFN3YXBDaGFpbigwLCAmZGVmYXVsdFN3YXBDaGFpbikpKSB7Ci0jaWYgIUFTU0VS
VF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBq
dXN0IGluaXRpYWxpemVkIG9yIHJlc2V0IHRoZSBkZXZpY2UsIGl0cyBkZWZhdWx0IHN3YXAgY2hh
aW4gc2hvdWxkIGJlCiAgICAgICAgICAgICAvLyBhc3NvY2lhdGVkIHdpdGggYW5kIHNpemVkIHRv
IG1hdGNoIHRoaXMgd2luZG93LgogICAgICAgICAgICAgRDNEUFJFU0VOVF9QQVJBTUVURVJTIHBh
cmFtZXRlcnM7CkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIGJvb2wgaGFyZHdhcmVDYXBhYmls
aXRpZXNJbmRpY2F0ZQogCiBib29sIENBRDNEUmVuZGVyZXI6OmluaXRpYWxpemUoQ1dpbmRvdyB3
aW5kb3csIGNvbnN0IENHU2l6ZSYgc2l6ZSkKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECisjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBpZiAoIW1fZGV2aWNlVGhyZWFkSUQpCiAgICAgICAgIG1fZGV2
aWNlVGhyZWFkSUQgPSA6OkdldEN1cnJlbnRUaHJlYWRJZCgpOwogICAgIC8vIE1TRE4gc2F5cyB0
aGF0IElEaXJlY3QzRDk6OkNyZWF0ZURldmljZSBtdXN0ICJiZSBjYWxsZWQgZnJvbSB0aGUgc2Ft
ZSB0aHJlYWQgdGhhdCBoYW5kbGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVyZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRRdWFydHpDb3JlQWRkaXRpb25zL0NBRDNEUmVuZGVy
ZXIuaAkocmV2aXNpb24gMjU0MDQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
UXVhcnR6Q29yZUFkZGl0aW9ucy9DQUQzRFJlbmRlcmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw3ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIENDb21QdHI8SURpcmVjdDNERGV2aWNlOT4gbV9k
M2REZXZpY2U7CiAgICAgQ0FSZW5kZXJPR0xDb250ZXh0KiBtX3JlbmRlck9HTENvbnRleHQgeyBu
dWxscHRyIH07CiAgICAgQ0NvbVB0cjxJRGlyZWN0M0RQaXhlbFNoYWRlcjk+IG1fcGl4ZWxTaGFk
ZXI7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgRFdPUkQg
bV9kZXZpY2VUaHJlYWRJRCB7IDAgfTsKICNlbmRpZgogICAgIGJvb2wgbV9pbml0aWFsaXplZCB7
IGZhbHNlIH07CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQwNDgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgQ29udmVydCBBU1NFUlRfRElTQUJMRUQgdG8gQVNTRVJUX0VOQUJM
RUQsIGFuZCBmaXggc29tZSB0ZXN0cyBvZiBOREVCVUcgdGhhdCBzaG91bGQgYWN0dWFsbHkgdGVz
dCBmb3IgQVNTRVJUX0VOQUJMRUQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU3NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tOgorICAg
ICAgICAoLVtPYmpDQ29udHJvbGxlciBhY2Nlc3NTdG9yZWRXZWJTY3JpcHRPYmplY3RdKToKKwog
MjAyMC0wMS0wNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRnVy
dGhlciBzaW1wbGlmeSBTdHJpbmdCdWlsZGVyIHVzYWdlIGJ5IHN0YW5kYXJkaXppbmcgaGV4IGZv
cm1hdGluZyB0byBhIHNpbmdsZSBoZXgoKSBmdW5jdGlvbgpJbmRleDogVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL09iakNDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL09iakNDb250cm9sbGVyLm0JKHJldmlzaW9uIDI1NDA0OCkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9PYmpDQ29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
NyArMjQ1LDcgQEAgLSAoQk9PTCl0ZXN0V3JhcHBlclJvdW5kVHJpcHBpbmc6KFdlYlNjcgogCiAt
ICh2b2lkKWFjY2Vzc1N0b3JlZFdlYlNjcmlwdE9iamVjdAogewotI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNpZiBBU1NFUlRfRU5BQkxFRAogICAgIEJPT0wgaXNXaW5kb3dPYmplY3QgPSBbc3RvcmVk
V2ViU2NyaXB0T2JqZWN0IGlzS2luZE9mQ2xhc3M6W0RPTUFic3RyYWN0VmlldyBjbGFzc11dOwog
ICAgIEpTT2JqZWN0UmVmIGpzT2JqZWN0ID0gW3N0b3JlZFdlYlNjcmlwdE9iamVjdCBKU09iamVj
dF07CiAgICAgQVNTRVJUKChqc09iamVjdCAmJiBpc1dpbmRvd09iamVjdCkgfHwgKCFqc09iamVj
dCAmJiAhaXNXaW5kb3dPYmplY3QpKTsK
</data>
<flag name="review"
          id="402580"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>