<?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>172073</bug_id>
          
          <creation_ts>2017-05-13 12:13:59 -0700</creation_ts>
          <short_desc>[WTF] Make ThreadMessage portable</short_desc>
          <delta_ts>2017-06-11 17:47:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>171865</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308321</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-13 12:13:59 -0700</bug_when>
    <thetext>[WTF] Make ThreadMessage portable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308322</commentid>
    <comment_count>1</comment_count>
      <attachid>310023</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-13 12:15:42 -0700</bug_when>
    <thetext>Created attachment 310023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308323</commentid>
    <comment_count>2</comment_count>
      <attachid>310024</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-13 12:21:33 -0700</bug_when>
    <thetext>Created attachment 310024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308324</commentid>
    <comment_count>3</comment_count>
      <attachid>310025</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-13 12:22:23 -0700</bug_when>
    <thetext>Created attachment 310025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308325</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-05-13 12:23:30 -0700</bug_when>
    <thetext>Interesting thing is suspending / resuming threads is more portable than emitting signals :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308724</commentid>
    <comment_count>5</comment_count>
      <attachid>310025</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-15 11:03:35 -0700</bug_when>
    <thetext>Comment on attachment 310025
Patch

The mach exception patch has been rolled out.  Let&apos;s hold off on this patch until that gets resolved first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317347</commentid>
    <comment_count>6</comment_count>
      <attachid>312424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-09 04:24:46 -0700</bug_when>
    <thetext>Created attachment 312424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317368</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-09 05:56:32 -0700</bug_when>
    <thetext>Now, the mach exception patch is landed.
I think this patch is ready to be reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317999</commentid>
    <comment_count>8</comment_count>
      <attachid>312424</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-11 08:52:12 -0700</bug_when>
    <thetext>Comment on attachment 312424
Patch

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

Looks good in general but I have some questions and concerns.

&gt; Source/JavaScriptCore/runtime/MachineContext.h:39
&gt; +void*&amp; stackPointer(PlatformRegisters&amp;);

Why make this only specific to #if OS(WINDOWS) || HAVE(MACHINE_CONTEXT)?  What&apos;s the rationale?

I suspect that this will break the build for platform that are !(OS(WINDOWS) || HAVE(MACHINE_CONTEXT)).  For example, the VMTraps and SigillCrashAnalyzer&apos;s SignalContext constructor initializer lists use this function.  One option is to fix them to use the const PlatformRegister&amp; form.  Another option is to disable VMTraps and SigillCrashAnalyzer for !(OS(WINDOWS) || HAVE(MACHINE_CONTEXT)).  I like the second option better.  What do you think?

&gt; Source/JavaScriptCore/runtime/MachineContext.h:121
&gt; +#else

Since this #else is so far away from its corresponding #if, can you add a comment like so:
#else // not OS(WINDOWS) || HAVE(MACHINE_CONTEXT)

&gt; Source/JavaScriptCore/runtime/MachineContext.h:126
&gt; +#endif

Ditto, add a comment:
#endif // OS(WINDOWS) || HAVE(MACHINE_CONTEXT)

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:438
&gt; +#endif

nit: use a comment to pair with the #if please.
#endif // OS(DARWIN)

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:458
&gt; +void Thread::setRegisters(const PlatformRegisters&amp; registers)

I see this defined but not used anywhere.  What&apos;s the motivation for introducing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318000</commentid>
    <comment_count>9</comment_count>
      <attachid>312424</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-11 08:56:11 -0700</bug_when>
    <thetext>Comment on attachment 312424
Patch

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

&gt; Source/WTF/wtf/ThreadMessage.cpp:-201
&gt; -
&gt; -#endif // USE(PTHREADS)

The whole of ThreadMessage.h appears to be duplicated below when I click on the &quot;100 above&quot; link.  Can you make sure there&apos;s no duplication?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318004</commentid>
    <comment_count>10</comment_count>
      <attachid>312424</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-06-11 09:04:13 -0700</bug_when>
    <thetext>Comment on attachment 312424
Patch

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

Some of my comments seemed to have just disappeared.  I&apos;ll try to reconstruct them as much as possible.

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:172
&gt; +#if HAVE(MACHINE_CONTEXT)
&gt; +    registersFromUContext(userContext) = thread-&gt;m_platformRegisters;
&gt; +#endif

Is it reasonable to expect HAVE(MACHINE_CONTEXT) for pthreads?  If so, should we add a:

#else
#error &quot;Unable to modify platform registers because !HAVE(MACHINE_CONTEXT)

This way, there&apos;s no silent failure catching anyone by surprise.

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:465
&gt; +    ASSERT_WITH_MESSAGE(m_suspendCount, &quot;We can get registers only if the thread is suspended.&quot;);

typo: /get/set/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318012</commentid>
    <comment_count>11</comment_count>
      <attachid>312424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-11 09:54:10 -0700</bug_when>
    <thetext>Comment on attachment 312424
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:39
&gt;&gt; +void*&amp; stackPointer(PlatformRegisters&amp;);
&gt; 
&gt; Why make this only specific to #if OS(WINDOWS) || HAVE(MACHINE_CONTEXT)?  What&apos;s the rationale?
&gt; 
&gt; I suspect that this will break the build for platform that are !(OS(WINDOWS) || HAVE(MACHINE_CONTEXT)).  For example, the VMTraps and SigillCrashAnalyzer&apos;s SignalContext constructor initializer lists use this function.  One option is to fix them to use the const PlatformRegister&amp; form.  Another option is to disable VMTraps and SigillCrashAnalyzer for !(OS(WINDOWS) || HAVE(MACHINE_CONTEXT)).  I like the second option better.  What do you think?

We still have `void* stackPointer(const PlatformRegisters&amp;);`. `void*&amp; stackPointer(PlatformRegisters&amp;);` is prepared to perform the operation like,

MachineContext::stackPointer(registers) = newValue;

But the above thing should be effective only in `OS(WINDOWS) || HAVE(MACHINE_CONTEXT)` environment. HAVE(MACHINE_CONTEXT) means that we know how to modify MachineContext.
If HAVE(MACHINE_CONTEXT) is false (and OS(WINDOWS) is false), our PlatformRegister just has approximate stack pointer. Modifying it by using the above form does not have any meaningful effect.

So I think we should not expose `void*&amp; stackPointer(PlatformRegisters&amp;);` function in `OS(WINDOWS) || HAVE(MACHINE_CONTEXT)` environment.

VMTrap depends on HAVE(MACHINE_CONTEXT). And SigillAnalyzer is only enabled in Darwin environment right now. So I think this change does not cause build failures.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:121
&gt;&gt; +#else
&gt; 
&gt; Since this #else is so far away from its corresponding #if, can you add a comment like so:
&gt; #else // not OS(WINDOWS) || HAVE(MACHINE_CONTEXT)

Nice, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:126
&gt;&gt; +#endif
&gt; 
&gt; Ditto, add a comment:
&gt; #endif // OS(WINDOWS) || HAVE(MACHINE_CONTEXT)

Done.

&gt;&gt; Source/WTF/wtf/ThreadMessage.cpp:-201
&gt;&gt; -#endif // USE(PTHREADS)
&gt; 
&gt; The whole of ThreadMessage.h appears to be duplicated below when I click on the &quot;100 above&quot; link.  Can you make sure there&apos;s no duplication?

Oh, that&apos;s strange... They are removed completely. I hope the updated patch&apos;s diff does not show it.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:172
&gt;&gt; +#endif
&gt; 
&gt; Is it reasonable to expect HAVE(MACHINE_CONTEXT) for pthreads?  If so, should we add a:
&gt; 
&gt; #else
&gt; #error &quot;Unable to modify platform registers because !HAVE(MACHINE_CONTEXT)
&gt; 
&gt; This way, there&apos;s no silent failure catching anyone by surprise.

Or, now, we do not use setRegister(). So, this functionality is not necessary.
We can drop this feature simply. Dropped this phase.

BTW, HAVE(MACHINE_CONTEXT) can be false in USE(PTHREAD) environment if we do not know much about machine context internals.
For example, on non-JIT-supported ISA, we do not have accessors for machine context. In this case, HAVE(MACHINE_CONTEXT) becomes false.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:438
&gt;&gt; +#endif
&gt; 
&gt; nit: use a comment to pair with the #if please.
&gt; #endif // OS(DARWIN)

Fixed.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:458
&gt;&gt; +void Thread::setRegisters(const PlatformRegisters&amp; registers)
&gt; 
&gt; I see this defined but not used anywhere.  What&apos;s the motivation for introducing this?

This is originally introduced to be used in sendMessageUsingMach in the previous patch.
But now, the newly landed one does not include it. So, we can drop this implementation! :)
Dropped.

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:465
&gt;&gt; +    ASSERT_WITH_MESSAGE(m_suspendCount, &quot;We can get registers only if the thread is suspended.&quot;);
&gt; 
&gt; typo: /get/set/.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318018</commentid>
    <comment_count>12</comment_count>
      <attachid>312605</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-11 10:05:08 -0700</bug_when>
    <thetext>Created attachment 312605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318020</commentid>
    <comment_count>13</comment_count>
      <attachid>312607</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-11 10:06:22 -0700</bug_when>
    <thetext>Created attachment 312607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318045</commentid>
    <comment_count>14</comment_count>
      <attachid>312607</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-06-11 14:11:47 -0700</bug_when>
    <thetext>Comment on attachment 312607
Patch

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

r=me with comment.

&gt; Source/WTF/wtf/ThreadingPthreads.cpp:402
&gt; +struct ThreadStateOption {

What&apos;s the reasoning behind calling this ThreadStateOption? What do you think about calling this ThreadStateMetadata?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318090</commentid>
    <comment_count>15</comment_count>
      <attachid>312607</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-11 17:40:42 -0700</bug_when>
    <thetext>Comment on attachment 312607
Patch

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

&gt;&gt; Source/WTF/wtf/ThreadingPthreads.cpp:402
&gt;&gt; +struct ThreadStateOption {
&gt; 
&gt; What&apos;s the reasoning behind calling this ThreadStateOption? What do you think about calling this ThreadStateMetadata?

It&apos;s fine. Renamed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318093</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-11 17:47:27 -0700</bug_when>
    <thetext>Committed r218080: &lt;http://trac.webkit.org/changeset/218080&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310023</attachid>
            <date>2017-05-13 12:15:42 -0700</date>
            <delta_ts>2017-05-13 12:21:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172073-20170514041541.patch</filename>
            <type>text/plain</type>
            <size>17971</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NjE0OTMwZTE3NGIxNjNiMDQ5NDE0ZjhjYTViMDUwMDQwY2YyODA4Li44ZjZhMDA1NDhjMGExNDg5
NzYwY2I4ZTY5NzM3OWFlODQ2YjVmODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNy0wNS0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVy
KToKKwogMjAxNy0wNS0xMiAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIERGRzo6Tm9kZSBzaG91bGQgbm90IGhhdmUgaXRzIG93biBhbGxvY2F0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggMTY4NTMxNTRiNGRiYmVhZjg4MjgwZWU5Yjg2OGI1MGE4ZjI5NDIyNS4uNjM4ZTY3ZmQz
YmM4MWFhNTFmOTk5MTY2YmExYmQxMjJjNjI0MDVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAx
Ny0wNS0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY2VudGx5LCB3ZSBjaGFuZ2UgVGhyZWFkTWVz
c2FnZSBzZW1hbnRpY3M6IG1lc3NhZ2UgaGFuZGxlcgorICAgICAgICBjYW4gYmUgZXhlY3V0ZWQg
aW4gdGhlIHNlbmRlciB0aHJlYWQuCisgICAgICAgIFRoaXMgYWxsb3dzIFRocmVhZE1lc3NhZ2Ug
dG8gYmUgaW1wbGVtZW50ZWQgaW4gYSBwb3J0YWJsZSB3YXkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbXBsZW1lbnRzIFRocmVhZE1lc3NhZ2UgZm9yIGFsbCB0aGUgcGxhdGZvcm1zLgorICAgICAg
ICBXZSB1c2UgcGxhdGZvcm0taW5kZXBlbmRlbnQgVGhyZWFkIEFQSXMsIHN1c3BlbmQoKSwgcmVz
dW1lKCksCisgICAgICAgIGdldFJlZ2lzdGVycygpIGFuZCBzZXRSZWdpc3RlcnMoKS4KKworICAg
ICAgICAqIHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oOgorICAgICAgICAoV1RGOjpyZWdpc3RlcnNG
cm9tVUNvbnRleHQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRNZXNzYWdlLmNwcDoKKyAgICAgICAg
KFdURjo6c2VuZE1lc3NhZ2VTY29wZWQpOgorICAgICAgICAoV1RGOjpUaHJlYWRNZXNzYWdlRGF0
YTo6VGhyZWFkTWVzc2FnZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6c2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OnNl
bmRNZXNzYWdlVXNpbmdNYWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGVsaXZlck1lc3Nh
Z2VzVXNpbmdNYWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkTWVzc2FnZS5oOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhy
ZWFkaW5nKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgICogd3RmL1RocmVh
ZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpzaWduYWxIYW5kbGVyU3Vz
cGVuZFJlc3VtZSk6CisgICAgICAgIChXVEY6OnRocmVhZFN0YXRlT3B0aW9uKToKKyAgICAgICAg
KFdURjo6VGhyZWFkOjpnZXRSZWdpc3RlcnMpOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNldFJl
Z2lzdGVycyk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6
OlRocmVhZDo6c2V0UmVnaXN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWduYWxzLmNw
cDoKKyAgICAgICAgKFdURjo6aGFuZGxlU2lnbmFsc1dpdGhNYWNoKToKKwogMjAxNy0wNS0xMiAg
S2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgTWFj
aCBleGNlcHRpb25zIGluc3RlYWQgb2Ygc2lnbmFscyB3aGVyZSBwb3NzaWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKaW5kZXggNzY1NDA0NDg1
OTBmMjViMzRkNmE2MDAzMjZhYTI0NWI0YWZhZWMwMS4uMGUzZTJkZDI5MTRjZmYyODg3NDRhYWEw
ZWI2YTlmOTM5MTg3ZDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFjaGluZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YWNoaW5lQ29udGV4dC5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogbmFt
ZXNwYWNlIE1hY2hpbmVDb250ZXh0IHsKIAotCi12b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3Jt
UmVnaXN0ZXJzJik7CiB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMm
KTsKIAogI2lmIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQordm9pZComIHN0
YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwogdm9pZComIGZyYW1lUG9pbnRlcihQbGF0
Zm9ybVJlZ2lzdGVycyYpOwogdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0
ZXJzJik7CiB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CkBA
IC02NCw2ICs2Myw3IEBAIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250
ZXh0X3QmKTsKICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICNlbmRpZiAvLyBPUyhX
SU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAorI2lmIE9TKFdJTkRPV1MpIHx8IEhB
VkUoTUFDSElORV9DT05URVhUKQogaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTExLDggKzExMSw2IEBAIGlu
bGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogCiAjZWxp
ZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICAgICByZXR1cm4gc3RhY2tQb2ludGVyKHJlZ3MubWFj
aGluZUNvbnRleHQpOwotI2Vsc2UKLSAgICByZXR1cm4gcmVncy5zdGFja1BvaW50ZXI7CiAjZW5k
aWYKIH0KIApAQCAtMTIwLDcgKzExOCwxMiBAQCBpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNv
bnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogICAgIHJldHVybiBzdGFja1BvaW50ZXIo
Y29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKIH0KLQorI2Vsc2UKK2lubGlu
ZSB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7Cisg
ICAgcmV0dXJuIHJlZ3Muc3RhY2tQb2ludGVyOworfQorI2VuZGlmCiAKICNpZiBIQVZFKE1BQ0hJ
TkVfQ09OVEVYVCkKIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMu
aCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKaW5kZXggODRiZDg5Mzc0OTlk
YTk5ZWFhODZiNzM2OTVmN2M1YjgxYWMyNjBjZS4uOTJjZDc4OWIwYWU0MDE1NjdiYzI3Y2U0YjA4
ZDVmNTAyMjY4N2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3Rl
cnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCkBAIC03NCw3ICs3
NCwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogCiBpbmxpbmUgUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ2lzdGVyc0Zyb21VQ29udGV4dCh1Y29udGV4dF90KiB1Y29udGV4dCkKIHsKKyNp
ZiBDUFUoUFBDKQorICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4o
dWNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3MpOworI2Vsc2UKICAgICByZXR1cm4gKmJpdHdp
c2VfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyo+KCZ1Y29udGV4dC0+dWNfbWNvbnRleHQpOworI2Vu
ZGlmCiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdl
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IGI5OTRjYWNkNjI2
ZDRjNmNmZDVjMTY4MTA5YjU1YjY5ZGQyM2I5OTYuLmVmNmI5YTVhNzU5MDdhYmM0NjM5NmU1MTBm
NWQ4YmVhYWJlNThkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0yNiwxNDEgKzI2
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkTWVzc2FnZS5oIgog
Ci0jaWYgVVNFKFBUSFJFQURTKQotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5o
PgotCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0jaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0
Lmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIE5vZGUgPSBMb2NrbGVzc0Jh
ZzxUaHJlYWRNZXNzYWdlRGF0YSo+OjpOb2RlOwotCi1jbGFzcyBUaHJlYWRNZXNzYWdlRGF0YSB7
Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGhyZWFkTWVzc2Fn
ZURhdGEoY29uc3QgVGhyZWFkTWVzc2FnZSYgbSkKLSAgICAgICAgOiByYW4obnVsbHB0cikKLSAg
ICAgICAgLCBtZXNzYWdlKG0pCi0gICAgewotICAgIH0KLQotICAgIEF0b21pYzxOb2RlKj4gcmFu
OwotICAgIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2U7Ci19OwotCi1lbnVtIEZpbGVEZXNj
cmlwdG9yIHsKLSAgICBSZWFkLAotICAgIFdyaXRlLAotICAgIE51bWJlck9mRmlsZURlc2NyaXB0
b3JzLAotfTsKLQotc3RhdGljIGludCBmaWxlRGVzY3JpcHRvcnNbTnVtYmVyT2ZGaWxlRGVzY3Jp
cHRvcnNdOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG1hZ2ljQnl0ZSA9ICJkIjsKLQotCi12
b2lkIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpCi17Ci0gICAgaW50IHJlc3VsdCA9IHBpcGUo
ZmlsZURlc2NyaXB0b3JzKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKLQotICAgIGlu
dCBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwpOwotICAgIHJl
c3VsdCA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfU0VURkwsIGZsYWdzIHwgT19O
T05CTE9DSyB8IE9fQVBQRU5EKTsKLSAgICBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tX
cml0ZV0sIEZfR0VURkwpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCAhPSAtMSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoKGZsYWdzICYgT19OT05CTE9DSykgJiYgKGZsYWdzICYgT19BUFBFTkQp
KTsKLQotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsK
LSAgICByZXN1bHQgPSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdz
ICYgfk9fTk9OQkxPQ0spOwotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRd
LCBGX0dFVEZMKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgIT0gLTEpOwotICAgIFJFTEVB
U0VfQVNTRVJUKCEoZmxhZ3MgJiBPX05PTkJMT0NLKSk7Ci19Ci0KLVNVUFBSRVNTX0FTQU4KLXN0
YXRpYyBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlVXNpbmdTaWduYWwoVGhyZWFkJiB0aHJlYWQs
IGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCi17Ci0gICAgY29uc3RleHByIFNpZ25hbCBz
aWduYWwgPSBTaWduYWw6OlVzcjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbXSB7Ci0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVy
KHNpZ25hbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3Rl
cnMpIHsKLSAgICAgICAgICAgIFRocmVhZCogdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50TWF5QmVO
dWxsKCk7Ci0KLSAgICAgICAgICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKCJXZSBzb21laG93IGdvdCBhIG1lc3NhZ2Ugb24gYSB0aHJlYWQgdGhhdCBkaWRuJ3Qg
aGF2ZSBhIFdURjo6VGhyZWFkIGluaXRpYWxpemVkLCB3ZSBwcm9iYWJseSBkZWFkbG9ja2VkLCBo
YWxwLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5vZGUgc2hvdWxkIGJlIGRlbGV0ZWQg
aW4gdGhlIHNlbmRlciB0aHJlYWQuIERlbGV0aW5nIE5vZGVzIGluIHNpZ25hbCBoYW5kbGVyIGNh
dXNlcyBkZWFkIGxvY2suCi0gICAgICAgICAgICB0aHJlYWQtPnRocmVhZE1lc3NhZ2VzKCkuY29u
c3VtZUFsbFdpdGhOb2RlKFsmXSAoVGhyZWFkTWVzc2FnZURhdGEqIGRhdGEsIE5vZGUqIG5vZGUp
IHsKLSAgICAgICAgICAgICAgICBkYXRhLT5tZXNzYWdlKHJlZ2lzdGVycyk7Ci0gICAgICAgICAg
ICAgICAgLy8gQnkgc2V0dGluZyByYW4gdmFyaWFibGUsICgxKSB0aGUgc2VuZGVyIGFja25vd2xl
ZGdlcyB0aGUgY29tcGxldGlvbiBhbmQKLSAgICAgICAgICAgICAgICAvLyAoMikgZ2V0cyB0aGUg
Tm9kZSB0byBiZSBkZWxldGVkLgotICAgICAgICAgICAgICAgIGRhdGEtPnJhbi5zdG9yZShub2Rl
KTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICB3aGlsZSAod3JpdGUoZmlsZURlc2Ny
aXB0b3JzW1dyaXRlXSwgbWFnaWNCeXRlLCAxKSA9PSAtMSkKLSAgICAgICAgICAgICAgICBBU1NF
UlQoZXJybm8gPT0gRUFHQUlOKTsKLQotICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6
SGFuZGxlZDsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLQotICAgIC8vIFNpbmNlIHdlIGFyZSBn
dWFyZW50ZWVkIG5vdCB0byByZXR1cm4gdW50aWwgd2UgZ2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUg
b3RoZXIgdGhyZWFkIHRoaXMgaXMgb2suCi0gICAgVGhyZWFkTWVzc2FnZURhdGEgZGF0YShtZXNz
YWdlKTsKLQotICAgIHRocmVhZC50aHJlYWRNZXNzYWdlcygpLmFkZCgmZGF0YSk7Ci0gICAgYm9v
bCByZXN1bHQgPSB0aHJlYWQuc2lnbmFsKHRvU3lzdGVtU2lnbmFsKHNpZ25hbCkpOwotICAgIGlm
ICghcmVzdWx0KQotICAgICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6VGhyZWFkRXhpdGVkOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Ci0KLSAgICBzdGF0aWMgU3RhdGljTG9jayByZWFk
TG9jazsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZWFk
TG9jayk7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3QgYnVmZmVyU2l6ZSA9IDE2OwotICAgICAg
ICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKLQotICAgICAgICAvLyBJdCdzIGFsd2F5cyBzYWZl
IHRvIGNsZWFyIHRoZSBwaXBlIGJlY2F1c2Ugb25seSBvbmUgdGhyZWFkIGNhbiBldmVyIGJsb2Nr
IHRyeWluZyB0byByZWFkCi0gICAgICAgIC8vIGZyb20gdGhlIHBpcGUuIFRodXMsIGVhY2ggYnl0
ZSB3ZSBjbGVhciBmcm9tIHRoZSBwaXBlIGFjdHVhbGx5IGp1c3QgY29ycmVzcG9uZHMgdG8gc29t
ZSB0YXNrCi0gICAgICAgIC8vIHRoYXQgaGFzIGFscmVhZHkgZmluaXNoZWQuIFdlIGFjdGl2ZWx5
IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIHBpcGUgZG9lcyBub3Qgb3ZlcmZpbGwgYmVjYXVzZQot
ICAgICAgICAvLyBvdGhlcndpc2Ugb3VyIHdyaXRlcnMgbWlnaHQgc3BpbiB0cnlpbmcgdG8gd3Jp
dGUuCi0gICAgICAgIGF1dG8gY2xlYXJQaXBlID0gWyZdIHsKLSAgICAgICAgICAgIGludCBmbGFn
cyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9HRVRGTCk7Ci0gICAgICAgICAgICBB
U1NFUlQoIShmbGFncyAmIE9fTk9OQkxPQ0spKTsKLSAgICAgICAgICAgIGZjbnRsKGZpbGVEZXNj
cmlwdG9yc1tSZWFkXSwgRl9TRVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLKTsKLQotICAgICAgICAg
ICAgd2hpbGUgKHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIGJ1ZmZlclNpemUp
ICE9IC0xKSB7IH0KLSAgICAgICAgICAgIEFTU0VSVChlcnJubyA9PSBFQUdBSU4pOwotCi0gICAg
ICAgICAgICBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdzKTsKLSAg
ICAgICAgfTsKLQotICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGRhdGEucmFuLmxvYWQoKSkgewot
ICAgICAgICAgICAgY2xlYXJQaXBlKCk7Ci0gICAgICAgICAgICBkZWxldGUgbm9kZTsKLSAgICAg
ICAgICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaW50IHJldCA9IHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIDEpOwot
ICAgICAgICBVTlVTRURfUEFSQU0ocmV0KTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlclswXSA9PSBt
YWdpY0J5dGVbMF0pOwotICAgICAgICBjbGVhclBpcGUoKTsKLSAgICB9Ci0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQotc3Rh
dGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ01hY2goVGhyZWFkJiB0aHJlYWQsIGNv
bnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCitNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2Nv
cGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogewogICAg
IHN0YXRpYyBTdGF0aWNMb2NrIG1lc3NhZ2VMb2NrOwogICAgIGF1dG8gbG9ja2hvbGRlciA9IGhv
bGRMb2NrKG1lc3NhZ2VMb2NrKTsKQEAgLTE2OSw1MiArNDAsMTUgQEAgc3RhdGljIE1lc3NhZ2VT
dGF0dXMgc2VuZE1lc3NhZ2VVc2luZ01hY2goVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1l
c3NhZ2UmIG0KICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE1lc3NhZ2VTdGF0dXM6
OlRocmVhZEV4aXRlZDsKIAotI2lmIENQVShYODYpCi0gICAgdW5zaWduZWQgdXNlckNvdW50ID0g
c2l6ZW9mKFBsYXRmb3JtUmVnaXN0ZXJzKSAvIHNpemVvZihpbnQpOwotICAgIHRocmVhZF9zdGF0
ZV9mbGF2b3JfdCBmbGF2b3IgPSBpMzg2X1RIUkVBRF9TVEFURTsKLSNlbGlmIENQVShYODZfNjQp
Ci0gICAgdW5zaWduZWQgdXNlckNvdW50ID0geDg2X1RIUkVBRF9TVEFURTY0X0NPVU5UOwotICAg
IHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSB4ODZfVEhSRUFEX1NUQVRFNjQ7Ci0jZWxp
ZiBDUFUoQVJNKQotICAgIHVuc2lnbmVkIHVzZXJDb3VudCA9IEFSTV9USFJFQURfU1RBVEVfQ09V
TlQ7Ci0gICAgdGhyZWFkX3N0YXRlX2ZsYXZvcl90IGZsYXZvciA9IEFSTV9USFJFQURfU1RBVEU7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgdW5zaWduZWQgdXNlckNvdW50ID0gQVJNX1RIUkVBRF9T
VEFURTY0X0NPVU5UOwotICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBBUk1fVEhS
RUFEX1NUQVRFNjQ7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQogICAgIFBsYXRmb3JtUmVnaXN0ZXJzIHJlZ2lzdGVyczsKLSAgICB0aHJlYWRfc3RhdGVfdCBz
dGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dGhyZWFkX3N0YXRlX3Q+KCZyZWdpc3RlcnMpOwotICAg
IHRocmVhZF9nZXRfc3RhdGUodGhyZWFkLm1hY2hUaHJlYWQoKSwgZmxhdm9yLCBzdGF0ZSwgJnVz
ZXJDb3VudCk7CisgICAgdGhyZWFkLmdldFJlZ2lzdGVycyhyZWdpc3RlcnMpOwogCiAgICAgbWVz
c2FnZShyZWdpc3RlcnMpOwogCi0gICAgdGhyZWFkX3NldF9zdGF0ZSh0aHJlYWQubWFjaFRocmVh
ZCgpLCBmbGF2b3IsIHN0YXRlLCB1c2VyQ291bnQpOworICAgIHRocmVhZC5zZXRSZWdpc3RlcnMo
cmVnaXN0ZXJzKTsKIAogICAgIHRocmVhZC5yZXN1bWUoKTsKICAgICByZXR1cm4gTWVzc2FnZVN0
YXR1czo6TWVzc2FnZVJhbjsKIH0KIAotc3RhdGljIGJvb2wgdXNlTWFjaCA9IGZhbHNlOwotdm9p
ZCBkZWxpdmVyTWVzc2FnZXNVc2luZ01hY2goKQotewotICAgIHVzZU1hY2ggPSB0cnVlOwotfQot
Ci0jZW5kaWYgLy8gSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0KLU1lc3NhZ2VTdGF0dXMgc2VuZE1l
c3NhZ2VTY29wZWQoVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2Up
Ci17Ci0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0gICAgaWYgKHVzZU1hY2gpCi0gICAgICAg
IHJldHVybiBzZW5kTWVzc2FnZVVzaW5nTWFjaCh0aHJlYWQsIG1lc3NhZ2UpOwotI2VuZGlmCi0g
ICAgcmV0dXJuIHNlbmRNZXNzYWdlVXNpbmdTaWduYWwodGhyZWFkLCBtZXNzYWdlKTsKLX0KLQot
CiB9IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFVTRShQVEhSRUFEUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZE1lc3NhZ2UuaAppbmRleCAzMDA0NzJiM2U3MWM0MmVjODk4NzRhM2RlMGZmMzc2MWNhOTY5MTBj
Li4zYTM1MDQ4YjI2NDVhZTg2OGI1MDQ4YTAxMzJjOTJjZjYwNTY3ZjVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFk
TWVzc2FnZS5oCkBAIC0yOSwxMyArMjksOCBAQAogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBVU0UoUFRIUkVBRFMpCi0KIG5h
bWVzcGFjZSBXVEYgewogCi12b2lkIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpOwotCi1jbGFz
cyBUaHJlYWRNZXNzYWdlRGF0YTsKIHVzaW5nIFRocmVhZE1lc3NhZ2UgPSBTY29wZWRMYW1iZGE8
dm9pZChQbGF0Zm9ybVJlZ2lzdGVycyYpPjsKIAogZW51bSBjbGFzcyBNZXNzYWdlU3RhdHVzIHsK
QEAgLTU1LDEyICs1MCw2IEBAIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2UoVGhyZWFkJiB0YXJn
ZXRUaHJlYWQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlU2Nv
cGVkKHRhcmdldFRocmVhZCwgbGFtYmRhKTsKIH0KIAotI2lmIEhBVkUoTUFDSF9FWENFUFRJT05T
KQotdm9pZCBkZWxpdmVyTWVzc2FnZXNVc2luZ01hY2goKTsKLSNlbmRpZgotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpzZW5kTWVzc2FnZTsKLQotI2VuZGlmIC8vIFVTRShQVEhS
RUFEUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IDE1YTVjNjg5YWU4NTFiNmZmYTkzODNjNTFjNjZm
ODE1NTdkNDE4MzguLmY4MjUyNTE4ZDMxZDMzNDRiZTFhYTI2MGQ2MjYxMDk2MjQ3MTQyMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcApAQCAtMTc5LDkgKzE3OSw2IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVh
ZGluZygpCiAgICAgICAgIHd0ZlRocmVhZERhdGEoKTsKICAgICAgICAgaW5pdGlhbGl6ZURhdGVz
KCk7CiAgICAgICAgIFRocmVhZDo6aW5pdGlhbGl6ZVBsYXRmb3JtVGhyZWFkaW5nKCk7Ci0jaWYg
VVNFKFBUSFJFQURTKQotICAgICAgICBpbml0aWFsaXplVGhyZWFkTWVzc2FnZXMoKTsKLSNlbmRp
ZgogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCmluZGV4IDM1MTRlOGMwOWYwZmM5NGQ1MzRiZTJm
M2I2ZTdjNDk1MGUwYmNmMDUuLmM4NDI0NDc2ZmNkZGJhNWJhYjc2YTA3ZTQ5MjNjOGQ0MmJjMGFm
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5oCkBAIC0xMDEsNiArMTAxLDcgQEAgY2xhc3MgVGhyZWFkIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBFeHBlY3RlZDx2b2lkLCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4gc3VzcGVuZCgpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlc3VtZSgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
aXplX3QgZ2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc2V0UmVnaXN0ZXJzKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNp
ZiBVU0UoUFRIUkVBRFMpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2lnbmFsKGludCBz
aWduYWxOdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGQzNGQ3
OThmMjliZjg5OTAwNDJkYTUxOGE5Y2ZiN2ExNjNhODY4MmQuLmE2ZTIyOWExY2NlYTdjY2VlYmNj
ZTU4Y2EzMGU2NzVhOTkwMTRmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAK
QEAgLTEzNiwxMSArMTM2LDcgQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVz
dW1lKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghaXNPbkFsdGVybmF0aXZlU2lnbmFsU3RhY2soKSwgIlVzaW5nIGFuIGFsdGVybmF0aXZl
IHNpZ25hbCBzdGFjayBpcyBub3Qgc3VwcG9ydGVkLiBDb25zaWRlciBkaXNhYmxpbmcgdGhlIGNv
bmN1cnJlbnQgR0MuIik7CiAKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSNpZiBDUFUoUFBD
KQotICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsg
KnVzZXJDb250ZXh0LT51Y19tY29udGV4dC51Y19yZWdzIH07Ci0jZWxzZQotICAgIHRocmVhZC0+
bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgdXNlckNvbnRleHQtPnVj
X21jb250ZXh0IH07Ci0jZW5kaWYKKyAgICB0aHJlYWQtPm1fcGxhdGZvcm1SZWdpc3RlcnMgPSBy
ZWdpc3RlcnNGcm9tVUNvbnRleHQodXNlckNvbnRleHQpOwogI2Vsc2UKICAgICB0aHJlYWQtPm1f
cGxhdGZvcm1SZWdpc3RlcnMgPSBQbGF0Zm9ybVJlZ2lzdGVycyB7IGdldEFwcHJveGltYXRlU3Rh
Y2tQb2ludGVyKCkgfTsKICNlbmRpZgpAQCAtMTYwLDYgKzE1NiwxMiBAQCB2b2lkIFRocmVhZDo6
c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4
dCkKICAgICBzaWdkZWxzZXQoJmJsb2NrZWRTaWduYWxTZXQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1
bWUpOwogICAgIHNpZ3N1c3BlbmQoJmJsb2NrZWRTaWduYWxTZXQpOwogCisgICAgLy8gSWYgd2Ug
ZG8gbm90IGhhdmUgTUFDSElORV9DT05URVhULCB3ZSBoYXZlIG5vIHdheSB0byBtb2RpZnkgUGxh
dGZvcm1SZWdpc3RlcnMuCisgICAgLy8gVGh1cywgd2UgZG8gbm90IG5lZWQgdG8gcmVzdG9yZSB0
aGUgdmFsdWUgdG8gdWNvbnRleHQuCisjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQpCisgICAgcmVn
aXN0ZXJzRnJvbVVDb250ZXh0KHVzZXJDb250ZXh0KSA9IHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbmRpZgorCiAgICAgLy8gQWxsb3cgcmVzdW1lIGNhbGxlciB0byBzZWUgdGhhdCB0
aGlzIHRocmVhZCBpcyByZXN1bWVkLgogICAgIHNlbV9wb3N0KCZ0aHJlYWQtPm1fc2VtYXBob3Jl
Rm9yU3VzcGVuZFJlc3VtZSk7CiB9CkBAIC0zOTMsMTIgKzM5NSwxNiBAQCB2b2lkIFRocmVhZDo6
cmVzdW1lKCkKICNlbmRpZgogfQogCi1zaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKLXsKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0
ZXg+IGxvY2tlcihtX211dGV4KTsKICNpZiBPUyhEQVJXSU4pCitzdHJ1Y3QgVGhyZWFkU3RhdGVP
cHRpb24geworICAgIHVuc2lnbmVkIHVzZXJDb3VudDsKKyAgICB0aHJlYWRfc3RhdGVfZmxhdm9y
X3QgZmxhdm9yOworfTsKKworc3RhdGljIFRocmVhZFN0YXRlT3B0aW9uIHRocmVhZFN0YXRlT3B0
aW9uKCkKK3sKICNpZiBDUFUoWDg2KQotICAgIHVuc2lnbmVkIHVzZXJDb3VudCA9IHNpemVvZihy
ZWdpc3RlcnMpIC8gc2l6ZW9mKGludCk7CisgICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9m
KFBsYXRmb3JtUmVnaXN0ZXJzKSAvIHNpemVvZihpbnQpOwogICAgIHRocmVhZF9zdGF0ZV9mbGF2
b3JfdCBmbGF2b3IgPSBpMzg2X1RIUkVBRF9TVEFURTsKICNlbGlmIENQVShYODZfNjQpCiAgICAg
dW5zaWduZWQgdXNlckNvdW50ID0geDg2X1RIUkVBRF9TVEFURTY0X0NPVU5UOwpAQCAtNDE4LDEz
ICs0MjQsMjEgQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdpc3RlcnMpCiAjZWxzZQogI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAjZW5kaWYK
KyAgICByZXR1cm4gVGhyZWFkU3RhdGVPcHRpb24geyB1c2VyQ291bnQsIGZsYXZvciB9OworfQor
I2VuZGlmCiAKLSAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRocmVhZF9nZXRfc3RhdGUobV9w
bGF0Zm9ybVRocmVhZCwgZmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ2lzdGVycywgJnVzZXJD
b3VudCk7CitzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z2lzdGVycykKK3sKKyAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211
dGV4KTsKKyNpZiBPUyhEQVJXSU4pCisgICAgYXV0byBvcHRpb24gPSB0aHJlYWRTdGF0ZU9wdGlv
bigpOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dldF9zdGF0ZShtX3BsYXRm
b3JtVGhyZWFkLCBvcHRpb24uZmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ2lzdGVycywgJm9w
dGlvbi51c2VyQ291bnQpOwogICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKSB7CiAgICAg
ICAgIFdURlJlcG9ydEZhdGFsRXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZV
TkNUSU9OLCAiSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZmFpbGVkIGJlY2F1c2UgdGhy
ZWFkX2dldF9zdGF0ZSByZXR1cm5lZCBhbiBlcnJvciAoJWQpLiBUaGlzIGlzIHByb2JhYmx5IHRo
ZSByZXN1bHQgb2YgcnVubmluZyBpbnNpZGUgUm9zZXR0YSwgd2hpY2ggaXMgbm90IHN1cHBvcnRl
ZC4iLCByZXN1bHQpOwogICAgICAgICBDUkFTSCgpOwogICAgIH0KLSAgICByZXR1cm4gdXNlckNv
dW50ICogc2l6ZW9mKHVpbnRwdHJfdCk7CisgICAgcmV0dXJuIG9wdGlvbi51c2VyQ291bnQgKiBz
aXplb2YodWludHB0cl90KTsKICNlbHNlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N1c3Bl
bmRDb3VudCwgIldlIGNhbiBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhlIHRocmVhZCBpcyBzdXNw
ZW5kZWQuIik7CiAgICAgcmVnaXN0ZXJzID0gbV9wbGF0Zm9ybVJlZ2lzdGVyczsKQEAgLTQzMiw2
ICs0NDYsMTggQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdpc3RlcnMpCiAjZW5kaWYKIH0KIAordm9pZCBUaHJlYWQ6OnNldFJlZ2lzdGVycyhjb25z
dCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8
c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOworI2lmIE9TKERBUldJTikKKyAgICBhdXRvIG9w
dGlvbiA9IHRocmVhZFN0YXRlT3B0aW9uKCk7CisgICAgdGhyZWFkX3NldF9zdGF0ZShtX3BsYXRm
b3JtVGhyZWFkLCBvcHRpb24uZmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ2lzdGVycywgb3B0
aW9uLnVzZXJDb3VudCk7CisjZWxzZQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdXNwZW5k
Q291bnQsICJXZSBjYW4gZ2V0IHJlZ2lzdGVycyBvbmx5IGlmIHRoZSB0aHJlYWQgaXMgc3VzcGVu
ZGVkLiIpOworICAgIG1fcGxhdGZvcm1SZWdpc3RlcnMgPSByZWdpc3RlcnM7CisjZW5kaWYKK30K
Kwogdm9pZCBUaHJlYWQ6OmVzdGFibGlzaChwdGhyZWFkX3QgaGFuZGxlKQogewogICAgIHN0ZDo6
dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dp
bi5jcHAKaW5kZXggNzI3MDQ0Zjg3YmQ5YjJhY2IwMzdkNmY3YTRhMzhlNGY1ZTIwYjEzOC4uMzJi
MDQ0MTE3ZGU0MDk3OGI3MGVmYTA5YWU2N2MzNjg1YjQ0MWJmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdX
aW4uY3BwCkBAIC0yNTgsNiArMjU4LDE0IEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7
CiB9CiAKK3ZvaWQgVGhyZWFkOjpzZXRSZWdpc3RlcnMoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVycykKK3sKKyAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlciht
X211dGV4KTsKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyBjb250ZXh0ID0gcmVnaXN0ZXJzOworICAg
IGNvbnRleHQuQ29udGV4dEZsYWdzID0gQ09OVEVYVF9JTlRFR0VSIHwgQ09OVEVYVF9DT05UUk9M
OworICAgIFNldFRocmVhZENvbnRleHQobV9oYW5kbGUsICZjb250ZXh0KTsKK30KKwogVGhyZWFk
JiBUaHJlYWQ6OmN1cnJlbnQoKQogewogICAgIFRocmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhv
bGRlcjo6Y3VycmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggNzA3Y2E5
YzJkMzJhNzY4MGEzOTgzYTgyZWNmMGI3ZDZiZmVlZWVjYS4uZDNiZTkyZWRlM2U2NTdlNmQ4NWRk
ZTY5NTc1NTEzMTMwZjRiMjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0y
MDAsNyArMjAwLDYgQEAga2Vybl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9z
dGF0ZSgKIHN0YXRpYyBib29sIHVzZU1hY2ggeyBmYWxzZSB9Owogdm9pZCBoYW5kbGVTaWduYWxz
V2l0aE1hY2goKQogewotICAgIGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwogICAgIHVzZU1h
Y2ggPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310024</attachid>
            <date>2017-05-13 12:21:33 -0700</date>
            <delta_ts>2017-05-13 12:22:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172073-20170514042132.patch</filename>
            <type>text/plain</type>
            <size>18982</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NjE0OTMwZTE3NGIxNjNiMDQ5NDE0ZjhjYTViMDUwMDQwY2YyODA4Li4zYzhiMjY5NzY2MzE1ZjAx
NmJkNWUwMzg0NDc1OGZjZjkyZTg1ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNS0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVy
KToKKyAgICAgICAgKiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJv
ZmlsaW5nVGltZXIpOgorCiAyMDE3LTA1LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gREZHOjpOb2RlIHNob3VsZCBub3QgaGF2ZSBpdHMgb3du
IGFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCAxNjg1MzE1NGI0ZGJiZWFmODgyODBlZTliODY4YjUwYThmMjk0MjI1
Li42MzhlNjdmZDNiYzgxYWE1MWY5OTkxNjZiYTFiZDEyMmM2MjQwNWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQyIEBACisyMDE3LTA1LTEzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtXVEZdIE1ha2UgVGhyZWFkTWVzc2FnZSBwb3J0YWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVjZW50bHksIHdlIGNoYW5n
ZSBUaHJlYWRNZXNzYWdlIHNlbWFudGljczogbWVzc2FnZSBoYW5kbGVyCisgICAgICAgIGNhbiBi
ZSBleGVjdXRlZCBpbiB0aGUgc2VuZGVyIHRocmVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgVGhy
ZWFkTWVzc2FnZSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHBvcnRhYmxlIHdheS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgVGhyZWFkTWVzc2FnZSBmb3IgYWxsIHRoZSBwbGF0Zm9y
bXMuCisgICAgICAgIFdlIHVzZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBUaHJlYWQgQVBJcywgc3Vz
cGVuZCgpLCByZXN1bWUoKSwKKyAgICAgICAgZ2V0UmVnaXN0ZXJzKCkgYW5kIHNldFJlZ2lzdGVy
cygpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg6CisgICAgICAgIChXVEY6
OnJlZ2lzdGVyc0Zyb21VQ29udGV4dCk6CisgICAgICAgICogd3RmL1RocmVhZE1lc3NhZ2UuY3Bw
OgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVNjb3BlZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZE1lc3NhZ2VEYXRhOjpUaHJlYWRNZXNzYWdlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkTWVzc2FnZXMpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6c2VuZE1lc3NhZ2VVc2luZ01hY2gpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpk
ZWxpdmVyTWVzc2FnZXNVc2luZ01hY2gpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRN
ZXNzYWdlLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6Omlu
aXRpYWxpemVUaHJlYWRpbmcpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNpZ25h
bEhhbmRsZXJTdXNwZW5kUmVzdW1lKToKKyAgICAgICAgKFdURjo6dGhyZWFkU3RhdGVPcHRpb24p
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6c2V0UmVnaXN0ZXJzKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6VGhyZWFkOjpzZXRSZWdpc3RlcnMpOgorICAgICAgICAqIHd0Zi90aHJlYWRz
L1NpZ25hbHMuY3BwOgorICAgICAgICAoV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2gpOgorCiAy
MDE3LTA1LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBNYWNoIGV4Y2VwdGlvbnMgaW5zdGVhZCBvZiBzaWduYWxzIHdoZXJlIHBvc3NpYmxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAppbmRl
eCA3NjU0MDQ0ODU5MGYyNWIzNGQ2YTYwMDMyNmFhMjQ1YjRhZmFlYzAxLi4wZTNlMmRkMjkxNGNm
ZjI4ODc0NGFhYTBlYjZhOWY5MzkxODdkNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKQEAgLTMzLDExICszMywxMCBAQAogbmFtZXNwYWNl
IEpTQyB7CiBuYW1lc3BhY2UgTWFjaGluZUNvbnRleHQgewogCi0KLXZvaWQqJiBzdGFja1BvaW50
ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9y
bVJlZ2lzdGVycyYpOwogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQp
Cit2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiYgZnJhbWVQ
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdp
c3RlcnMmKTsKQEAgLTY0LDYgKzYzLDcgQEAgdm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIo
Y29uc3QgbWNvbnRleHRfdCYpOwogI2VuZGlmIC8vIEhBVkUoTUFDSElORV9DT05URVhUKQogI2Vu
ZGlmIC8vIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogCisjaWYgT1MoV0lO
RE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCiBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRl
cihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKICNpZiBPUyhEQVJXSU4pCkBAIC0xMTEsOCAr
MTExLDYgQEAgaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MpCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQogICAgIHJldHVybiBzdGFja1BvaW50
ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7Ci0jZWxzZQotICAgIHJldHVybiByZWdzLnN0YWNrUG9p
bnRlcjsKICNlbmRpZgogfQogCkBAIC0xMjAsNyArMTE4LDEyIEBAIGlubGluZSB2b2lkKiBzdGFj
a1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB7CiAgICAgcmV0dXJuIHN0
YWNrUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOwogfQotCisj
ZWxzZQoraW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYg
cmVncykKK3sKKyAgICByZXR1cm4gcmVncy5zdGFja1BvaW50ZXI7Cit9CisjZW5kaWYKIAogI2lm
IEhBVkUoTUFDSElORV9DT05URVhUKQogaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRl
eHRfdCYgbWFjaGluZUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvQ29kZVByb2ZpbGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29k
ZVByb2ZpbGluZy5jcHAKaW5kZXggNGQ3NGFmMjhhZDM0NGU4ZWZjZmFlMTdmNjdkZjQ3Y2M4ZWJl
NDJhMC4uNDk0NzljOTg2ZDU1OWJkZDMyZjI3NTYxM2M5N2Q5NjYyY2YyMDc2MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcApAQCAtNzAsMTAgKzcw
LDEwIEBAIHN0YXRpYyB2b2lkIHNldFByb2ZpbGVUaW1lcih1bnNpZ25lZCB1c2VjKQogI2lmIEhB
VkUoTUFDSElORV9DT05URVhUKQogc3RhdGljIHZvaWQgcHJvZmlsaW5nVGltZXIoaW50LCBzaWdp
bmZvX3QqLCB2b2lkKiB1YXApCiB7Ci0gICAgbWNvbnRleHRfdCBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0OworICAgIFBsYXRmb3JtUmVnaXN0ZXJz
JiBwbGF0Zm9ybVJlZ2lzdGVycyA9IHJlZ2lzdGVyc0Zyb21VQ29udGV4dChzdGF0aWNfY2FzdDx1
Y29udGV4dF90Kj4odWFwKSk7CiAgICAgQ29kZVByb2ZpbGluZzo6c2FtcGxlKAotICAgICAgICBN
YWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpLAotICAgICAgICByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0
KSkpOworICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHBsYXRmb3Jt
UmVnaXN0ZXJzKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVDb250
ZXh0OjpmcmFtZVBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaCBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKaW5kZXggODRiZDg5Mzc0OTlkYTk5ZWFhODZiNzM2OTVm
N2M1YjgxYWMyNjBjZS4uOTJjZDc4OWIwYWU0MDE1NjdiYzI3Y2U0YjA4ZDVmNTAyMjY4N2MzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCkBAIC03NCw3ICs3NCwxMSBAQCBzdHJ1Y3Qg
UGxhdGZvcm1SZWdpc3RlcnMgewogCiBpbmxpbmUgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVy
c0Zyb21VQ29udGV4dCh1Y29udGV4dF90KiB1Y29udGV4dCkKIHsKKyNpZiBDUFUoUFBDKQorICAg
IHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4odWNvbnRleHQtPnVjX21j
b250ZXh0LnVjX3JlZ3MpOworI2Vsc2UKICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxQbGF0Zm9y
bVJlZ2lzdGVycyo+KCZ1Y29udGV4dC0+dWNfbWNvbnRleHQpOworI2VuZGlmCiB9CiAKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IGI5OTRjYWNkNjI2ZDRjNmNmZDVjMTY4MTA5
YjU1YjY5ZGQyM2I5OTYuLmVmNmI5YTVhNzU5MDdhYmM0NjM5NmU1MTBmNWQ4YmVhYWJlNThkMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0yNiwxNDEgKzI2LDEyIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkTWVzc2FnZS5oIgogCi0jaWYgVVNFKFBUSFJF
QURTKQotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2luY2x1
ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgotCi0jaWYgSEFWRShN
QUNIX0VYQ0VQVElPTlMpCi0jaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+Ci0jZW5kaWYKIAog
bmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIE5vZGUgPSBMb2NrbGVzc0JhZzxUaHJlYWRNZXNzYWdl
RGF0YSo+OjpOb2RlOwotCi1jbGFzcyBUaHJlYWRNZXNzYWdlRGF0YSB7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGhyZWFkTWVzc2FnZURhdGEoY29uc3QgVGhy
ZWFkTWVzc2FnZSYgbSkKLSAgICAgICAgOiByYW4obnVsbHB0cikKLSAgICAgICAgLCBtZXNzYWdl
KG0pCi0gICAgewotICAgIH0KLQotICAgIEF0b21pYzxOb2RlKj4gcmFuOwotICAgIGNvbnN0IFRo
cmVhZE1lc3NhZ2UmIG1lc3NhZ2U7Ci19OwotCi1lbnVtIEZpbGVEZXNjcmlwdG9yIHsKLSAgICBS
ZWFkLAotICAgIFdyaXRlLAotICAgIE51bWJlck9mRmlsZURlc2NyaXB0b3JzLAotfTsKLQotc3Rh
dGljIGludCBmaWxlRGVzY3JpcHRvcnNbTnVtYmVyT2ZGaWxlRGVzY3JpcHRvcnNdOwotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IG1hZ2ljQnl0ZSA9ICJkIjsKLQotCi12b2lkIGluaXRpYWxpemVU
aHJlYWRNZXNzYWdlcygpCi17Ci0gICAgaW50IHJlc3VsdCA9IHBpcGUoZmlsZURlc2NyaXB0b3Jz
KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKLQotICAgIGludCBmbGFncyA9IGZjbnRs
KGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwpOwotICAgIHJlc3VsdCA9IGZjbnRsKGZp
bGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfU0VURkwsIGZsYWdzIHwgT19OT05CTE9DSyB8IE9fQVBQ
RU5EKTsKLSAgICBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwp
OwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCAhPSAtMSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
KGZsYWdzICYgT19OT05CTE9DSykgJiYgKGZsYWdzICYgT19BUFBFTkQpKTsKLQotICAgIGZsYWdz
ID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsKLSAgICByZXN1bHQgPSBm
Y250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdzICYgfk9fTk9OQkxPQ0sp
OwotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsKLSAg
ICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgIT0gLTEpOwotICAgIFJFTEVBU0VfQVNTRVJUKCEoZmxh
Z3MgJiBPX05PTkJMT0NLKSk7Ci19Ci0KLVNVUFBSRVNTX0FTQU4KLXN0YXRpYyBNZXNzYWdlU3Rh
dHVzIHNlbmRNZXNzYWdlVXNpbmdTaWduYWwoVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1l
c3NhZ2UmIG1lc3NhZ2UpCi17Ci0gICAgY29uc3RleHByIFNpZ25hbCBzaWduYWwgPSBTaWduYWw6
OlVzcjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNhbGxfb25j
ZShvbmNlLCBbXSB7Ci0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKHNpZ25hbCwgW10gKFNp
Z25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIHsKLSAgICAgICAg
ICAgIFRocmVhZCogdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50TWF5QmVOdWxsKCk7Ci0KLSAgICAg
ICAgICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXZSBzb21l
aG93IGdvdCBhIG1lc3NhZ2Ugb24gYSB0aHJlYWQgdGhhdCBkaWRuJ3QgaGF2ZSBhIFdURjo6VGhy
ZWFkIGluaXRpYWxpemVkLCB3ZSBwcm9iYWJseSBkZWFkbG9ja2VkLCBoYWxwLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIE5vZGUgc2hvdWxkIGJlIGRlbGV0ZWQgaW4gdGhlIHNlbmRlciB0
aHJlYWQuIERlbGV0aW5nIE5vZGVzIGluIHNpZ25hbCBoYW5kbGVyIGNhdXNlcyBkZWFkIGxvY2su
Ci0gICAgICAgICAgICB0aHJlYWQtPnRocmVhZE1lc3NhZ2VzKCkuY29uc3VtZUFsbFdpdGhOb2Rl
KFsmXSAoVGhyZWFkTWVzc2FnZURhdGEqIGRhdGEsIE5vZGUqIG5vZGUpIHsKLSAgICAgICAgICAg
ICAgICBkYXRhLT5tZXNzYWdlKHJlZ2lzdGVycyk7Ci0gICAgICAgICAgICAgICAgLy8gQnkgc2V0
dGluZyByYW4gdmFyaWFibGUsICgxKSB0aGUgc2VuZGVyIGFja25vd2xlZGdlcyB0aGUgY29tcGxl
dGlvbiBhbmQKLSAgICAgICAgICAgICAgICAvLyAoMikgZ2V0cyB0aGUgTm9kZSB0byBiZSBkZWxl
dGVkLgotICAgICAgICAgICAgICAgIGRhdGEtPnJhbi5zdG9yZShub2RlKTsKLSAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICB3aGlsZSAod3JpdGUoZmlsZURlc2NyaXB0b3JzW1dyaXRlXSwg
bWFnaWNCeXRlLCAxKSA9PSAtMSkKLSAgICAgICAgICAgICAgICBBU1NFUlQoZXJybm8gPT0gRUFH
QUlOKTsKLQotICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci0KLQotICAgIC8vIFNpbmNlIHdlIGFyZSBndWFyZW50ZWVkIG5vdCB0
byByZXR1cm4gdW50aWwgd2UgZ2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUgb3RoZXIgdGhyZWFkIHRo
aXMgaXMgb2suCi0gICAgVGhyZWFkTWVzc2FnZURhdGEgZGF0YShtZXNzYWdlKTsKLQotICAgIHRo
cmVhZC50aHJlYWRNZXNzYWdlcygpLmFkZCgmZGF0YSk7Ci0gICAgYm9vbCByZXN1bHQgPSB0aHJl
YWQuc2lnbmFsKHRvU3lzdGVtU2lnbmFsKHNpZ25hbCkpOwotICAgIGlmICghcmVzdWx0KQotICAg
ICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6VGhyZWFkRXhpdGVkOwotICAgIFJFTEVBU0VfQVNT
RVJUKHJlc3VsdCk7Ci0KLSAgICBzdGF0aWMgU3RhdGljTG9jayByZWFkTG9jazsKLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZWFkTG9jayk7Ci0gICAgICAg
IGNvbnN0ZXhwciBzaXplX3QgYnVmZmVyU2l6ZSA9IDE2OwotICAgICAgICBjaGFyIGJ1ZmZlclti
dWZmZXJTaXplXTsKLQotICAgICAgICAvLyBJdCdzIGFsd2F5cyBzYWZlIHRvIGNsZWFyIHRoZSBw
aXBlIGJlY2F1c2Ugb25seSBvbmUgdGhyZWFkIGNhbiBldmVyIGJsb2NrIHRyeWluZyB0byByZWFk
Ci0gICAgICAgIC8vIGZyb20gdGhlIHBpcGUuIFRodXMsIGVhY2ggYnl0ZSB3ZSBjbGVhciBmcm9t
IHRoZSBwaXBlIGFjdHVhbGx5IGp1c3QgY29ycmVzcG9uZHMgdG8gc29tZSB0YXNrCi0gICAgICAg
IC8vIHRoYXQgaGFzIGFscmVhZHkgZmluaXNoZWQuIFdlIGFjdGl2ZWx5IHdhbnQgdG8gZW5zdXJl
IHRoYXQgdGhlIHBpcGUgZG9lcyBub3Qgb3ZlcmZpbGwgYmVjYXVzZQotICAgICAgICAvLyBvdGhl
cndpc2Ugb3VyIHdyaXRlcnMgbWlnaHQgc3BpbiB0cnlpbmcgdG8gd3JpdGUuCi0gICAgICAgIGF1
dG8gY2xlYXJQaXBlID0gWyZdIHsKLSAgICAgICAgICAgIGludCBmbGFncyA9IGZjbnRsKGZpbGVE
ZXNjcmlwdG9yc1tSZWFkXSwgRl9HRVRGTCk7Ci0gICAgICAgICAgICBBU1NFUlQoIShmbGFncyAm
IE9fTk9OQkxPQ0spKTsKLSAgICAgICAgICAgIGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwg
Rl9TRVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLKTsKLQotICAgICAgICAgICAgd2hpbGUgKHJlYWQo
ZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIGJ1ZmZlclNpemUpICE9IC0xKSB7IH0KLSAg
ICAgICAgICAgIEFTU0VSVChlcnJubyA9PSBFQUdBSU4pOwotCi0gICAgICAgICAgICBmY250bChm
aWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdzKTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBpZiAoTm9kZSogbm9kZSA9IGRhdGEucmFuLmxvYWQoKSkgewotICAgICAgICAgICAgY2xl
YXJQaXBlKCk7Ci0gICAgICAgICAgICBkZWxldGUgbm9kZTsKLSAgICAgICAgICAgIHJldHVybiBN
ZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHJldCA9
IHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIDEpOwotICAgICAgICBVTlVTRURf
UEFSQU0ocmV0KTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlclswXSA9PSBtYWdpY0J5dGVbMF0pOwot
ICAgICAgICBjbGVhclBpcGUoKTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLX0KLQotI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQotc3RhdGljIE1lc3NhZ2VTdGF0
dXMgc2VuZE1lc3NhZ2VVc2luZ01hY2goVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3Nh
Z2UmIG1lc3NhZ2UpCitNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhy
ZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogewogICAgIHN0YXRpYyBTdGF0aWNM
b2NrIG1lc3NhZ2VMb2NrOwogICAgIGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3NhZ2VM
b2NrKTsKQEAgLTE2OSw1MiArNDAsMTUgQEAgc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3Nh
Z2VVc2luZ01hY2goVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG0KICAgICBp
ZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE1lc3NhZ2VTdGF0dXM6OlRocmVhZEV4aXRlZDsK
IAotI2lmIENQVShYODYpCi0gICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9mKFBsYXRmb3Jt
UmVnaXN0ZXJzKSAvIHNpemVvZihpbnQpOwotICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2
b3IgPSBpMzg2X1RIUkVBRF9TVEFURTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgdW5zaWduZWQg
dXNlckNvdW50ID0geDg2X1RIUkVBRF9TVEFURTY0X0NPVU5UOwotICAgIHRocmVhZF9zdGF0ZV9m
bGF2b3JfdCBmbGF2b3IgPSB4ODZfVEhSRUFEX1NUQVRFNjQ7Ci0jZWxpZiBDUFUoQVJNKQotICAg
IHVuc2lnbmVkIHVzZXJDb3VudCA9IEFSTV9USFJFQURfU1RBVEVfQ09VTlQ7Ci0gICAgdGhyZWFk
X3N0YXRlX2ZsYXZvcl90IGZsYXZvciA9IEFSTV9USFJFQURfU1RBVEU7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgdW5zaWduZWQgdXNlckNvdW50ID0gQVJNX1RIUkVBRF9TVEFURTY0X0NPVU5UOwot
ICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBBUk1fVEhSRUFEX1NUQVRFNjQ7Ci0j
ZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQogICAgIFBsYXRmb3Jt
UmVnaXN0ZXJzIHJlZ2lzdGVyczsKLSAgICB0aHJlYWRfc3RhdGVfdCBzdGF0ZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dGhyZWFkX3N0YXRlX3Q+KCZyZWdpc3RlcnMpOwotICAgIHRocmVhZF9nZXRfc3Rh
dGUodGhyZWFkLm1hY2hUaHJlYWQoKSwgZmxhdm9yLCBzdGF0ZSwgJnVzZXJDb3VudCk7CisgICAg
dGhyZWFkLmdldFJlZ2lzdGVycyhyZWdpc3RlcnMpOwogCiAgICAgbWVzc2FnZShyZWdpc3RlcnMp
OwogCi0gICAgdGhyZWFkX3NldF9zdGF0ZSh0aHJlYWQubWFjaFRocmVhZCgpLCBmbGF2b3IsIHN0
YXRlLCB1c2VyQ291bnQpOworICAgIHRocmVhZC5zZXRSZWdpc3RlcnMocmVnaXN0ZXJzKTsKIAog
ICAgIHRocmVhZC5yZXN1bWUoKTsKICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6TWVzc2FnZVJh
bjsKIH0KIAotc3RhdGljIGJvb2wgdXNlTWFjaCA9IGZhbHNlOwotdm9pZCBkZWxpdmVyTWVzc2Fn
ZXNVc2luZ01hY2goKQotewotICAgIHVzZU1hY2ggPSB0cnVlOwotfQotCi0jZW5kaWYgLy8gSEFW
RShNQUNIX0VYQ0VQVElPTlMpCi0KLU1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VTY29wZWQoVGhy
ZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCi17Ci0jaWYgSEFWRShN
QUNIX0VYQ0VQVElPTlMpCi0gICAgaWYgKHVzZU1hY2gpCi0gICAgICAgIHJldHVybiBzZW5kTWVz
c2FnZVVzaW5nTWFjaCh0aHJlYWQsIG1lc3NhZ2UpOwotI2VuZGlmCi0gICAgcmV0dXJuIHNlbmRN
ZXNzYWdlVXNpbmdTaWduYWwodGhyZWFkLCBtZXNzYWdlKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKLQotI2VuZGlmIC8vIFVTRShQVEhSRUFEUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZE1lc3NhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuaAppbmRl
eCAzMDA0NzJiM2U3MWM0MmVjODk4NzRhM2RlMGZmMzc2MWNhOTY5MTBjLi4zYTM1MDQ4YjI2NDVh
ZTg2OGI1MDQ4YTAxMzJjOTJjZjYwNTY3ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRNZXNzYWdlLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCkBAIC0y
OSwxMyArMjksOCBAQAogI2luY2x1ZGUgPHd0Zi9TY29wZWRMYW1iZGEuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBVU0UoUFRIUkVBRFMpCi0KIG5hbWVzcGFjZSBXVEYgewog
Ci12b2lkIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpOwotCi1jbGFzcyBUaHJlYWRNZXNzYWdl
RGF0YTsKIHVzaW5nIFRocmVhZE1lc3NhZ2UgPSBTY29wZWRMYW1iZGE8dm9pZChQbGF0Zm9ybVJl
Z2lzdGVycyYpPjsKIAogZW51bSBjbGFzcyBNZXNzYWdlU3RhdHVzIHsKQEAgLTU1LDEyICs1MCw2
IEBAIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2UoVGhyZWFkJiB0YXJnZXRUaHJlYWQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmMpCiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlU2NvcGVkKHRhcmdldFRocmVh
ZCwgbGFtYmRhKTsKIH0KIAotI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQotdm9pZCBkZWxpdmVy
TWVzc2FnZXNVc2luZ01hY2goKTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNp
bmcgV1RGOjpzZW5kTWVzc2FnZTsKLQotI2VuZGlmIC8vIFVTRShQVEhSRUFEUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwCmluZGV4IDE1YTVjNjg5YWU4NTFiNmZmYTkzODNjNTFjNjZmODE1NTdkNDE4MzguLmY4
MjUyNTE4ZDMxZDMzNDRiZTFhYTI2MGQ2MjYxMDk2MjQ3MTQyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNw
cApAQCAtMTc5LDkgKzE3OSw2IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgICAg
IHd0ZlRocmVhZERhdGEoKTsKICAgICAgICAgaW5pdGlhbGl6ZURhdGVzKCk7CiAgICAgICAgIFRo
cmVhZDo6aW5pdGlhbGl6ZVBsYXRmb3JtVGhyZWFkaW5nKCk7Ci0jaWYgVVNFKFBUSFJFQURTKQot
ICAgICAgICBpbml0aWFsaXplVGhyZWFkTWVzc2FnZXMoKTsKLSNlbmRpZgogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5oCmluZGV4IDM1MTRlOGMwOWYwZmM5NGQ1MzRiZTJmM2I2ZTdjNDk1MGUwYmNm
MDUuLmM4NDI0NDc2ZmNkZGJhNWJhYjc2YTA3ZTQ5MjNjOGQ0MmJjMGFmNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Zy5oCkBAIC0xMDEsNiArMTAxLDcgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFRocmVhZD4gewogICAgIFdURl9FWFBPUlRfUFJJVkFURSBFeHBlY3RlZDx2b2lk
LCBQbGF0Zm9ybVN1c3BlbmRFcnJvcj4gc3VzcGVuZCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlc3VtZSgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZ2V0UmVnaXN0
ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0
UmVnaXN0ZXJzKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiAKICNpZiBVU0UoUFRIUkVBRFMp
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc2lnbmFsKGludCBzaWduYWxOdW1iZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IGQzNGQ3OThmMjliZjg5OTAwNDJk
YTUxOGE5Y2ZiN2ExNjNhODY4MmQuLmE2ZTIyOWExY2NlYTdjY2VlYmNjZTU4Y2EzMGU2NzVhOTkw
MTRmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKQEAgLTEzNiwxMSArMTM2
LDcgQEAgdm9pZCBUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2lnaW5m
b190Kiwgdm9pZCogdWNvbnRleHQpCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghaXNPbkFsdGVy
bmF0aXZlU2lnbmFsU3RhY2soKSwgIlVzaW5nIGFuIGFsdGVybmF0aXZlIHNpZ25hbCBzdGFjayBp
cyBub3Qgc3VwcG9ydGVkLiBDb25zaWRlciBkaXNhYmxpbmcgdGhlIGNvbmN1cnJlbnQgR0MuIik7
CiAKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKLSNpZiBDUFUoUFBDKQotICAgIHRocmVhZC0+
bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgKnVzZXJDb250ZXh0LT51
Y19tY29udGV4dC51Y19yZWdzIH07Ci0jZWxzZQotICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lz
dGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgdXNlckNvbnRleHQtPnVjX21jb250ZXh0IH07Ci0j
ZW5kaWYKKyAgICB0aHJlYWQtPm1fcGxhdGZvcm1SZWdpc3RlcnMgPSByZWdpc3RlcnNGcm9tVUNv
bnRleHQodXNlckNvbnRleHQpOwogI2Vsc2UKICAgICB0aHJlYWQtPm1fcGxhdGZvcm1SZWdpc3Rl
cnMgPSBQbGF0Zm9ybVJlZ2lzdGVycyB7IGdldEFwcHJveGltYXRlU3RhY2tQb2ludGVyKCkgfTsK
ICNlbmRpZgpAQCAtMTYwLDYgKzE1NiwxMiBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1
c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICBzaWdkZWxz
ZXQoJmJsb2NrZWRTaWduYWxTZXQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOwogICAgIHNpZ3N1
c3BlbmQoJmJsb2NrZWRTaWduYWxTZXQpOwogCisgICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgTUFD
SElORV9DT05URVhULCB3ZSBoYXZlIG5vIHdheSB0byBtb2RpZnkgUGxhdGZvcm1SZWdpc3RlcnMu
CisgICAgLy8gVGh1cywgd2UgZG8gbm90IG5lZWQgdG8gcmVzdG9yZSB0aGUgdmFsdWUgdG8gdWNv
bnRleHQuCisjaWYgSEFWRShNQUNISU5FX0NPTlRFWFQpCisgICAgcmVnaXN0ZXJzRnJvbVVDb250
ZXh0KHVzZXJDb250ZXh0KSA9IHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbmRpZgor
CiAgICAgLy8gQWxsb3cgcmVzdW1lIGNhbGxlciB0byBzZWUgdGhhdCB0aGlzIHRocmVhZCBpcyBy
ZXN1bWVkLgogICAgIHNlbV9wb3N0KCZ0aHJlYWQtPm1fc2VtYXBob3JlRm9yU3VzcGVuZFJlc3Vt
ZSk7CiB9CkBAIC0zOTMsMTIgKzM5NSwxNiBAQCB2b2lkIFRocmVhZDo6cmVzdW1lKCkKICNlbmRp
ZgogfQogCi1zaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z2lzdGVycykKLXsKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211
dGV4KTsKICNpZiBPUyhEQVJXSU4pCitzdHJ1Y3QgVGhyZWFkU3RhdGVPcHRpb24geworICAgIHVu
c2lnbmVkIHVzZXJDb3VudDsKKyAgICB0aHJlYWRfc3RhdGVfZmxhdm9yX3QgZmxhdm9yOworfTsK
Kworc3RhdGljIFRocmVhZFN0YXRlT3B0aW9uIHRocmVhZFN0YXRlT3B0aW9uKCkKK3sKICNpZiBD
UFUoWDg2KQotICAgIHVuc2lnbmVkIHVzZXJDb3VudCA9IHNpemVvZihyZWdpc3RlcnMpIC8gc2l6
ZW9mKGludCk7CisgICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9mKFBsYXRmb3JtUmVnaXN0
ZXJzKSAvIHNpemVvZihpbnQpOwogICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBp
Mzg2X1RIUkVBRF9TVEFURTsKICNlbGlmIENQVShYODZfNjQpCiAgICAgdW5zaWduZWQgdXNlckNv
dW50ID0geDg2X1RIUkVBRF9TVEFURTY0X0NPVU5UOwpAQCAtNDE4LDEzICs0MjQsMjEgQEAgc2l6
ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAj
ZWxzZQogI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAjZW5kaWYKKyAgICByZXR1cm4gVGhy
ZWFkU3RhdGVPcHRpb24geyB1c2VyQ291bnQsIGZsYXZvciB9OworfQorI2VuZGlmCiAKLSAgICBr
ZXJuX3JldHVybl90IHJlc3VsdCA9IHRocmVhZF9nZXRfc3RhdGUobV9wbGF0Zm9ybVRocmVhZCwg
Zmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ2lzdGVycywgJnVzZXJDb3VudCk7CitzaXplX3Qg
VGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKK3sKKyAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKKyNpZiBPUyhE
QVJXSU4pCisgICAgYXV0byBvcHRpb24gPSB0aHJlYWRTdGF0ZU9wdGlvbigpOworICAgIGtlcm5f
cmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dldF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFkLCBvcHRp
b24uZmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ2lzdGVycywgJm9wdGlvbi51c2VyQ291bnQp
OwogICAgIGlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKSB7CiAgICAgICAgIFdURlJlcG9ydEZh
dGFsRXJyb3IoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZVTkNUSU9OLCAiSmF2YVNj
cmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZmFpbGVkIGJlY2F1c2UgdGhyZWFkX2dldF9zdGF0ZSBy
ZXR1cm5lZCBhbiBlcnJvciAoJWQpLiBUaGlzIGlzIHByb2JhYmx5IHRoZSByZXN1bHQgb2YgcnVu
bmluZyBpbnNpZGUgUm9zZXR0YSwgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC4iLCByZXN1bHQpOwog
ICAgICAgICBDUkFTSCgpOwogICAgIH0KLSAgICByZXR1cm4gdXNlckNvdW50ICogc2l6ZW9mKHVp
bnRwdHJfdCk7CisgICAgcmV0dXJuIG9wdGlvbi51c2VyQ291bnQgKiBzaXplb2YodWludHB0cl90
KTsKICNlbHNlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N1c3BlbmRDb3VudCwgIldlIGNh
biBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhlIHRocmVhZCBpcyBzdXNwZW5kZWQuIik7CiAgICAg
cmVnaXN0ZXJzID0gbV9wbGF0Zm9ybVJlZ2lzdGVyczsKQEAgLTQzMiw2ICs0NDYsMTggQEAgc2l6
ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAj
ZW5kaWYKIH0KIAordm9pZCBUaHJlYWQ6OnNldFJlZ2lzdGVycyhjb25zdCBQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9j
a2VyKG1fbXV0ZXgpOworI2lmIE9TKERBUldJTikKKyAgICBhdXRvIG9wdGlvbiA9IHRocmVhZFN0
YXRlT3B0aW9uKCk7CisgICAgdGhyZWFkX3NldF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFkLCBvcHRp
b24uZmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ2lzdGVycywgb3B0aW9uLnVzZXJDb3VudCk7
CisjZWxzZQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9zdXNwZW5kQ291bnQsICJXZSBjYW4g
Z2V0IHJlZ2lzdGVycyBvbmx5IGlmIHRoZSB0aHJlYWQgaXMgc3VzcGVuZGVkLiIpOworICAgIG1f
cGxhdGZvcm1SZWdpc3RlcnMgPSByZWdpc3RlcnM7CisjZW5kaWYKK30KKwogdm9pZCBUaHJlYWQ6
OmVzdGFibGlzaChwdGhyZWFkX3QgaGFuZGxlKQogewogICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggNzI3
MDQ0Zjg3YmQ5YjJhY2IwMzdkNmY3YTRhMzhlNGY1ZTIwYjEzOC4uMzJiMDQ0MTE3ZGU0MDk3OGI3
MGVmYTA5YWU2N2MzNjg1YjQ0MWJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0yNTgs
NiArMjU4LDE0IEBAIHNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVnaXN0ZXJzKQogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CiB9CiAKK3ZvaWQgVGhy
ZWFkOjpzZXRSZWdpc3RlcnMoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKK3sK
KyAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKKyAgICBQ
bGF0Zm9ybVJlZ2lzdGVycyBjb250ZXh0ID0gcmVnaXN0ZXJzOworICAgIGNvbnRleHQuQ29udGV4
dEZsYWdzID0gQ09OVEVYVF9JTlRFR0VSIHwgQ09OVEVYVF9DT05UUk9MOworICAgIFNldFRocmVh
ZENvbnRleHQobV9oYW5kbGUsICZjb250ZXh0KTsKK30KKwogVGhyZWFkJiBUaHJlYWQ6OmN1cnJl
bnQoKQogewogICAgIFRocmVhZEhvbGRlciogZGF0YSA9IFRocmVhZEhvbGRlcjo6Y3VycmVudCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggNzA3Y2E5YzJkMzJhNzY4MGEzOTgz
YTgyZWNmMGI3ZDZiZmVlZWVjYS4uZDNiZTkyZWRlM2U2NTdlNmQ4NWRkZTY5NTc1NTEzMTMwZjRi
MjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0yMDAsNyArMjAwLDYgQEAg
a2Vybl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9zdGF0ZSgKIHN0YXRpYyBi
b29sIHVzZU1hY2ggeyBmYWxzZSB9Owogdm9pZCBoYW5kbGVTaWduYWxzV2l0aE1hY2goKQogewot
ICAgIGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwogICAgIHVzZU1hY2ggPSB0cnVlOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310025</attachid>
            <date>2017-05-13 12:22:23 -0700</date>
            <delta_ts>2017-06-09 04:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172073-20170514042222.patch</filename>
            <type>text/plain</type>
            <size>18987</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NjE0OTMwZTE3NGIxNjNiMDQ5NDE0ZjhjYTViMDUwMDQwY2YyODA4Li4zYzhiMjY5NzY2MzE1ZjAx
NmJkNWUwMzg0NDc1OGZjZjkyZTg1ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNS0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVy
KToKKyAgICAgICAgKiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJv
ZmlsaW5nVGltZXIpOgorCiAyMDE3LTA1LTEyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gREZHOjpOb2RlIHNob3VsZCBub3QgaGF2ZSBpdHMgb3du
IGFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCAxNjg1MzE1NGI0ZGJiZWFmODgyODBlZTliODY4YjUwYThmMjk0MjI1
Li42MzhlNjdmZDNiYzgxYWE1MWY5OTkxNjZiYTFiZDEyMmM2MjQwNWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQyIEBACisyMDE3LTA1LTEzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtXVEZdIE1ha2UgVGhyZWFkTWVzc2FnZSBwb3J0YWJsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVjZW50bHksIHdlIGNoYW5n
ZSBUaHJlYWRNZXNzYWdlIHNlbWFudGljczogbWVzc2FnZSBoYW5kbGVyCisgICAgICAgIGNhbiBi
ZSBleGVjdXRlZCBpbiB0aGUgc2VuZGVyIHRocmVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgVGhy
ZWFkTWVzc2FnZSB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHBvcnRhYmxlIHdheS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGltcGxlbWVudHMgVGhyZWFkTWVzc2FnZSBmb3IgYWxsIHRoZSBwbGF0Zm9y
bXMuCisgICAgICAgIFdlIHVzZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBUaHJlYWQgQVBJcywgc3Vz
cGVuZCgpLCByZXN1bWUoKSwKKyAgICAgICAgZ2V0UmVnaXN0ZXJzKCkgYW5kIHNldFJlZ2lzdGVy
cygpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg6CisgICAgICAgIChXVEY6
OnJlZ2lzdGVyc0Zyb21VQ29udGV4dCk6CisgICAgICAgICogd3RmL1RocmVhZE1lc3NhZ2UuY3Bw
OgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVNjb3BlZCk6CisgICAgICAgIChXVEY6OlRocmVh
ZE1lc3NhZ2VEYXRhOjpUaHJlYWRNZXNzYWdlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkTWVzc2FnZXMpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6c2VuZE1lc3NhZ2VVc2luZ01hY2gpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpk
ZWxpdmVyTWVzc2FnZXNVc2luZ01hY2gpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRN
ZXNzYWdlLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6Omlu
aXRpYWxpemVUaHJlYWRpbmcpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAg
KiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNpZ25h
bEhhbmRsZXJTdXNwZW5kUmVzdW1lKToKKyAgICAgICAgKFdURjo6dGhyZWFkU3RhdGVPcHRpb24p
OgorICAgICAgICAoV1RGOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyk6CisgICAgICAgIChXVEY6OlRo
cmVhZDo6c2V0UmVnaXN0ZXJzKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6VGhyZWFkOjpzZXRSZWdpc3RlcnMpOgorICAgICAgICAqIHd0Zi90aHJlYWRz
L1NpZ25hbHMuY3BwOgorICAgICAgICAoV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2gpOgorCiAy
MDE3LTA1LTEyICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBNYWNoIGV4Y2VwdGlvbnMgaW5zdGVhZCBvZiBzaWduYWxzIHdoZXJlIHBvc3NpYmxl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAppbmRl
eCA3NjU0MDQ0ODU5MGYyNWIzNGQ2YTYwMDMyNmFhMjQ1YjRhZmFlYzAxLi4wZTNlMmRkMjkxNGNm
ZjI4ODc0NGFhYTBlYjZhOWY5MzkxODdkNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKQEAgLTMzLDExICszMywxMCBAQAogbmFtZXNwYWNl
IEpTQyB7CiBuYW1lc3BhY2UgTWFjaGluZUNvbnRleHQgewogCi0KLXZvaWQqJiBzdGFja1BvaW50
ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9y
bVJlZ2lzdGVycyYpOwogCiAjaWYgT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQp
Cit2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiYgZnJhbWVQ
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmKTsKIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdp
c3RlcnMmKTsKQEAgLTY0LDYgKzYzLDcgQEAgdm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIo
Y29uc3QgbWNvbnRleHRfdCYpOwogI2VuZGlmIC8vIEhBVkUoTUFDSElORV9DT05URVhUKQogI2Vu
ZGlmIC8vIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogCisjaWYgT1MoV0lO
RE9XUykgfHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCiBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRl
cihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKIHsKICNpZiBPUyhEQVJXSU4pCkBAIC0xMTEsOCAr
MTExLDYgQEAgaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MpCiAKICNlbGlmIEhBVkUoTUFDSElORV9DT05URVhUKQogICAgIHJldHVybiBzdGFja1BvaW50
ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7Ci0jZWxzZQotICAgIHJldHVybiByZWdzLnN0YWNrUG9p
bnRlcjsKICNlbmRpZgogfQogCkBAIC0xMjAsNyArMTE4LDEyIEBAIGlubGluZSB2b2lkKiBzdGFj
a1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB7CiAgICAgcmV0dXJuIHN0
YWNrUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOwogfQotCisj
ZWxzZQoraW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYg
cmVncykKK3sKKyAgICByZXR1cm4gcmVncy5zdGFja1BvaW50ZXI7Cit9CisjZW5kaWYKIAogI2lm
IEhBVkUoTUFDSElORV9DT05URVhUKQogaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRl
eHRfdCYgbWFjaGluZUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvQ29kZVByb2ZpbGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29k
ZVByb2ZpbGluZy5jcHAKaW5kZXggNGQ3NGFmMjhhZDM0NGU4ZWZjZmFlMTdmNjdkZjQ3Y2M4ZWJl
NDJhMC4uNWU3ZWNhMTU1NjJmMDQzNzE5MDI1M2ViZTJkOTE3MDdiZjQ5YmM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcApAQCAtNzAsMTAgKzcw
LDEwIEBAIHN0YXRpYyB2b2lkIHNldFByb2ZpbGVUaW1lcih1bnNpZ25lZCB1c2VjKQogI2lmIEhB
VkUoTUFDSElORV9DT05URVhUKQogc3RhdGljIHZvaWQgcHJvZmlsaW5nVGltZXIoaW50LCBzaWdp
bmZvX3QqLCB2b2lkKiB1YXApCiB7Ci0gICAgbWNvbnRleHRfdCBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0OworICAgIFBsYXRmb3JtUmVnaXN0ZXJz
JiBwbGF0Zm9ybVJlZ2lzdGVycyA9IFdURjo6cmVnaXN0ZXJzRnJvbVVDb250ZXh0KHN0YXRpY19j
YXN0PHVjb250ZXh0X3QqPih1YXApKTsKICAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUoCi0gICAg
ICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCksCi0gICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKGNv
bnRleHQpKSk7CisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocGxh
dGZvcm1SZWdpc3RlcnMpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGlu
ZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihwbGF0Zm9ybVJlZ2lzdGVycykpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaAppbmRleCA4NGJkODkzNzQ5OWRhOTllYWE4NmI3
MzY5NWY3YzViODFhYzI2MGNlLi45MmNkNzg5YjBhZTQwMTU2N2JjMjdjZTRiMDhkNWY1MDIyNjg3
YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKQEAgLTc0LDcgKzc0LDExIEBAIHN0
cnVjdCBQbGF0Zm9ybVJlZ2lzdGVycyB7CiAKIGlubGluZSBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVn
aXN0ZXJzRnJvbVVDb250ZXh0KHVjb250ZXh0X3QqIHVjb250ZXh0KQogeworI2lmIENQVShQUEMp
CisgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMqPih1Y29udGV4dC0+
dWNfbWNvbnRleHQudWNfcmVncyk7CisjZWxzZQogICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFBs
YXRmb3JtUmVnaXN0ZXJzKj4oJnVjb250ZXh0LT51Y19tY29udGV4dCk7CisjZW5kaWYKIH0KIAog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwIGIvU291
cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5jcHAKaW5kZXggYjk5NGNhY2Q2MjZkNGM2Y2ZkNWMx
NjgxMDliNTViNjlkZDIzYjk5Ni4uZWY2YjlhNWE3NTkwN2FiYzQ2Mzk2ZTUxMGY1ZDhiZWFhYmU1
OGQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5jcHAKQEAgLTI2LDE0MSArMjYsMTIgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUaHJlYWRNZXNzYWdlLmgiCiAKLSNpZiBVU0Uo
UFRIUkVBRFMpCi0KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0j
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGhyZWFkcy9TaWduYWxzLmg+Ci0KLSNpZiBI
QVZFKE1BQ0hfRVhDRVBUSU9OUykKLSNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KLSNlbmRp
ZgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdXNpbmcgTm9kZSA9IExvY2tsZXNzQmFnPFRocmVhZE1l
c3NhZ2VEYXRhKj46Ok5vZGU7Ci0KLWNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUaHJlYWRNZXNzYWdlRGF0YShjb25z
dCBUaHJlYWRNZXNzYWdlJiBtKQotICAgICAgICA6IHJhbihudWxscHRyKQotICAgICAgICAsIG1l
c3NhZ2UobSkKLSAgICB7Ci0gICAgfQotCi0gICAgQXRvbWljPE5vZGUqPiByYW47Ci0gICAgY29u
c3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZTsKLX07Ci0KLWVudW0gRmlsZURlc2NyaXB0b3Igewot
ICAgIFJlYWQsCi0gICAgV3JpdGUsCi0gICAgTnVtYmVyT2ZGaWxlRGVzY3JpcHRvcnMsCi19Owot
Ci1zdGF0aWMgaW50IGZpbGVEZXNjcmlwdG9yc1tOdW1iZXJPZkZpbGVEZXNjcmlwdG9yc107Ci1z
dGF0aWMgY29uc3QgY2hhciogY29uc3QgbWFnaWNCeXRlID0gImQiOwotCi0KLXZvaWQgaW5pdGlh
bGl6ZVRocmVhZE1lc3NhZ2VzKCkKLXsKLSAgICBpbnQgcmVzdWx0ID0gcGlwZShmaWxlRGVzY3Jp
cHRvcnMpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOwotCi0gICAgaW50IGZsYWdzID0g
ZmNudGwoZmlsZURlc2NyaXB0b3JzW1dyaXRlXSwgRl9HRVRGTCk7Ci0gICAgcmVzdWx0ID0gZmNu
dGwoZmlsZURlc2NyaXB0b3JzW1dyaXRlXSwgRl9TRVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLIHwg
T19BUFBFTkQpOwotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1dyaXRlXSwgRl9H
RVRGTCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0ICE9IC0xKTsKLSAgICBSRUxFQVNFX0FT
U0VSVCgoZmxhZ3MgJiBPX05PTkJMT0NLKSAmJiAoZmxhZ3MgJiBPX0FQUEVORCkpOwotCi0gICAg
ZmxhZ3MgPSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfR0VURkwpOwotICAgIHJlc3Vs
dCA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9TRVRGTCwgZmxhZ3MgJiB+T19OT05C
TE9DSyk7Ci0gICAgZmxhZ3MgPSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfR0VURkwp
OwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCAhPSAtMSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
IShmbGFncyAmIE9fTk9OQkxPQ0spKTsKLX0KLQotU1VQUFJFU1NfQVNBTgotc3RhdGljIE1lc3Nh
Z2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ1NpZ25hbChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhy
ZWFkTWVzc2FnZSYgbWVzc2FnZSkKLXsKLSAgICBjb25zdGV4cHIgU2lnbmFsIHNpZ25hbCA9IFNp
Z25hbDo6VXNyOwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlOwotICAgIHN0ZDo6Y2Fs
bF9vbmNlKG9uY2UsIFtdIHsKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoc2lnbmFsLCBb
XSAoU2lnbmFsLCBTaWdJbmZvJiwgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykgewotICAg
ICAgICAgICAgVGhyZWFkKiB0aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnRNYXlCZU51bGwoKTsKLQot
ICAgICAgICAgICAgaWYgKCF0aHJlYWQpIHsKLSAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIldl
IHNvbWVob3cgZ290IGEgbWVzc2FnZSBvbiBhIHRocmVhZCB0aGF0IGRpZG4ndCBoYXZlIGEgV1RG
OjpUaHJlYWQgaW5pdGlhbGl6ZWQsIHdlIHByb2JhYmx5IGRlYWRsb2NrZWQsIGhhbHAuIik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6Tm90SGFuZGxlZDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgLy8gTm9kZSBzaG91bGQgYmUgZGVsZXRlZCBpbiB0aGUgc2Vu
ZGVyIHRocmVhZC4gRGVsZXRpbmcgTm9kZXMgaW4gc2lnbmFsIGhhbmRsZXIgY2F1c2VzIGRlYWQg
bG9jay4KLSAgICAgICAgICAgIHRocmVhZC0+dGhyZWFkTWVzc2FnZXMoKS5jb25zdW1lQWxsV2l0
aE5vZGUoWyZdIChUaHJlYWRNZXNzYWdlRGF0YSogZGF0YSwgTm9kZSogbm9kZSkgewotICAgICAg
ICAgICAgICAgIGRhdGEtPm1lc3NhZ2UocmVnaXN0ZXJzKTsKLSAgICAgICAgICAgICAgICAvLyBC
eSBzZXR0aW5nIHJhbiB2YXJpYWJsZSwgKDEpIHRoZSBzZW5kZXIgYWNrbm93bGVkZ2VzIHRoZSBj
b21wbGV0aW9uIGFuZAotICAgICAgICAgICAgICAgIC8vICgyKSBnZXRzIHRoZSBOb2RlIHRvIGJl
IGRlbGV0ZWQuCi0gICAgICAgICAgICAgICAgZGF0YS0+cmFuLnN0b3JlKG5vZGUpOwotICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHdoaWxlICh3cml0ZShmaWxlRGVzY3JpcHRvcnNbV3Jp
dGVdLCBtYWdpY0J5dGUsIDEpID09IC0xKQotICAgICAgICAgICAgICAgIEFTU0VSVChlcnJubyA9
PSBFQUdBSU4pOwotCi0gICAgICAgICAgICByZXR1cm4gU2lnbmFsQWN0aW9uOjpIYW5kbGVkOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLQotCi0gICAgLy8gU2luY2Ugd2UgYXJlIGd1YXJlbnRlZWQg
bm90IHRvIHJldHVybiB1bnRpbCB3ZSBnZXQgYSByZXNwb25zZSBmcm9tIHRoZSBvdGhlciB0aHJl
YWQgdGhpcyBpcyBvay4KLSAgICBUaHJlYWRNZXNzYWdlRGF0YSBkYXRhKG1lc3NhZ2UpOwotCi0g
ICAgdGhyZWFkLnRocmVhZE1lc3NhZ2VzKCkuYWRkKCZkYXRhKTsKLSAgICBib29sIHJlc3VsdCA9
IHRocmVhZC5zaWduYWwodG9TeXN0ZW1TaWduYWwoc2lnbmFsKSk7Ci0gICAgaWYgKCFyZXN1bHQp
Ci0gICAgICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpUaHJlYWRFeGl0ZWQ7Ci0gICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0KTsKLQotICAgIHN0YXRpYyBTdGF0aWNMb2NrIHJlYWRMb2NrOwotICAg
IHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKHJlYWRMb2NrKTsKLSAg
ICAgICAgY29uc3RleHByIHNpemVfdCBidWZmZXJTaXplID0gMTY7Ci0gICAgICAgIGNoYXIgYnVm
ZmVyW2J1ZmZlclNpemVdOwotCi0gICAgICAgIC8vIEl0J3MgYWx3YXlzIHNhZmUgdG8gY2xlYXIg
dGhlIHBpcGUgYmVjYXVzZSBvbmx5IG9uZSB0aHJlYWQgY2FuIGV2ZXIgYmxvY2sgdHJ5aW5nIHRv
IHJlYWQKLSAgICAgICAgLy8gZnJvbSB0aGUgcGlwZS4gVGh1cywgZWFjaCBieXRlIHdlIGNsZWFy
IGZyb20gdGhlIHBpcGUgYWN0dWFsbHkganVzdCBjb3JyZXNwb25kcyB0byBzb21lIHRhc2sKLSAg
ICAgICAgLy8gdGhhdCBoYXMgYWxyZWFkeSBmaW5pc2hlZC4gV2UgYWN0aXZlbHkgd2FudCB0byBl
bnN1cmUgdGhhdCB0aGUgcGlwZSBkb2VzIG5vdCBvdmVyZmlsbCBiZWNhdXNlCi0gICAgICAgIC8v
IG90aGVyd2lzZSBvdXIgd3JpdGVycyBtaWdodCBzcGluIHRyeWluZyB0byB3cml0ZS4KLSAgICAg
ICAgYXV0byBjbGVhclBpcGUgPSBbJl0gewotICAgICAgICAgICAgaW50IGZsYWdzID0gZmNudGwo
ZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsKLSAgICAgICAgICAgIEFTU0VSVCghKGZs
YWdzICYgT19OT05CTE9DSykpOwotICAgICAgICAgICAgZmNudGwoZmlsZURlc2NyaXB0b3JzW1Jl
YWRdLCBGX1NFVEZMLCBmbGFncyB8IE9fTk9OQkxPQ0spOwotCi0gICAgICAgICAgICB3aGlsZSAo
cmVhZChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIGJ1ZmZlciwgYnVmZmVyU2l6ZSkgIT0gLTEpIHsg
fQotICAgICAgICAgICAgQVNTRVJUKGVycm5vID09IEVBR0FJTik7Ci0KLSAgICAgICAgICAgIGZj
bnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9TRVRGTCwgZmxhZ3MpOwotICAgICAgICB9Owot
Ci0gICAgICAgIGlmIChOb2RlKiBub2RlID0gZGF0YS5yYW4ubG9hZCgpKSB7Ci0gICAgICAgICAg
ICBjbGVhclBpcGUoKTsKLSAgICAgICAgICAgIGRlbGV0ZSBub2RlOwotICAgICAgICAgICAgcmV0
dXJuIE1lc3NhZ2VTdGF0dXM6Ok1lc3NhZ2VSYW47Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQg
cmV0ID0gcmVhZChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIGJ1ZmZlciwgMSk7Ci0gICAgICAgIFVO
VVNFRF9QQVJBTShyZXQpOwotICAgICAgICBBU1NFUlQoYnVmZmVyWzBdID09IG1hZ2ljQnl0ZVsw
XSk7Ci0gICAgICAgIGNsZWFyUGlwZSgpOwotICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi1zdGF0aWMgTWVzc2Fn
ZVN0YXR1cyBzZW5kTWVzc2FnZVVzaW5nTWFjaChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFk
TWVzc2FnZSYgbWVzc2FnZSkKK01lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VTY29wZWQoVGhyZWFk
JiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCiB7CiAgICAgc3RhdGljIFN0
YXRpY0xvY2sgbWVzc2FnZUxvY2s7CiAgICAgYXV0byBsb2NraG9sZGVyID0gaG9sZExvY2sobWVz
c2FnZUxvY2spOwpAQCAtMTY5LDUyICs0MCwxNSBAQCBzdGF0aWMgTWVzc2FnZVN0YXR1cyBzZW5k
TWVzc2FnZVVzaW5nTWFjaChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbQog
ICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6VGhyZWFkRXhp
dGVkOwogCi0jaWYgQ1BVKFg4NikKLSAgICB1bnNpZ25lZCB1c2VyQ291bnQgPSBzaXplb2YoUGxh
dGZvcm1SZWdpc3RlcnMpIC8gc2l6ZW9mKGludCk7Ci0gICAgdGhyZWFkX3N0YXRlX2ZsYXZvcl90
IGZsYXZvciA9IGkzODZfVEhSRUFEX1NUQVRFOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICB1bnNp
Z25lZCB1c2VyQ291bnQgPSB4ODZfVEhSRUFEX1NUQVRFNjRfQ09VTlQ7Ci0gICAgdGhyZWFkX3N0
YXRlX2ZsYXZvcl90IGZsYXZvciA9IHg4Nl9USFJFQURfU1RBVEU2NDsKLSNlbGlmIENQVShBUk0p
Ci0gICAgdW5zaWduZWQgdXNlckNvdW50ID0gQVJNX1RIUkVBRF9TVEFURV9DT1VOVDsKLSAgICB0
aHJlYWRfc3RhdGVfZmxhdm9yX3QgZmxhdm9yID0gQVJNX1RIUkVBRF9TVEFURTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICB1bnNpZ25lZCB1c2VyQ291bnQgPSBBUk1fVEhSRUFEX1NUQVRFNjRfQ09V
TlQ7Ci0gICAgdGhyZWFkX3N0YXRlX2ZsYXZvcl90IGZsYXZvciA9IEFSTV9USFJFQURfU1RBVEU2
NDsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCiAgICAgUGxh
dGZvcm1SZWdpc3RlcnMgcmVnaXN0ZXJzOwotICAgIHRocmVhZF9zdGF0ZV90IHN0YXRlID0gcmVp
bnRlcnByZXRfY2FzdDx0aHJlYWRfc3RhdGVfdD4oJnJlZ2lzdGVycyk7Ci0gICAgdGhyZWFkX2dl
dF9zdGF0ZSh0aHJlYWQubWFjaFRocmVhZCgpLCBmbGF2b3IsIHN0YXRlLCAmdXNlckNvdW50KTsK
KyAgICB0aHJlYWQuZ2V0UmVnaXN0ZXJzKHJlZ2lzdGVycyk7CiAKICAgICBtZXNzYWdlKHJlZ2lz
dGVycyk7CiAKLSAgICB0aHJlYWRfc2V0X3N0YXRlKHRocmVhZC5tYWNoVGhyZWFkKCksIGZsYXZv
ciwgc3RhdGUsIHVzZXJDb3VudCk7CisgICAgdGhyZWFkLnNldFJlZ2lzdGVycyhyZWdpc3RlcnMp
OwogCiAgICAgdGhyZWFkLnJlc3VtZSgpOwogICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpNZXNz
YWdlUmFuOwogfQogCi1zdGF0aWMgYm9vbCB1c2VNYWNoID0gZmFsc2U7Ci12b2lkIGRlbGl2ZXJN
ZXNzYWdlc1VzaW5nTWFjaCgpCi17Ci0gICAgdXNlTWFjaCA9IHRydWU7Ci19Ci0KLSNlbmRpZiAv
LyBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKLQotTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZVNjb3Bl
ZChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKLXsKLSNpZiBI
QVZFKE1BQ0hfRVhDRVBUSU9OUykKLSAgICBpZiAodXNlTWFjaCkKLSAgICAgICAgcmV0dXJuIHNl
bmRNZXNzYWdlVXNpbmdNYWNoKHRocmVhZCwgbWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
c2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCh0aHJlYWQsIG1lc3NhZ2UpOwotfQotCi0KIH0gLy8gbmFt
ZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVGhyZWFkTWVzc2FnZS5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5o
CmluZGV4IDMwMDQ3MmIzZTcxYzQyZWM4OTg3NGEzZGUwZmYzNzYxY2E5NjkxMGMuLjNhMzUwNDhi
MjY0NWFlODY4YjUwNDhhMDEzMmM5MmNmNjA1NjdmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZE1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmgK
QEAgLTI5LDEzICsyOSw4IEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShQVEhSRUFEUykKLQogbmFtZXNwYWNlIFdU
RiB7CiAKLXZvaWQgaW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7Ci0KLWNsYXNzIFRocmVhZE1l
c3NhZ2VEYXRhOwogdXNpbmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKFBsYXRm
b3JtUmVnaXN0ZXJzJik+OwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VTdGF0dXMgewpAQCAtNTUsMTIg
KzUwLDYgQEAgTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZShUaHJlYWQmIHRhcmdldFRocmVhZCwg
Y29uc3QgRnVuY3RvciYgZnVuYykKICAgICByZXR1cm4gc2VuZE1lc3NhZ2VTY29wZWQodGFyZ2V0
VGhyZWFkLCBsYW1iZGEpOwogfQogCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi12b2lkIGRl
bGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdURgog
CiB1c2luZyBXVEY6OnNlbmRNZXNzYWdlOwotCi0jZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZGluZy5jcHAKaW5kZXggMTVhNWM2ODlhZTg1MWI2ZmZhOTM4M2M1MWM2NmY4MTU1N2Q0MTgz
OC4uZjgyNTI1MThkMzFkMzM0NGJlMWFhMjYwZDYyNjEwOTYyNDcxNDIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwCkBAIC0xNzksOSArMTc5LDYgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAg
ICAgICAgd3RmVGhyZWFkRGF0YSgpOwogICAgICAgICBpbml0aWFsaXplRGF0ZXMoKTsKICAgICAg
ICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsKLSNpZiBVU0UoUFRIUkVB
RFMpCi0gICAgICAgIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpOwotI2VuZGlmCiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmgKaW5kZXggMzUxNGU4YzA5ZjBmYzk0ZDUzNGJlMmYzYjZlN2M0OTUw
ZTBiY2YwNS4uYzg0MjQ0NzZmY2RkYmE1YmFiNzZhMDdlNDkyM2M4ZDQyYmMwYWY3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhy
ZWFkaW5nLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEV4cGVjdGVk
PHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9yPiBzdXNwZW5kKCk7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcmVzdW1lKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXRS
ZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRSZWdpc3RlcnMoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmKTsKIAogI2lmIFVTRShQVEhS
RUFEUykKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzaWduYWwoaW50IHNpZ25hbE51bWJl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggZDM0ZDc5OGYyOWJmODk5
MDA0MmRhNTE4YTljZmI3YTE2M2E4NjgyZC4uYTZlMjI5YTFjY2VhN2NjZWViY2NlNThjYTMwZTY3
NWE5OTAxNGZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtMTM2LDEx
ICsxMzYsNyBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUoaW50LCBz
aWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFpc09u
QWx0ZXJuYXRpdmVTaWduYWxTdGFjaygpLCAiVXNpbmcgYW4gYWx0ZXJuYXRpdmUgc2lnbmFsIHN0
YWNrIGlzIG5vdCBzdXBwb3J0ZWQuIENvbnNpZGVyIGRpc2FibGluZyB0aGUgY29uY3VycmVudCBH
Qy4iKTsKIAogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQotI2lmIENQVShQUEMpCi0gICAgdGhy
ZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyAqdXNlckNvbnRl
eHQtPnVjX21jb250ZXh0LnVjX3JlZ3MgfTsKLSNlbHNlCi0gICAgdGhyZWFkLT5tX3BsYXRmb3Jt
UmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyB1c2VyQ29udGV4dC0+dWNfbWNvbnRleHQg
fTsKLSNlbmRpZgorICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IHJlZ2lzdGVyc0Zy
b21VQ29udGV4dCh1c2VyQ29udGV4dCk7CiAjZWxzZQogICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJl
Z2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgZ2V0QXBwcm94aW1hdGVTdGFja1BvaW50ZXIo
KSB9OwogI2VuZGlmCkBAIC0xNjAsNiArMTU2LDEyIEBAIHZvaWQgVGhyZWFkOjpzaWduYWxIYW5k
bGVyU3VzcGVuZFJlc3VtZShpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVjb250ZXh0KQogICAgIHNp
Z2RlbHNldCgmYmxvY2tlZFNpZ25hbFNldCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAg
c2lnc3VzcGVuZCgmYmxvY2tlZFNpZ25hbFNldCk7CiAKKyAgICAvLyBJZiB3ZSBkbyBub3QgaGF2
ZSBNQUNISU5FX0NPTlRFWFQsIHdlIGhhdmUgbm8gd2F5IHRvIG1vZGlmeSBQbGF0Zm9ybVJlZ2lz
dGVycy4KKyAgICAvLyBUaHVzLCB3ZSBkbyBub3QgbmVlZCB0byByZXN0b3JlIHRoZSB2YWx1ZSB0
byB1Y29udGV4dC4KKyNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKKyAgICByZWdpc3RlcnNGcm9t
VUNvbnRleHQodXNlckNvbnRleHQpID0gdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzOworI2Vu
ZGlmCisKICAgICAvLyBBbGxvdyByZXN1bWUgY2FsbGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhyZWFk
IGlzIHJlc3VtZWQuCiAgICAgc2VtX3Bvc3QoJnRocmVhZC0+bV9zZW1hcGhvcmVGb3JTdXNwZW5k
UmVzdW1lKTsKIH0KQEAgLTM5MywxMiArMzk1LDE2IEBAIHZvaWQgVGhyZWFkOjpyZXN1bWUoKQog
I2VuZGlmCiB9CiAKLXNpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVnaXN0ZXJzKQotewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2Vy
KG1fbXV0ZXgpOwogI2lmIE9TKERBUldJTikKK3N0cnVjdCBUaHJlYWRTdGF0ZU9wdGlvbiB7Cisg
ICAgdW5zaWduZWQgdXNlckNvdW50OworICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3I7
Cit9OworCitzdGF0aWMgVGhyZWFkU3RhdGVPcHRpb24gdGhyZWFkU3RhdGVPcHRpb24oKQorewog
I2lmIENQVShYODYpCi0gICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9mKHJlZ2lzdGVycykg
LyBzaXplb2YoaW50KTsKKyAgICB1bnNpZ25lZCB1c2VyQ291bnQgPSBzaXplb2YoUGxhdGZvcm1S
ZWdpc3RlcnMpIC8gc2l6ZW9mKGludCk7CiAgICAgdGhyZWFkX3N0YXRlX2ZsYXZvcl90IGZsYXZv
ciA9IGkzODZfVEhSRUFEX1NUQVRFOwogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICB1bnNpZ25lZCB1
c2VyQ291bnQgPSB4ODZfVEhSRUFEX1NUQVRFNjRfQ09VTlQ7CkBAIC00MTgsMTMgKzQyNCwyMSBA
QCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVy
cykKICNlbHNlCiAjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKICNlbmRpZgorICAgIHJldHVy
biBUaHJlYWRTdGF0ZU9wdGlvbiB7IHVzZXJDb3VudCwgZmxhdm9yIH07Cit9CisjZW5kaWYKIAot
ICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dldF9zdGF0ZShtX3BsYXRmb3JtVGhy
ZWFkLCBmbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVnaXN0ZXJzLCAmdXNlckNvdW50KTsKK3Np
emVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQor
eworICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOworI2lm
IE9TKERBUldJTikKKyAgICBhdXRvIG9wdGlvbiA9IHRocmVhZFN0YXRlT3B0aW9uKCk7CisgICAg
a2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRfZ2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQs
IG9wdGlvbi5mbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVnaXN0ZXJzLCAmb3B0aW9uLnVzZXJD
b3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKICAgICAgICAgV1RGUmVw
b3J0RmF0YWxFcnJvcihfX0ZJTEVfXywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICJK
YXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBmYWlsZWQgYmVjYXVzZSB0aHJlYWRfZ2V0X3N0
YXRlIHJldHVybmVkIGFuIGVycm9yICglZCkuIFRoaXMgaXMgcHJvYmFibHkgdGhlIHJlc3VsdCBv
ZiBydW5uaW5nIGluc2lkZSBSb3NldHRhLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiIsIHJlc3Vs
dCk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotICAgIHJldHVybiB1c2VyQ291bnQgKiBzaXpl
b2YodWludHB0cl90KTsKKyAgICByZXR1cm4gb3B0aW9uLnVzZXJDb3VudCAqIHNpemVvZih1aW50
cHRyX3QpOwogI2Vsc2UKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fc3VzcGVuZENvdW50LCAi
V2UgY2FuIGdldCByZWdpc3RlcnMgb25seSBpZiB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4iKTsK
ICAgICByZWdpc3RlcnMgPSBtX3BsYXRmb3JtUmVnaXN0ZXJzOwpAQCAtNDMyLDYgKzQ0NiwxOCBA
QCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVy
cykKICNlbmRpZgogfQogCit2b2lkIFRocmVhZDo6c2V0UmVnaXN0ZXJzKGNvbnN0IFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdpc3RlcnMpCit7CisgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4
PiBsb2NrZXIobV9tdXRleCk7CisjaWYgT1MoREFSV0lOKQorICAgIGF1dG8gb3B0aW9uID0gdGhy
ZWFkU3RhdGVPcHRpb24oKTsKKyAgICB0aHJlYWRfc2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQs
IG9wdGlvbi5mbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVnaXN0ZXJzLCBvcHRpb24udXNlckNv
dW50KTsKKyNlbHNlCisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3N1c3BlbmRDb3VudCwgIldl
IGNhbiBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhlIHRocmVhZCBpcyBzdXNwZW5kZWQuIik7Cisg
ICAgbV9wbGF0Zm9ybVJlZ2lzdGVycyA9IHJlZ2lzdGVyczsKKyNlbmRpZgorfQorCiB2b2lkIFRo
cmVhZDo6ZXN0YWJsaXNoKHB0aHJlYWRfdCBoYW5kbGUpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9j
azxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmdXaW4uY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRl
eCA3MjcwNDRmODdiZDliMmFjYjAzN2Q2ZjdhNGEzOGU0ZjVlMjBiMTM4Li4zMmIwNDQxMTdkZTQw
OTc4YjcwZWZhMDlhZTY3YzM2ODViNDQxYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAg
LTI1OCw2ICsyNTgsMTQgQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVn
aXN0ZXJzJiByZWdpc3RlcnMpCiAgICAgcmV0dXJuIHNpemVvZihDT05URVhUKTsKIH0KIAordm9p
ZCBUaHJlYWQ6OnNldFJlZ2lzdGVycyhjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJz
KQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwor
ICAgIFBsYXRmb3JtUmVnaXN0ZXJzIGNvbnRleHQgPSByZWdpc3RlcnM7CisgICAgY29udGV4dC5D
b250ZXh0RmxhZ3MgPSBDT05URVhUX0lOVEVHRVIgfCBDT05URVhUX0NPTlRST0w7CisgICAgU2V0
VGhyZWFkQ29udGV4dChtX2hhbmRsZSwgJmNvbnRleHQpOworfQorCiBUaHJlYWQmIFRocmVhZDo6
Y3VycmVudCgpCiB7CiAgICAgVGhyZWFkSG9sZGVyKiBkYXRhID0gVGhyZWFkSG9sZGVyOjpjdXJy
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIv
U291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAppbmRleCA3MDdjYTljMmQzMmE3Njgw
YTM5ODNhODJlY2YwYjdkNmJmZWVlZWNhLi5kM2JlOTJlZGUzZTY1N2U2ZDg1ZGRlNjk1NzU1MTMx
MzBmNGIyNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTIwMCw3ICsyMDAs
NiBAQCBrZXJuX3JldHVybl90IGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlKAogc3Rh
dGljIGJvb2wgdXNlTWFjaCB7IGZhbHNlIH07CiB2b2lkIGhhbmRsZVNpZ25hbHNXaXRoTWFjaCgp
CiB7Ci0gICAgZGVsaXZlck1lc3NhZ2VzVXNpbmdNYWNoKCk7CiAgICAgdXNlTWFjaCA9IHRydWU7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312424</attachid>
            <date>2017-06-09 04:24:46 -0700</date>
            <delta_ts>2017-06-11 10:05:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172073-20170609202445.patch</filename>
            <type>text/plain</type>
            <size>17988</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MjgyODQxZWYzNWJhZDAyYzkzNGZhM2JkZjdkZjE0Y2I0NTQ0M2VhLi5hOTA3YjI1OTU1NGYwYzdj
YjMwYTdmMDM2OTljM2NmYWI5NDhjOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVy
KToKKyAgICAgICAgKiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJv
ZmlsaW5nVGltZXIpOgorCiAyMDE3LTA2LTA5ICBEYWV3b29uZyBKYW5nICA8ZGFld29vbmcuamFu
Z0BuYXZlcmNvcnAuY29tPgogCiAgICAgICAgIFJlZHVjZSBjb21waWxlciB3YXJuaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA0ZDBiZDViMGRlMTdkM2FmMzFiNDc3MTg3MmUwZjAwYjRlNTA5YjBjLi5jN2M4NjU2NzA3MGRj
YjYzM2I4MTAwMDk5NTI3Yzg5ZDMzZmEzOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA2
LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtX
VEZdIE1ha2UgVGhyZWFkTWVzc2FnZSBwb3J0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVjZW50bHksIHdlIGNoYW5nZSBUaHJlYWRNZXNzYWdl
IHNlbWFudGljczogbWVzc2FnZSBoYW5kbGVyCisgICAgICAgIGNhbiBiZSBleGVjdXRlZCBpbiB0
aGUgc2VuZGVyIHRocmVhZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgVGhyZWFkTWVzc2FnZSB0byBi
ZSBpbXBsZW1lbnRlZCBpbiBhIHBvcnRhYmxlIHdheS4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cGxlbWVudHMgVGhyZWFkTWVzc2FnZSBmb3IgYWxsIHRoZSBwbGF0Zm9ybXMuCisgICAgICAgIFdl
IHVzZSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBUaHJlYWQgQVBJcywgc3VzcGVuZCgpLCByZXN1bWUo
KSwKKyAgICAgICAgZ2V0UmVnaXN0ZXJzKCkgYW5kIHNldFJlZ2lzdGVycygpLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg6CisgICAgICAgIChXVEY6OnJlZ2lzdGVyc0Zyb21V
Q29udGV4dCk6CisgICAgICAgICogd3RmL1RocmVhZE1lc3NhZ2UuY3BwOgorICAgICAgICAoV1RG
OjpzZW5kTWVzc2FnZVNjb3BlZCk6CisgICAgICAgIChXVEY6OlRocmVhZE1lc3NhZ2VEYXRhOjpU
aHJlYWRNZXNzYWdlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjppbml0aWFsaXplVGhyZWFkTWVzc2FnZXMpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6c2VuZE1l
c3NhZ2VVc2luZ01hY2gpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpkZWxpdmVyTWVzc2FnZXNV
c2luZ01hY2gpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRNZXNzYWdlLmg6CisgICAg
ICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVUaHJlYWRp
bmcpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
UHRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpUaHJlYWQ6OnNpZ25hbEhhbmRsZXJTdXNwZW5k
UmVzdW1lKToKKyAgICAgICAgKFdURjo6dGhyZWFkU3RhdGVPcHRpb24pOgorICAgICAgICAoV1RG
OjpUaHJlYWQ6OmdldFJlZ2lzdGVycyk6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2V0UmVnaXN0
ZXJzKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6VGhy
ZWFkOjpzZXRSZWdpc3RlcnMpOgorICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuY3BwOgor
ICAgICAgICAoV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2gpOgorCiAyMDE3LTA2LTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWVk
aWFUaW1lIGNsYXNzIGhhcyByb3VuZGluZyBpc3N1ZXMgaW4gZGlmZmVyZW50IHBsYXRmb3Jtcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKaW5kZXgg
NzY1NDA0NDg1OTBmMjViMzRkNmE2MDAzMjZhYTI0NWI0YWZhZWMwMS4uMGUzZTJkZDI5MTRjZmYy
ODg3NDRhYWEwZWI2YTlmOTM5MTg3ZDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBK
U0MgewogbmFtZXNwYWNlIE1hY2hpbmVDb250ZXh0IHsKIAotCi12b2lkKiYgc3RhY2tQb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1S
ZWdpc3RlcnMmKTsKIAogI2lmIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQor
dm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwogdm9pZComIGZyYW1lUG9p
bnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwogdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJik7CiB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0
ZXJzJik7CkBAIC02NCw2ICs2Myw3IEBAIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNv
bnN0IG1jb250ZXh0X3QmKTsKICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICNlbmRp
ZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAorI2lmIE9TKFdJTkRP
V1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTExLDggKzEx
MSw2IEBAIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdz
KQogCiAjZWxpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICAgICByZXR1cm4gc3RhY2tQb2ludGVy
KHJlZ3MubWFjaGluZUNvbnRleHQpOwotI2Vsc2UKLSAgICByZXR1cm4gcmVncy5zdGFja1BvaW50
ZXI7CiAjZW5kaWYKIH0KIApAQCAtMTIwLDcgKzExOCwxMiBAQCBpbmxpbmUgdm9pZCogc3RhY2tQ
b2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogICAgIHJldHVybiBzdGFj
a1BvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKIH0KLQorI2Vs
c2UKK2lubGluZSB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MpCit7CisgICAgcmV0dXJuIHJlZ3Muc3RhY2tQb2ludGVyOworfQorI2VuZGlmCiAKICNpZiBI
QVZFKE1BQ0hJTkVfQ09OVEVYVCkKIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKG1jb250ZXh0
X3QmIG1hY2hpbmVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0NvZGVQcm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwCmluZGV4IDRkNzRhZjI4YWQzNDRlOGVmY2ZhZTE3ZjY3ZGY0N2NjOGViZTQy
YTAuLjVlN2VjYTE1NTYyZjA0MzcxOTAyNTNlYmUyZDkxNzA3YmY0OWJjNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKQEAgLTcwLDEwICs3MCwx
MCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9maWxlVGltZXIodW5zaWduZWQgdXNlYykKICNpZiBIQVZF
KE1BQ0hJTkVfQ09OVEVYVCkKIHN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5m
b190Kiwgdm9pZCogdWFwKQogewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0
PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4dDsKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYg
cGxhdGZvcm1SZWdpc3RlcnMgPSBXVEY6OnJlZ2lzdGVyc0Zyb21VQ29udGV4dChzdGF0aWNfY2Fz
dDx1Y29udGV4dF90Kj4odWFwKSk7CiAgICAgQ29kZVByb2ZpbGluZzo6c2FtcGxlKAotICAgICAg
ICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpLAotICAgICAgICBy
ZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihjb250
ZXh0KSkpOworICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHBsYXRm
b3JtUmVnaXN0ZXJzKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVD
b250ZXh0OjpmcmFtZVBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMpKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaCBiL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKaW5kZXggODRiZDg5Mzc0OTlkYTk5ZWFhODZiNzM2
OTVmN2M1YjgxYWMyNjBjZS4uOTJjZDc4OWIwYWU0MDE1NjdiYzI3Y2U0YjA4ZDVmNTAyMjY4N2Mz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCkBAIC03NCw3ICs3NCwxMSBAQCBzdHJ1
Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogCiBpbmxpbmUgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lz
dGVyc0Zyb21VQ29udGV4dCh1Y29udGV4dF90KiB1Y29udGV4dCkKIHsKKyNpZiBDUFUoUFBDKQor
ICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4odWNvbnRleHQtPnVj
X21jb250ZXh0LnVjX3JlZ3MpOworI2Vsc2UKICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxQbGF0
Zm9ybVJlZ2lzdGVycyo+KCZ1Y29udGV4dC0+dWNfbWNvbnRleHQpOworI2VuZGlmCiB9CiAKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IDY0ZTc3NWU3NWQwMmIxNDM4MjJkYTcx
N2RkZTQ4MzZiMjMwODAyMzEuLjU2ZDZiY2Y3ZDUyZWNlYTM4YWI0ZTg2ODRlNGM2MjM1NjAwMmU2
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0yNiwxNDEgKzI2LDEyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkTWVzc2FnZS5oIgogCi0jaWYgVVNFKFBU
SFJFQURTKQotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lu
Y2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvTG9ja2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgotCi0jaWYgSEFW
RShNQUNIX0VYQ0VQVElPTlMpCi0jaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+Ci0jZW5kaWYK
IAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIE5vZGUgPSBMb2NrbGVzc0JhZzxUaHJlYWRNZXNz
YWdlRGF0YSo+OjpOb2RlOwotCi1jbGFzcyBUaHJlYWRNZXNzYWdlRGF0YSB7Ci0gICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGhyZWFkTWVzc2FnZURhdGEoY29uc3Qg
VGhyZWFkTWVzc2FnZSYgbSkKLSAgICAgICAgOiByYW4obnVsbHB0cikKLSAgICAgICAgLCBtZXNz
YWdlKG0pCi0gICAgewotICAgIH0KLQotICAgIEF0b21pYzxOb2RlKj4gcmFuOwotICAgIGNvbnN0
IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2U7Ci19OwotCi1lbnVtIEZpbGVEZXNjcmlwdG9yIHsKLSAg
ICBSZWFkLAotICAgIFdyaXRlLAotICAgIE51bWJlck9mRmlsZURlc2NyaXB0b3JzLAotfTsKLQot
c3RhdGljIGludCBmaWxlRGVzY3JpcHRvcnNbTnVtYmVyT2ZGaWxlRGVzY3JpcHRvcnNdOwotc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IG1hZ2ljQnl0ZSA9ICJkIjsKLQotCi12b2lkIGluaXRpYWxp
emVUaHJlYWRNZXNzYWdlcygpCi17Ci0gICAgaW50IHJlc3VsdCA9IHBpcGUoZmlsZURlc2NyaXB0
b3JzKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKLQotICAgIGludCBmbGFncyA9IGZj
bnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwpOwotICAgIHJlc3VsdCA9IGZjbnRs
KGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfU0VURkwsIGZsYWdzIHwgT19OT05CTE9DSyB8IE9f
QVBQRU5EKTsKLSAgICBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VU
RkwpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCAhPSAtMSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoKGZsYWdzICYgT19OT05CTE9DSykgJiYgKGZsYWdzICYgT19BUFBFTkQpKTsKLQotICAgIGZs
YWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsKLSAgICByZXN1bHQg
PSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdzICYgfk9fTk9OQkxP
Q0spOwotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgIT0gLTEpOwotICAgIFJFTEVBU0VfQVNTRVJUKCEo
ZmxhZ3MgJiBPX05PTkJMT0NLKSk7Ci19Ci0KLVNVUFBSRVNTX0FTQU4KLXN0YXRpYyBNZXNzYWdl
U3RhdHVzIHNlbmRNZXNzYWdlVXNpbmdTaWduYWwoVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVh
ZE1lc3NhZ2UmIG1lc3NhZ2UpCi17Ci0gICAgY29uc3RleHByIFNpZ25hbCBzaWduYWwgPSBTaWdu
YWw6OlVzcjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNhbGxf
b25jZShvbmNlLCBbXSB7Ci0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKHNpZ25hbCwgW10g
KFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIHsKLSAgICAg
ICAgICAgIFRocmVhZCogdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50TWF5QmVOdWxsKCk7Ci0KLSAg
ICAgICAgICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXZSBz
b21laG93IGdvdCBhIG1lc3NhZ2Ugb24gYSB0aHJlYWQgdGhhdCBkaWRuJ3QgaGF2ZSBhIFdURjo6
VGhyZWFkIGluaXRpYWxpemVkLCB3ZSBwcm9iYWJseSBkZWFkbG9ja2VkLCBoYWxwLiIpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIE5vZGUgc2hvdWxkIGJlIGRlbGV0ZWQgaW4gdGhlIHNlbmRl
ciB0aHJlYWQuIERlbGV0aW5nIE5vZGVzIGluIHNpZ25hbCBoYW5kbGVyIGNhdXNlcyBkZWFkIGxv
Y2suCi0gICAgICAgICAgICB0aHJlYWQtPnRocmVhZE1lc3NhZ2VzKCkuY29uc3VtZUFsbFdpdGhO
b2RlKFsmXSAoVGhyZWFkTWVzc2FnZURhdGEqIGRhdGEsIE5vZGUqIG5vZGUpIHsKLSAgICAgICAg
ICAgICAgICBkYXRhLT5tZXNzYWdlKHJlZ2lzdGVycyk7Ci0gICAgICAgICAgICAgICAgLy8gQnkg
c2V0dGluZyByYW4gdmFyaWFibGUsICgxKSB0aGUgc2VuZGVyIGFja25vd2xlZGdlcyB0aGUgY29t
cGxldGlvbiBhbmQKLSAgICAgICAgICAgICAgICAvLyAoMikgZ2V0cyB0aGUgTm9kZSB0byBiZSBk
ZWxldGVkLgotICAgICAgICAgICAgICAgIGRhdGEtPnJhbi5zdG9yZShub2RlKTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgICAgICB3aGlsZSAod3JpdGUoZmlsZURlc2NyaXB0b3JzW1dyaXRl
XSwgbWFnaWNCeXRlLCAxKSA9PSAtMSkKLSAgICAgICAgICAgICAgICBBU1NFUlQoZXJybm8gPT0g
RUFHQUlOKTsKLQotICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKLSAg
ICAgICAgfSk7Ci0gICAgfSk7Ci0KLQotICAgIC8vIFNpbmNlIHdlIGFyZSBndWFyZW50ZWVkIG5v
dCB0byByZXR1cm4gdW50aWwgd2UgZ2V0IGEgcmVzcG9uc2UgZnJvbSB0aGUgb3RoZXIgdGhyZWFk
IHRoaXMgaXMgb2suCi0gICAgVGhyZWFkTWVzc2FnZURhdGEgZGF0YShtZXNzYWdlKTsKLQotICAg
IHRocmVhZC50aHJlYWRNZXNzYWdlcygpLmFkZCgmZGF0YSk7Ci0gICAgYm9vbCByZXN1bHQgPSB0
aHJlYWQuc2lnbmFsKHRvU3lzdGVtU2lnbmFsKHNpZ25hbCkpOwotICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6VGhyZWFkRXhpdGVkOwotICAgIFJFTEVBU0Vf
QVNTRVJUKHJlc3VsdCk7Ci0KLSAgICBzdGF0aWMgU3RhdGljTG9jayByZWFkTG9jazsKLSAgICB3
aGlsZSAodHJ1ZSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihyZWFkTG9jayk7Ci0gICAg
ICAgIGNvbnN0ZXhwciBzaXplX3QgYnVmZmVyU2l6ZSA9IDE2OwotICAgICAgICBjaGFyIGJ1ZmZl
cltidWZmZXJTaXplXTsKLQotICAgICAgICAvLyBJdCdzIGFsd2F5cyBzYWZlIHRvIGNsZWFyIHRo
ZSBwaXBlIGJlY2F1c2Ugb25seSBvbmUgdGhyZWFkIGNhbiBldmVyIGJsb2NrIHRyeWluZyB0byBy
ZWFkCi0gICAgICAgIC8vIGZyb20gdGhlIHBpcGUuIFRodXMsIGVhY2ggYnl0ZSB3ZSBjbGVhciBm
cm9tIHRoZSBwaXBlIGFjdHVhbGx5IGp1c3QgY29ycmVzcG9uZHMgdG8gc29tZSB0YXNrCi0gICAg
ICAgIC8vIHRoYXQgaGFzIGFscmVhZHkgZmluaXNoZWQuIFdlIGFjdGl2ZWx5IHdhbnQgdG8gZW5z
dXJlIHRoYXQgdGhlIHBpcGUgZG9lcyBub3Qgb3ZlcmZpbGwgYmVjYXVzZQotICAgICAgICAvLyBv
dGhlcndpc2Ugb3VyIHdyaXRlcnMgbWlnaHQgc3BpbiB0cnlpbmcgdG8gd3JpdGUuCi0gICAgICAg
IGF1dG8gY2xlYXJQaXBlID0gWyZdIHsKLSAgICAgICAgICAgIGludCBmbGFncyA9IGZjbnRsKGZp
bGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9HRVRGTCk7Ci0gICAgICAgICAgICBBU1NFUlQoIShmbGFn
cyAmIE9fTk9OQkxPQ0spKTsKLSAgICAgICAgICAgIGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFk
XSwgRl9TRVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLKTsKLQotICAgICAgICAgICAgd2hpbGUgKHJl
YWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIGJ1ZmZlclNpemUpICE9IC0xKSB7IH0K
LSAgICAgICAgICAgIEFTU0VSVChlcnJubyA9PSBFQUdBSU4pOwotCi0gICAgICAgICAgICBmY250
bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdzKTsKLSAgICAgICAgfTsKLQot
ICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGRhdGEucmFuLmxvYWQoKSkgewotICAgICAgICAgICAg
Y2xlYXJQaXBlKCk7Ci0gICAgICAgICAgICBkZWxldGUgbm9kZTsKLSAgICAgICAgICAgIHJldHVy
biBNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHJl
dCA9IHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIDEpOwotICAgICAgICBVTlVT
RURfUEFSQU0ocmV0KTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlclswXSA9PSBtYWdpY0J5dGVbMF0p
OwotICAgICAgICBjbGVhclBpcGUoKTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQotc3RhdGljIE1lc3NhZ2VT
dGF0dXMgc2VuZE1lc3NhZ2VVc2luZ01hY2goVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1l
c3NhZ2UmIG1lc3NhZ2UpCitNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYg
dGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogewogICAgIHN0YXRpYyBTdGF0
aWNMb2NrIG1lc3NhZ2VMb2NrOwogICAgIGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3Nh
Z2VMb2NrKTsKQEAgLTE3OCwyNCArNDksNCBAQCBzdGF0aWMgTWVzc2FnZVN0YXR1cyBzZW5kTWVz
c2FnZVVzaW5nTWFjaChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbQogICAg
IHJldHVybiBNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuOwogfQogCi1zdGF0aWMgYm9vbCB1c2VN
YWNoID0gZmFsc2U7Ci12b2lkIGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpCi17Ci0gICAgdXNl
TWFjaCA9IHRydWU7Ci19Ci0KLSNlbmRpZiAvLyBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKLQotTWVz
c2FnZVN0YXR1cyBzZW5kTWVzc2FnZVNjb3BlZChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFk
TWVzc2FnZSYgbWVzc2FnZSkKLXsKLSNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKLSAgICBpZiAo
dXNlTWFjaCkKLSAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlVXNpbmdNYWNoKHRocmVhZCwgbWVz
c2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gc2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCh0aHJlYWQs
IG1lc3NhZ2UpOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gVVNFKFBU
SFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oIGIvU291
cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCmluZGV4IDBmNzQ1NTEyOTQ2Mzc0Njc3YWNmMWI3
MGRjNjYyMzU4YTM4NGZkNjAuLmI2YzhlMmJjODNlOGQxMGFiZmRkMzRjZGQwYmFhODlmZmI5NmUw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmgKQEAgLTI5LDEzICsyOSw4IEBACiAjaW5jbHVkZSA8
d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVT
RShQVEhSRUFEUykKLQogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgaW5pdGlhbGl6ZVRocmVhZE1l
c3NhZ2VzKCk7Ci0KLWNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwogdXNpbmcgVGhyZWFkTWVzc2Fn
ZSA9IFNjb3BlZExhbWJkYTx2b2lkKFBsYXRmb3JtUmVnaXN0ZXJzJik+OwogCiBlbnVtIGNsYXNz
IE1lc3NhZ2VTdGF0dXMgewpAQCAtNTUsMTIgKzUwLDYgQEAgTWVzc2FnZVN0YXR1cyBzZW5kTWVz
c2FnZShUaHJlYWQmIHRhcmdldFRocmVhZCwgY29uc3QgRnVuY3RvciYgZnVuYykKICAgICByZXR1
cm4gc2VuZE1lc3NhZ2VTY29wZWQodGFyZ2V0VGhyZWFkLCBsYW1iZGEpOwogfQogCi0jaWYgSEFW
RShNQUNIX0VYQ0VQVElPTlMpCi12b2lkIGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OnNlbmRNZXNzYWdlOwotCi0j
ZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggMTVhNWM2ODlhZTg1
MWI2ZmZhOTM4M2M1MWM2NmY4MTU1N2Q0MTgzOC4uZjgyNTI1MThkMzFkMzM0NGJlMWFhMjYwZDYy
NjEwOTYyNDcxNDIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0xNzksOSArMTc5LDYgQEAgdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICAgICAgd3RmVGhyZWFkRGF0YSgpOwogICAgICAg
ICBpbml0aWFsaXplRGF0ZXMoKTsKICAgICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1U
aHJlYWRpbmcoKTsKLSNpZiBVU0UoUFRIUkVBRFMpCi0gICAgICAgIGluaXRpYWxpemVUaHJlYWRN
ZXNzYWdlcygpOwotI2VuZGlmCiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggMzUxNGU4
YzA5ZjBmYzk0ZDUzNGJlMmYzYjZlN2M0OTUwZTBiY2YwNS4uYzg0MjQ0NzZmY2RkYmE1YmFiNzZh
MDdlNDkyM2M4ZDQyYmMwYWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBj
bGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIEV4cGVjdGVkPHZvaWQsIFBsYXRmb3JtU3VzcGVuZEVycm9yPiBz
dXNwZW5kKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzdW1lKCk7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCBnZXRSZWdpc3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZWdpc3RlcnMoY29uc3QgUGxhdGZvcm1S
ZWdpc3RlcnMmKTsKIAogI2lmIFVTRShQVEhSRUFEUykKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBzaWduYWwoaW50IHNpZ25hbE51bWJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAKaW5kZXggZjkwNGE5MzkzMDYwMGM0MDBjNDY3N2JiZTI3ZGIxYWU5ZDhjYTQ0Yi4uMGJj
NDM0NThiODY0ZTFiNjFmMGJkZWVlZDhjOTE1NTczZGY0MTBkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZ1B0aHJlYWRzLmNwcApAQCAtMTQ1LDExICsxNDUsNyBAQCB2b2lkIFRocmVhZDo6c2lnbmFs
SGFuZGxlclN1c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFpc09uQWx0ZXJuYXRpdmVTaWduYWxTdGFjaygpLCAiVXNp
bmcgYW4gYWx0ZXJuYXRpdmUgc2lnbmFsIHN0YWNrIGlzIG5vdCBzdXBwb3J0ZWQuIENvbnNpZGVy
IGRpc2FibGluZyB0aGUgY29uY3VycmVudCBHQy4iKTsKIAogI2lmIEhBVkUoTUFDSElORV9DT05U
RVhUKQotI2lmIENQVShQUEMpCi0gICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxh
dGZvcm1SZWdpc3RlcnMgeyAqdXNlckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3MgfTsKLSNl
bHNlCi0gICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMg
eyB1c2VyQ29udGV4dC0+dWNfbWNvbnRleHQgfTsKLSNlbmRpZgorICAgIHRocmVhZC0+bV9wbGF0
Zm9ybVJlZ2lzdGVycyA9IHJlZ2lzdGVyc0Zyb21VQ29udGV4dCh1c2VyQ29udGV4dCk7CiAjZWxz
ZQogICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsg
Z2V0QXBwcm94aW1hdGVTdGFja1BvaW50ZXIoKSB9OwogI2VuZGlmCkBAIC0xNjksNiArMTY1LDEy
IEBAIHZvaWQgVGhyZWFkOjpzaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZShpbnQsIHNpZ2luZm9f
dCosIHZvaWQqIHVjb250ZXh0KQogICAgIHNpZ2RlbHNldCgmYmxvY2tlZFNpZ25hbFNldCwgU2ln
VGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgc2lnc3VzcGVuZCgmYmxvY2tlZFNpZ25hbFNldCk7
CiAKKyAgICAvLyBJZiB3ZSBkbyBub3QgaGF2ZSBNQUNISU5FX0NPTlRFWFQsIHdlIGhhdmUgbm8g
d2F5IHRvIG1vZGlmeSBQbGF0Zm9ybVJlZ2lzdGVycy4KKyAgICAvLyBUaHVzLCB3ZSBkbyBub3Qg
bmVlZCB0byByZXN0b3JlIHRoZSB2YWx1ZSB0byB1Y29udGV4dC4KKyNpZiBIQVZFKE1BQ0hJTkVf
Q09OVEVYVCkKKyAgICByZWdpc3RlcnNGcm9tVUNvbnRleHQodXNlckNvbnRleHQpID0gdGhyZWFk
LT5tX3BsYXRmb3JtUmVnaXN0ZXJzOworI2VuZGlmCisKICAgICAvLyBBbGxvdyByZXN1bWUgY2Fs
bGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhyZWFkIGlzIHJlc3VtZWQuCiAgICAgc2VtX3Bvc3QoJnRo
cmVhZC0+bV9zZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lKTsKIH0KQEAgLTQwMiwxMiArNDA0LDE2
IEBAIHZvaWQgVGhyZWFkOjpyZXN1bWUoKQogI2VuZGlmCiB9CiAKLXNpemVfdCBUaHJlYWQ6Omdl
dFJlZ2lzdGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQotewotICAgIHN0ZDo6dW5p
cXVlX2xvY2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOwogI2lmIE9TKERBUldJTikKK3N0
cnVjdCBUaHJlYWRTdGF0ZU9wdGlvbiB7CisgICAgdW5zaWduZWQgdXNlckNvdW50OworICAgIHRo
cmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3I7Cit9OworCitzdGF0aWMgVGhyZWFkU3RhdGVPcHRp
b24gdGhyZWFkU3RhdGVPcHRpb24oKQorewogI2lmIENQVShYODYpCi0gICAgdW5zaWduZWQgdXNl
ckNvdW50ID0gc2l6ZW9mKHJlZ2lzdGVycykgLyBzaXplb2YoaW50KTsKKyAgICB1bnNpZ25lZCB1
c2VyQ291bnQgPSBzaXplb2YoUGxhdGZvcm1SZWdpc3RlcnMpIC8gc2l6ZW9mKGludCk7CiAgICAg
dGhyZWFkX3N0YXRlX2ZsYXZvcl90IGZsYXZvciA9IGkzODZfVEhSRUFEX1NUQVRFOwogI2VsaWYg
Q1BVKFg4Nl82NCkKICAgICB1bnNpZ25lZCB1c2VyQ291bnQgPSB4ODZfVEhSRUFEX1NUQVRFNjRf
Q09VTlQ7CkBAIC00MjcsMTMgKzQzMywyMSBAQCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKICNlbHNlCiAjZXJyb3IgVW5rbm93biBBcmNo
aXRlY3R1cmUKICNlbmRpZgorICAgIHJldHVybiBUaHJlYWRTdGF0ZU9wdGlvbiB7IHVzZXJDb3Vu
dCwgZmxhdm9yIH07Cit9CisjZW5kaWYKIAotICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhy
ZWFkX2dldF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFkLCBmbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkm
cmVnaXN0ZXJzLCAmdXNlckNvdW50KTsKK3NpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0
Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjpt
dXRleD4gbG9ja2VyKG1fbXV0ZXgpOworI2lmIE9TKERBUldJTikKKyAgICBhdXRvIG9wdGlvbiA9
IHRocmVhZFN0YXRlT3B0aW9uKCk7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRf
Z2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG9wdGlvbi5mbGF2b3IsICh0aHJlYWRfc3RhdGVf
dCkmcmVnaXN0ZXJzLCAmb3B0aW9uLnVzZXJDb3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJO
X1NVQ0NFU1MpIHsKICAgICAgICAgV1RGUmVwb3J0RmF0YWxFcnJvcihfX0ZJTEVfXywgX19MSU5F
X18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBm
YWlsZWQgYmVjYXVzZSB0aHJlYWRfZ2V0X3N0YXRlIHJldHVybmVkIGFuIGVycm9yICglZCkuIFRo
aXMgaXMgcHJvYmFibHkgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGluc2lkZSBSb3NldHRhLCB3aGlj
aCBpcyBub3Qgc3VwcG9ydGVkLiIsIHJlc3VsdCk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQot
ICAgIHJldHVybiB1c2VyQ291bnQgKiBzaXplb2YodWludHB0cl90KTsKKyAgICByZXR1cm4gb3B0
aW9uLnVzZXJDb3VudCAqIHNpemVvZih1aW50cHRyX3QpOwogI2Vsc2UKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKG1fc3VzcGVuZENvdW50LCAiV2UgY2FuIGdldCByZWdpc3RlcnMgb25seSBpZiB0
aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4iKTsKICAgICByZWdpc3RlcnMgPSBtX3BsYXRmb3JtUmVn
aXN0ZXJzOwpAQCAtNDQxLDYgKzQ1NSwxOCBAQCBzaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKICNlbmRpZgogfQogCit2b2lkIFRocmVhZDo6
c2V0UmVnaXN0ZXJzKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCit7CisgICAg
c3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7CisjaWYgT1MoREFS
V0lOKQorICAgIGF1dG8gb3B0aW9uID0gdGhyZWFkU3RhdGVPcHRpb24oKTsKKyAgICB0aHJlYWRf
c2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG9wdGlvbi5mbGF2b3IsICh0aHJlYWRfc3RhdGVf
dCkmcmVnaXN0ZXJzLCBvcHRpb24udXNlckNvdW50KTsKKyNlbHNlCisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShtX3N1c3BlbmRDb3VudCwgIldlIGNhbiBnZXQgcmVnaXN0ZXJzIG9ubHkgaWYgdGhl
IHRocmVhZCBpcyBzdXNwZW5kZWQuIik7CisgICAgbV9wbGF0Zm9ybVJlZ2lzdGVycyA9IHJlZ2lz
dGVyczsKKyNlbmRpZgorfQorCiB2b2lkIFRocmVhZDo6ZXN0YWJsaXNoKHB0aHJlYWRfdCBoYW5k
bGUpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrZXIobV9tdXRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRleCA4OTE2ODE5ZTFmNWEyNjY4Nzk2MDJhOTJiN2Nj
Y2RmOTU4ZGFkYTQ0Li40ZGE5MjE0NTFjZGIzZjI0MmEzOGM2ZDkzYTRmOWYxM2YwMGU2MDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAgLTI1OCw2ICsyNTgsMTQgQEAgc2l6ZV90IFRocmVh
ZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAgICAgcmV0dXJu
IHNpemVvZihDT05URVhUKTsKIH0KIAordm9pZCBUaHJlYWQ6OnNldFJlZ2lzdGVycyhjb25zdCBQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3Rk
OjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOworICAgIFBsYXRmb3JtUmVnaXN0ZXJzIGNvbnRleHQg
PSByZWdpc3RlcnM7CisgICAgY29udGV4dC5Db250ZXh0RmxhZ3MgPSBDT05URVhUX0lOVEVHRVIg
fCBDT05URVhUX0NPTlRST0w7CisgICAgU2V0VGhyZWFkQ29udGV4dChtX2hhbmRsZSwgJmNvbnRl
eHQpOworfQorCiBUaHJlYWQmIFRocmVhZDo6Y3VycmVudCgpCiB7CiAgICAgVGhyZWFkSG9sZGVy
KiBkYXRhID0gVGhyZWFkSG9sZGVyOjpjdXJyZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxz
LmNwcAppbmRleCA3ZjI0NzA2NWVlZDVjMWYwYjAzNTM4YTM4MWI1ODkzMDUwNWUyMjIwLi5mOTI5
OTUyYTRhMTM4MzcxNjJmZmNlMzk1ZTI0OTJjZGI0MDJjZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMv
U2lnbmFscy5jcHAKQEAgLTIwOCw3ICsyMDgsNiBAQCBrZXJuX3JldHVybl90IGNhdGNoX21hY2hf
ZXhjZXB0aW9uX3JhaXNlX3N0YXRlKAogc3RhdGljIGJvb2wgdXNlTWFjaCB7IGZhbHNlIH07CiB2
b2lkIGhhbmRsZVNpZ25hbHNXaXRoTWFjaCgpCiB7Ci0gICAgZGVsaXZlck1lc3NhZ2VzVXNpbmdN
YWNoKCk7CiAgICAgdXNlTWFjaCA9IHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312605</attachid>
            <date>2017-06-11 10:05:08 -0700</date>
            <delta_ts>2017-06-11 10:06:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172073-20170612020507.patch</filename>
            <type>text/plain</type>
            <size>16603</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MjZjNmQzYzc3NmY5ZWI3YzQxODMxMGZlODdmMDNjNTQ5OGRkODc3Li5jMmFlMzkzZjE1NTlkMGE3
NTlkNzIwY2FmZjkzYTFlY2ZiMTExMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVy
KToKKyAgICAgICAgKiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJv
ZmlsaW5nVGltZXIpOgorCiAyMDE3LTA2LTExICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KIAogICAgICAgICBVbnJldmlld2VkLCBhdHRlbXB0IHRvIGZpeCBKU0MgdGVz
dHMgb24gV2luIGFmdGVyIHIyMTc3NzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMzAwYzIzYWFlZGMzYjQ4Nzc2MTBhNDQ4Y2Jm
NGVhZDg0OTVhZDVhMC4uY2U3MWNiZDI2ODE4YTM0NWEzODIzYWE4NmQyNjE1OWI1ZmU2NzE4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw0MiBAQAogMjAxNy0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFi
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY2Vu
dGx5LCB3ZSBjaGFuZ2UgVGhyZWFkTWVzc2FnZSBzZW1hbnRpY3M6IG1lc3NhZ2UgaGFuZGxlcgor
ICAgICAgICBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIHNlbmRlciB0aHJlYWQuCisgICAgICAgIFRo
aXMgYWxsb3dzIFRocmVhZE1lc3NhZ2UgdG8gYmUgaW1wbGVtZW50ZWQgaW4gYSBwb3J0YWJsZSB3
YXkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRocmVhZE1lc3NhZ2UgZm9yIGFs
bCB0aGUgcGxhdGZvcm1zLgorICAgICAgICBXZSB1c2UgcGxhdGZvcm0taW5kZXBlbmRlbnQgVGhy
ZWFkIEFQSXMsIHN1c3BlbmQoKSwgcmVzdW1lKCksCisgICAgICAgIGdldFJlZ2lzdGVycygpIGFu
ZCBzZXRSZWdpc3RlcnMoKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oOgor
ICAgICAgICAoV1RGOjpyZWdpc3RlcnNGcm9tVUNvbnRleHQpOgorICAgICAgICAqIHd0Zi9UaHJl
YWRNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VTY29wZWQpOgorICAgICAg
ICAoV1RGOjpUaHJlYWRNZXNzYWdlRGF0YTo6VGhyZWFkTWVzc2FnZURhdGEpOiBEZWxldGVkLgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZE1lc3Nh
Z2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OnNlbmRNZXNzYWdlVXNpbmdNYWNoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6ZGVsaXZlck1lc3NhZ2VzVXNpbmdNYWNoKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvVGhyZWFkTWVzc2FnZS5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAg
ICAgICAoV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5n
Lmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6dGhyZWFkTWVzc2FnZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6
c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUpOgorICAgICAgICAoV1RGOjp0aHJlYWRTdGF0ZU9w
dGlvbik6CisgICAgICAgIChXVEY6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKToKKyAgICAgICAgKiB3
dGYvdGhyZWFkcy9TaWduYWxzLmNwcDoKKyAgICAgICAgKFdURjo6aGFuZGxlU2lnbmFsc1dpdGhN
YWNoKToKKworMjAxNy0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKwogICAgICAgICBbV1RGXSBEcm9wIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGluIFRocmVhZGlu
Zy5oCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMx
NjcKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNv
bnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgK
aW5kZXggNzY1NDA0NDg1OTBmMjViMzRkNmE2MDAzMjZhYTI0NWI0YWZhZWMwMS4uOTUwODBiOTJk
ZmViZDAwYTJlNGVhOWQ2ZmYxMjUyZTg1NmI4NGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVz
cGFjZSBKU0MgewogbmFtZXNwYWNlIE1hY2hpbmVDb250ZXh0IHsKIAotCi12b2lkKiYgc3RhY2tQ
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmKTsKIAogI2lmIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05U
RVhUKQordm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwogdm9pZComIGZy
YW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwogdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0
IFBsYXRmb3JtUmVnaXN0ZXJzJik7CiB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3Jt
UmVnaXN0ZXJzJik7CkBAIC02NCw2ICs2Myw3IEBAIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKGNvbnN0IG1jb250ZXh0X3QmKTsKICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkK
ICNlbmRpZiAvLyBPUyhXSU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAorI2lmIE9T
KFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQogaW5saW5lIHZvaWQqJiBzdGFja1Bv
aW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTEx
LDggKzExMSw2IEBAIGlubGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdzKQogCiAjZWxpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICAgICByZXR1cm4gc3RhY2tQ
b2ludGVyKHJlZ3MubWFjaGluZUNvbnRleHQpOwotI2Vsc2UKLSAgICByZXR1cm4gcmVncy5zdGFj
a1BvaW50ZXI7CiAjZW5kaWYKIH0KIApAQCAtMTIwLDcgKzExOCwxMiBAQCBpbmxpbmUgdm9pZCog
c3RhY2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogICAgIHJldHVy
biBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKIH0K
LQorI2Vsc2UgLy8gbm90IE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQoraW5s
aW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sK
KyAgICByZXR1cm4gcmVncy5zdGFja1BvaW50ZXI7Cit9CisjZW5kaWYgLy8gT1MoV0lORE9XUykg
fHwgSEFWRShNQUNISU5FX0NPTlRFWFQpCiAKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIGlu
bGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCmluZGV4IDRkNzRh
ZjI4YWQzNDRlOGVmY2ZhZTE3ZjY3ZGY0N2NjOGViZTQyYTAuLjVlN2VjYTE1NTYyZjA0MzcxOTAy
NTNlYmUyZDkxNzA3YmY0OWJjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGluZy5jcHAKQEAgLTcwLDEwICs3MCwxMCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9m
aWxlVGltZXIodW5zaWduZWQgdXNlYykKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIHN0YXRp
YyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewotICAg
IG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19t
Y29udGV4dDsKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcGxhdGZvcm1SZWdpc3RlcnMgPSBXVEY6
OnJlZ2lzdGVyc0Zyb21VQ29udGV4dChzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKSk7CiAg
ICAgQ29kZVByb2ZpbGluZzo6c2FtcGxlKAotICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnRleHQpLAotICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4o
TWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOworICAgICAgICBNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHBsYXRmb3JtUmVnaXN0ZXJzKSwKKyAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocGxh
dGZvcm1SZWdpc3RlcnMpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1SZWdpc3RlcnMuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJz
LmgKaW5kZXggODRiZDg5Mzc0OTlkYTk5ZWFhODZiNzM2OTVmN2M1YjgxYWMyNjBjZS4uOTJjZDc4
OWIwYWU0MDE1NjdiYzI3Y2U0YjA4ZDVmNTAyMjY4N2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJl
Z2lzdGVycy5oCkBAIC03NCw3ICs3NCwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewog
CiBpbmxpbmUgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVyc0Zyb21VQ29udGV4dCh1Y29udGV4
dF90KiB1Y29udGV4dCkKIHsKKyNpZiBDUFUoUFBDKQorICAgIHJldHVybiAqYml0d2lzZV9jYXN0
PFBsYXRmb3JtUmVnaXN0ZXJzKj4odWNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3MpOworI2Vs
c2UKICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyo+KCZ1Y29udGV4
dC0+dWNfbWNvbnRleHQpOworI2VuZGlmCiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2Uu
Y3BwCmluZGV4IDY0ZTc3NWU3NWQwMmIxNDM4MjJkYTcxN2RkZTQ4MzZiMjMwODAyMzEuLjU2ZDZi
Y2Y3ZDUyZWNlYTM4YWI0ZTg2ODRlNGM2MjM1NjAwMmU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3Nh
Z2UuY3BwCkBAIC0yNiwxNDEgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkTWVzc2FnZS5oIgogCi0jaWYgVVNFKFBUSFJFQURTKQotCi0jaW5jbHVkZSA8ZmNu
dGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RocmVhZHMvU2lnbmFscy5oPgotCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0jaW5j
bHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVz
aW5nIE5vZGUgPSBMb2NrbGVzc0JhZzxUaHJlYWRNZXNzYWdlRGF0YSo+OjpOb2RlOwotCi1jbGFz
cyBUaHJlYWRNZXNzYWdlRGF0YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgVGhyZWFkTWVzc2FnZURhdGEoY29uc3QgVGhyZWFkTWVzc2FnZSYgbSkKLSAgICAg
ICAgOiByYW4obnVsbHB0cikKLSAgICAgICAgLCBtZXNzYWdlKG0pCi0gICAgewotICAgIH0KLQot
ICAgIEF0b21pYzxOb2RlKj4gcmFuOwotICAgIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2U7
Ci19OwotCi1lbnVtIEZpbGVEZXNjcmlwdG9yIHsKLSAgICBSZWFkLAotICAgIFdyaXRlLAotICAg
IE51bWJlck9mRmlsZURlc2NyaXB0b3JzLAotfTsKLQotc3RhdGljIGludCBmaWxlRGVzY3JpcHRv
cnNbTnVtYmVyT2ZGaWxlRGVzY3JpcHRvcnNdOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG1h
Z2ljQnl0ZSA9ICJkIjsKLQotCi12b2lkIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpCi17Ci0g
ICAgaW50IHJlc3VsdCA9IHBpcGUoZmlsZURlc2NyaXB0b3JzKTsKLSAgICBSRUxFQVNFX0FTU0VS
VCghcmVzdWx0KTsKLQotICAgIGludCBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0
ZV0sIEZfR0VURkwpOwotICAgIHJlc3VsdCA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0s
IEZfU0VURkwsIGZsYWdzIHwgT19OT05CTE9DSyB8IE9fQVBQRU5EKTsKLSAgICBmbGFncyA9IGZj
bnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwpOwotICAgIFJFTEVBU0VfQVNTRVJU
KHJlc3VsdCAhPSAtMSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoKGZsYWdzICYgT19OT05CTE9DSykg
JiYgKGZsYWdzICYgT19BUFBFTkQpKTsKLQotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0
b3JzW1JlYWRdLCBGX0dFVEZMKTsKLSAgICByZXN1bHQgPSBmY250bChmaWxlRGVzY3JpcHRvcnNb
UmVhZF0sIEZfU0VURkwsIGZsYWdzICYgfk9fTk9OQkxPQ0spOwotICAgIGZsYWdzID0gZmNudGwo
ZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dFVEZMKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1
bHQgIT0gLTEpOwotICAgIFJFTEVBU0VfQVNTRVJUKCEoZmxhZ3MgJiBPX05PTkJMT0NLKSk7Ci19
Ci0KLVNVUFBSRVNTX0FTQU4KLXN0YXRpYyBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlVXNpbmdT
aWduYWwoVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCi17Ci0g
ICAgY29uc3RleHByIFNpZ25hbCBzaWduYWwgPSBTaWduYWw6OlVzcjsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbXSB7Ci0gICAgICAg
IGluc3RhbGxTaWduYWxIYW5kbGVyKHNpZ25hbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIFRocmVhZCogdGhyZWFkID0g
VGhyZWFkOjpjdXJyZW50TWF5QmVOdWxsKCk7Ci0KLSAgICAgICAgICAgIGlmICghdGhyZWFkKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJXZSBzb21laG93IGdvdCBhIG1lc3NhZ2Ugb24g
YSB0aHJlYWQgdGhhdCBkaWRuJ3QgaGF2ZSBhIFdURjo6VGhyZWFkIGluaXRpYWxpemVkLCB3ZSBw
cm9iYWJseSBkZWFkbG9ja2VkLCBoYWxwLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTaWdu
YWxBY3Rpb246Ok5vdEhhbmRsZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5v
ZGUgc2hvdWxkIGJlIGRlbGV0ZWQgaW4gdGhlIHNlbmRlciB0aHJlYWQuIERlbGV0aW5nIE5vZGVz
IGluIHNpZ25hbCBoYW5kbGVyIGNhdXNlcyBkZWFkIGxvY2suCi0gICAgICAgICAgICB0aHJlYWQt
PnRocmVhZE1lc3NhZ2VzKCkuY29uc3VtZUFsbFdpdGhOb2RlKFsmXSAoVGhyZWFkTWVzc2FnZURh
dGEqIGRhdGEsIE5vZGUqIG5vZGUpIHsKLSAgICAgICAgICAgICAgICBkYXRhLT5tZXNzYWdlKHJl
Z2lzdGVycyk7Ci0gICAgICAgICAgICAgICAgLy8gQnkgc2V0dGluZyByYW4gdmFyaWFibGUsICgx
KSB0aGUgc2VuZGVyIGFja25vd2xlZGdlcyB0aGUgY29tcGxldGlvbiBhbmQKLSAgICAgICAgICAg
ICAgICAvLyAoMikgZ2V0cyB0aGUgTm9kZSB0byBiZSBkZWxldGVkLgotICAgICAgICAgICAgICAg
IGRhdGEtPnJhbi5zdG9yZShub2RlKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICB3
aGlsZSAod3JpdGUoZmlsZURlc2NyaXB0b3JzW1dyaXRlXSwgbWFnaWNCeXRlLCAxKSA9PSAtMSkK
LSAgICAgICAgICAgICAgICBBU1NFUlQoZXJybm8gPT0gRUFHQUlOKTsKLQotICAgICAgICAgICAg
cmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLQot
ICAgIC8vIFNpbmNlIHdlIGFyZSBndWFyZW50ZWVkIG5vdCB0byByZXR1cm4gdW50aWwgd2UgZ2V0
IGEgcmVzcG9uc2UgZnJvbSB0aGUgb3RoZXIgdGhyZWFkIHRoaXMgaXMgb2suCi0gICAgVGhyZWFk
TWVzc2FnZURhdGEgZGF0YShtZXNzYWdlKTsKLQotICAgIHRocmVhZC50aHJlYWRNZXNzYWdlcygp
LmFkZCgmZGF0YSk7Ci0gICAgYm9vbCByZXN1bHQgPSB0aHJlYWQuc2lnbmFsKHRvU3lzdGVtU2ln
bmFsKHNpZ25hbCkpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gTWVzc2FnZVN0
YXR1czo6VGhyZWFkRXhpdGVkOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Ci0KLSAgICBz
dGF0aWMgU3RhdGljTG9jayByZWFkTG9jazsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihyZWFkTG9jayk7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3QgYnVm
ZmVyU2l6ZSA9IDE2OwotICAgICAgICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKLQotICAgICAg
ICAvLyBJdCdzIGFsd2F5cyBzYWZlIHRvIGNsZWFyIHRoZSBwaXBlIGJlY2F1c2Ugb25seSBvbmUg
dGhyZWFkIGNhbiBldmVyIGJsb2NrIHRyeWluZyB0byByZWFkCi0gICAgICAgIC8vIGZyb20gdGhl
IHBpcGUuIFRodXMsIGVhY2ggYnl0ZSB3ZSBjbGVhciBmcm9tIHRoZSBwaXBlIGFjdHVhbGx5IGp1
c3QgY29ycmVzcG9uZHMgdG8gc29tZSB0YXNrCi0gICAgICAgIC8vIHRoYXQgaGFzIGFscmVhZHkg
ZmluaXNoZWQuIFdlIGFjdGl2ZWx5IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIHBpcGUgZG9lcyBu
b3Qgb3ZlcmZpbGwgYmVjYXVzZQotICAgICAgICAvLyBvdGhlcndpc2Ugb3VyIHdyaXRlcnMgbWln
aHQgc3BpbiB0cnlpbmcgdG8gd3JpdGUuCi0gICAgICAgIGF1dG8gY2xlYXJQaXBlID0gWyZdIHsK
LSAgICAgICAgICAgIGludCBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9H
RVRGTCk7Ci0gICAgICAgICAgICBBU1NFUlQoIShmbGFncyAmIE9fTk9OQkxPQ0spKTsKLSAgICAg
ICAgICAgIGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9TRVRGTCwgZmxhZ3MgfCBPX05P
TkJMT0NLKTsKLQotICAgICAgICAgICAgd2hpbGUgKHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRd
LCBidWZmZXIsIGJ1ZmZlclNpemUpICE9IC0xKSB7IH0KLSAgICAgICAgICAgIEFTU0VSVChlcnJu
byA9PSBFQUdBSU4pOwotCi0gICAgICAgICAgICBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0s
IEZfU0VURkwsIGZsYWdzKTsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoTm9kZSogbm9kZSA9
IGRhdGEucmFuLmxvYWQoKSkgewotICAgICAgICAgICAgY2xlYXJQaXBlKCk7Ci0gICAgICAgICAg
ICBkZWxldGUgbm9kZTsKLSAgICAgICAgICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpNZXNzYWdl
UmFuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHJldCA9IHJlYWQoZmlsZURlc2NyaXB0b3Jz
W1JlYWRdLCBidWZmZXIsIDEpOwotICAgICAgICBVTlVTRURfUEFSQU0ocmV0KTsKLSAgICAgICAg
QVNTRVJUKGJ1ZmZlclswXSA9PSBtYWdpY0J5dGVbMF0pOwotICAgICAgICBjbGVhclBpcGUoKTsK
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotI2lmIEhBVkUo
TUFDSF9FWENFUFRJT05TKQotc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ01h
Y2goVGhyZWFkJiB0aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCitNZXNzYWdl
U3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNz
YWdlJiBtZXNzYWdlKQogewogICAgIHN0YXRpYyBTdGF0aWNMb2NrIG1lc3NhZ2VMb2NrOwogICAg
IGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3NhZ2VMb2NrKTsKQEAgLTE3OCwyNCArNDks
NCBAQCBzdGF0aWMgTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZVVzaW5nTWFjaChUaHJlYWQmIHRo
cmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbQogICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpN
ZXNzYWdlUmFuOwogfQogCi1zdGF0aWMgYm9vbCB1c2VNYWNoID0gZmFsc2U7Ci12b2lkIGRlbGl2
ZXJNZXNzYWdlc1VzaW5nTWFjaCgpCi17Ci0gICAgdXNlTWFjaCA9IHRydWU7Ci19Ci0KLSNlbmRp
ZiAvLyBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKLQotTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZVNj
b3BlZChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKLXsKLSNp
ZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKLSAgICBpZiAodXNlTWFjaCkKLSAgICAgICAgcmV0dXJu
IHNlbmRNZXNzYWdlVXNpbmdNYWNoKHRocmVhZCwgbWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1
cm4gc2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCh0aHJlYWQsIG1lc3NhZ2UpOwotfQotCi0KIH0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2Fn
ZS5oCmluZGV4IDBmNzQ1NTEyOTQ2Mzc0Njc3YWNmMWI3MGRjNjYyMzU4YTM4NGZkNjAuLmI2Yzhl
MmJjODNlOGQxMGFiZmRkMzRjZGQwYmFhODlmZmI5NmUwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE1lc3NhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdl
LmgKQEAgLTI5LDEzICsyOSw4IEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShQVEhSRUFEUykKLQogbmFtZXNwYWNl
IFdURiB7CiAKLXZvaWQgaW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7Ci0KLWNsYXNzIFRocmVh
ZE1lc3NhZ2VEYXRhOwogdXNpbmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKFBs
YXRmb3JtUmVnaXN0ZXJzJik+OwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VTdGF0dXMgewpAQCAtNTUs
MTIgKzUwLDYgQEAgTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZShUaHJlYWQmIHRhcmdldFRocmVh
ZCwgY29uc3QgRnVuY3RvciYgZnVuYykKICAgICByZXR1cm4gc2VuZE1lc3NhZ2VTY29wZWQodGFy
Z2V0VGhyZWFkLCBsYW1iZGEpOwogfQogCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi12b2lk
IGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiB1c2luZyBXVEY6OnNlbmRNZXNzYWdlOwotCi0jZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5jcHAKaW5kZXggY2JjY2Y2NTllNjk5NzBiZTA4MzM1NDVjZDhhNGVmMTVmYzgx
MjhjNC4uNzVlMDEzZDE2NWIyNTQyNmE1YTNmOGRkMTYzYjFmZjFlMGJmYzhjMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuY3BwCkBAIC0xNzksOSArMTc5LDYgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkK
ICAgICAgICAgd3RmVGhyZWFkRGF0YSgpOwogICAgICAgICBpbml0aWFsaXplRGF0ZXMoKTsKICAg
ICAgICAgVGhyZWFkOjppbml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsKLSNpZiBVU0UoUFRI
UkVBRFMpCi0gICAgICAgIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpOwotI2VuZGlmCiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggYzhlMDY3YTIyNzRhYzI1ZTVhZDlmN2Q3MmMwNWM4
ZjU0MzFkZThmOS4uYThkYmU4MmNhMmE1ZDljNDRkMmNhNjFjMTQ1MDA4NWI1NTY4YjViMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgog
I2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2lu
Y2x1ZGUgPHd0Zi9Mb2NrbGVzc0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVy
cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KQEAgLTEyOCwxMyArMTI3LDkgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFRocmVhZD4gewogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVBsYXRmb3JtVGhyZWFkaW5nKCk7CiAKLSNpZiBVU0UoUFRIUkVBRFMpCi0gICAgTG9ja2xlc3NC
YWc8VGhyZWFkTWVzc2FnZURhdGEqPiYgdGhyZWFkTWVzc2FnZXMoKSB7IHJldHVybiBtX3RocmVh
ZE1lc3NhZ2VzOyB9Ci0KICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbWFjaFRocmVh
ZCgpIHsgcmV0dXJuIG1fcGxhdGZvcm1UaHJlYWQ7IH0KICNlbmRpZgotI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKICAgICBUaHJlYWQoKTsKQEAgLTE4Miw3ICsxNzcsNiBAQCBjbGFzcyBUaHJlYWQgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAjaWYgVVNFKFBUSFJFQURTKQog
ICAgIHB0aHJlYWRfdCBtX2hhbmRsZTsKIAotICAgIExvY2tsZXNzQmFnPFRocmVhZE1lc3NhZ2VE
YXRhKj4gbV90aHJlYWRNZXNzYWdlczsKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3Qg
bV9wbGF0Zm9ybVRocmVhZDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAK
aW5kZXggZjkwNGE5MzkzMDYwMGM0MDBjNDY3N2JiZTI3ZGIxYWU5ZDhjYTQ0Yi4uYWQ2NjQ3MDkw
Mzk4MmQ0ZWI0Y2Y0M2Y1NzhiZDYyMjJhNWQ2MjIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcApAQCAtMTQ1LDExICsxNDUsNyBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxl
clN1c3BlbmRSZXN1bWUoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFpc09uQWx0ZXJuYXRpdmVTaWduYWxTdGFjaygpLCAiVXNpbmcgYW4g
YWx0ZXJuYXRpdmUgc2lnbmFsIHN0YWNrIGlzIG5vdCBzdXBwb3J0ZWQuIENvbnNpZGVyIGRpc2Fi
bGluZyB0aGUgY29uY3VycmVudCBHQy4iKTsKIAogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQot
I2lmIENQVShQUEMpCi0gICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1S
ZWdpc3RlcnMgeyAqdXNlckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3MgfTsKLSNlbHNlCi0g
ICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyB1c2Vy
Q29udGV4dC0+dWNfbWNvbnRleHQgfTsKLSNlbmRpZgorICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJl
Z2lzdGVycyA9IHJlZ2lzdGVyc0Zyb21VQ29udGV4dCh1c2VyQ29udGV4dCk7CiAjZWxzZQogICAg
IHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgZ2V0QXBw
cm94aW1hdGVTdGFja1BvaW50ZXIoKSB9OwogI2VuZGlmCkBAIC00MDIsMTIgKzM5OCwxNiBAQCB2
b2lkIFRocmVhZDo6cmVzdW1lKCkKICNlbmRpZgogfQogCi1zaXplX3QgVGhyZWFkOjpnZXRSZWdp
c3RlcnMoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKLXsKLSAgICBzdGQ6OnVuaXF1ZV9s
b2NrPHN0ZDo6bXV0ZXg+IGxvY2tlcihtX211dGV4KTsKICNpZiBPUyhEQVJXSU4pCitzdHJ1Y3Qg
VGhyZWFkU3RhdGVPcHRpb24geworICAgIHVuc2lnbmVkIHVzZXJDb3VudDsKKyAgICB0aHJlYWRf
c3RhdGVfZmxhdm9yX3QgZmxhdm9yOworfTsKKworc3RhdGljIFRocmVhZFN0YXRlT3B0aW9uIHRo
cmVhZFN0YXRlT3B0aW9uKCkKK3sKICNpZiBDUFUoWDg2KQotICAgIHVuc2lnbmVkIHVzZXJDb3Vu
dCA9IHNpemVvZihyZWdpc3RlcnMpIC8gc2l6ZW9mKGludCk7CisgICAgdW5zaWduZWQgdXNlckNv
dW50ID0gc2l6ZW9mKFBsYXRmb3JtUmVnaXN0ZXJzKSAvIHNpemVvZihpbnQpOwogICAgIHRocmVh
ZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBpMzg2X1RIUkVBRF9TVEFURTsKICNlbGlmIENQVShY
ODZfNjQpCiAgICAgdW5zaWduZWQgdXNlckNvdW50ID0geDg2X1RIUkVBRF9TVEFURTY0X0NPVU5U
OwpAQCAtNDI3LDEzICs0MjcsMjEgQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAjZWxzZQogI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCiAjZW5kaWYKKyAgICByZXR1cm4gVGhyZWFkU3RhdGVPcHRpb24geyB1c2VyQ291bnQsIGZs
YXZvciB9OworfQorI2VuZGlmIC8vIE9TKERBUldJTikKIAotICAgIGtlcm5fcmV0dXJuX3QgcmVz
dWx0ID0gdGhyZWFkX2dldF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFkLCBmbGF2b3IsICh0aHJlYWRf
c3RhdGVfdCkmcmVnaXN0ZXJzLCAmdXNlckNvdW50KTsKK3NpemVfdCBUaHJlYWQ6OmdldFJlZ2lz
dGVycyhQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKQoreworICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8c3RkOjptdXRleD4gbG9ja2VyKG1fbXV0ZXgpOworI2lmIE9TKERBUldJTikKKyAgICBhdXRv
IG9wdGlvbiA9IHRocmVhZFN0YXRlT3B0aW9uKCk7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQg
PSB0aHJlYWRfZ2V0X3N0YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG9wdGlvbi5mbGF2b3IsICh0aHJl
YWRfc3RhdGVfdCkmcmVnaXN0ZXJzLCAmb3B0aW9uLnVzZXJDb3VudCk7CiAgICAgaWYgKHJlc3Vs
dCAhPSBLRVJOX1NVQ0NFU1MpIHsKICAgICAgICAgV1RGUmVwb3J0RmF0YWxFcnJvcihfX0ZJTEVf
XywgX19MSU5FX18sIFdURl9QUkVUVFlfRlVOQ1RJT04sICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29s
bGVjdGlvbiBmYWlsZWQgYmVjYXVzZSB0aHJlYWRfZ2V0X3N0YXRlIHJldHVybmVkIGFuIGVycm9y
ICglZCkuIFRoaXMgaXMgcHJvYmFibHkgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGluc2lkZSBSb3Nl
dHRhLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLiIsIHJlc3VsdCk7CiAgICAgICAgIENSQVNIKCk7
CiAgICAgfQotICAgIHJldHVybiB1c2VyQ291bnQgKiBzaXplb2YodWludHB0cl90KTsKKyAgICBy
ZXR1cm4gb3B0aW9uLnVzZXJDb3VudCAqIHNpemVvZih1aW50cHRyX3QpOwogI2Vsc2UKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKG1fc3VzcGVuZENvdW50LCAiV2UgY2FuIGdldCByZWdpc3RlcnMg
b25seSBpZiB0aGUgdGhyZWFkIGlzIHN1c3BlbmRlZC4iKTsKICAgICByZWdpc3RlcnMgPSBtX3Bs
YXRmb3JtUmVnaXN0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggN2YyNDcw
NjVlZWQ1YzFmMGIwMzUzOGEzODFiNTg5MzA1MDVlMjIyMC4uZjkyOTk1MmE0YTEzODM3MTYyZmZj
ZTM5NWUyNDkyY2RiNDAyY2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0y
MDgsNyArMjA4LDYgQEAga2Vybl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9z
dGF0ZSgKIHN0YXRpYyBib29sIHVzZU1hY2ggeyBmYWxzZSB9Owogdm9pZCBoYW5kbGVTaWduYWxz
V2l0aE1hY2goKQogewotICAgIGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwogICAgIHVzZU1h
Y2ggPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312607</attachid>
            <date>2017-06-11 10:06:22 -0700</date>
            <delta_ts>2017-06-11 14:11:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172073-20170612020621.patch</filename>
            <type>text/plain</type>
            <size>16588</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MjZjNmQzYzc3NmY5ZWI3YzQxODMxMGZlODdmMDNjNTQ5OGRkODc3Li5jMmFlMzkzZjE1NTlkMGE3
NTlkNzIwY2FmZjkzYTFlY2ZiMTExMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNy0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFibGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVy
KToKKyAgICAgICAgKiB0b29scy9Db2RlUHJvZmlsaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6cHJv
ZmlsaW5nVGltZXIpOgorCiAyMDE3LTA2LTExICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KIAogICAgICAgICBVbnJldmlld2VkLCBhdHRlbXB0IHRvIGZpeCBKU0MgdGVz
dHMgb24gV2luIGFmdGVyIHIyMTc3NzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMzAwYzIzYWFlZGMzYjQ4Nzc2MTBhNDQ4Y2Jm
NGVhZDg0OTVhZDVhMC4uODI2NzBiNDc2YzU4MGRmOThlYjM5NGViNTIzMTViMjA3MDMzZTg2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw0MiBAQAogMjAxNy0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBbV1RGXSBNYWtlIFRocmVhZE1lc3NhZ2UgcG9ydGFi
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjA3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY2Vu
dGx5LCB3ZSBjaGFuZ2UgVGhyZWFkTWVzc2FnZSBzZW1hbnRpY3M6IG1lc3NhZ2UgaGFuZGxlcgor
ICAgICAgICBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIHNlbmRlciB0aHJlYWQuCisgICAgICAgIFRo
aXMgYWxsb3dzIFRocmVhZE1lc3NhZ2UgdG8gYmUgaW1wbGVtZW50ZWQgaW4gYSBwb3J0YWJsZSB3
YXkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRocmVhZE1lc3NhZ2UgZm9yIGFs
bCB0aGUgcGxhdGZvcm1zLgorICAgICAgICBXZSB1c2UgcGxhdGZvcm0taW5kZXBlbmRlbnQgVGhy
ZWFkIEFQSXMsIHN1c3BlbmQoKSwgcmVzdW1lKCksCisgICAgICAgIGFuZCBnZXRSZWdpc3RlcnMo
KS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oOgorICAgICAgICAoV1RGOjpy
ZWdpc3RlcnNGcm9tVUNvbnRleHQpOgorICAgICAgICAqIHd0Zi9UaHJlYWRNZXNzYWdlLmNwcDoK
KyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VTY29wZWQpOgorICAgICAgICAoV1RGOjpUaHJlYWRN
ZXNzYWdlRGF0YTo6VGhyZWFkTWVzc2FnZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OnNlbmRNZXNzYWdlVXNpbmdNYWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6ZGVs
aXZlck1lc3NhZ2VzVXNpbmdNYWNoKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvVGhyZWFkTWVz
c2FnZS5oOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuY3BwOgorICAgICAgICAoV1RGOjppbml0
aWFsaXplVGhyZWFkaW5nKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChX
VEY6OlRocmVhZDo6dGhyZWFkTWVzc2FnZXMpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHA6CisgICAgICAgIChXVEY6OlRocmVhZDo6c2lnbmFsSGFuZGxlclN1
c3BlbmRSZXN1bWUpOgorICAgICAgICAoV1RGOjp0aHJlYWRTdGF0ZU9wdGlvbik6CisgICAgICAg
IChXVEY6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKToKKyAgICAgICAgKiB3dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcDoKKyAgICAgICAgKFdURjo6aGFuZGxlU2lnbmFsc1dpdGhNYWNoKToKKworMjAxNy0w
Ni0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBb
V1RGXSBEcm9wIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGluIFRocmVhZGluZy5oCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxNjcKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKaW5kZXggNzY1NDA0NDg1
OTBmMjViMzRkNmE2MDAzMjZhYTI0NWI0YWZhZWMwMS4uOTUwODBiOTJkZmViZDAwYTJlNGVhOWQ2
ZmYxMjUyZTg1NmI4NGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFjaGluZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YWNoaW5lQ29udGV4dC5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogbmFt
ZXNwYWNlIE1hY2hpbmVDb250ZXh0IHsKIAotCi12b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3Jt
UmVnaXN0ZXJzJik7CiB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMm
KTsKIAogI2lmIE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQordm9pZComIHN0
YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOwogdm9pZComIGZyYW1lUG9pbnRlcihQbGF0
Zm9ybVJlZ2lzdGVycyYpOwogdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0
ZXJzJik7CiB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CkBA
IC02NCw2ICs2Myw3IEBAIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1jb250
ZXh0X3QmKTsKICNlbmRpZiAvLyBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICNlbmRpZiAvLyBPUyhX
SU5ET1dTKSB8fCBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIAorI2lmIE9TKFdJTkRPV1MpIHx8IEhB
VkUoTUFDSElORV9DT05URVhUKQogaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQpAQCAtMTExLDggKzExMSw2IEBAIGlu
bGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogCiAjZWxp
ZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKICAgICByZXR1cm4gc3RhY2tQb2ludGVyKHJlZ3MubWFj
aGluZUNvbnRleHQpOwotI2Vsc2UKLSAgICByZXR1cm4gcmVncy5zdGFja1BvaW50ZXI7CiAjZW5k
aWYKIH0KIApAQCAtMTIwLDcgKzExOCwxMiBAQCBpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNv
bnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQogewogICAgIHJldHVybiBzdGFja1BvaW50ZXIo
Y29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKIH0KLQorI2Vsc2UgLy8gbm90
IE9TKFdJTkRPV1MpIHx8IEhBVkUoTUFDSElORV9DT05URVhUKQoraW5saW5lIHZvaWQqIHN0YWNr
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gcmVn
cy5zdGFja1BvaW50ZXI7Cit9CisjZW5kaWYgLy8gT1MoV0lORE9XUykgfHwgSEFWRShNQUNISU5F
X0NPTlRFWFQpCiAKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIGlubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCmluZGV4IDRkNzRhZjI4YWQzNDRlOGVmY2Zh
ZTE3ZjY3ZGY0N2NjOGViZTQyYTAuLjVlN2VjYTE1NTYyZjA0MzcxOTAyNTNlYmUyZDkxNzA3YmY0
OWJjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmls
aW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5j
cHAKQEAgLTcwLDEwICs3MCwxMCBAQCBzdGF0aWMgdm9pZCBzZXRQcm9maWxlVGltZXIodW5zaWdu
ZWQgdXNlYykKICNpZiBIQVZFKE1BQ0hJTkVfQ09OVEVYVCkKIHN0YXRpYyB2b2lkIHByb2ZpbGlu
Z1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewotICAgIG1jb250ZXh0X3QgY29u
dGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4dDsKKyAgICBQ
bGF0Zm9ybVJlZ2lzdGVycyYgcGxhdGZvcm1SZWdpc3RlcnMgPSBXVEY6OnJlZ2lzdGVyc0Zyb21V
Q29udGV4dChzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKSk7CiAgICAgQ29kZVByb2ZpbGlu
Zzo6c2FtcGxlKAotICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNv
bnRleHQpLAotICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOworICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1
Y3Rpb25Qb2ludGVyKHBsYXRmb3JtUmVnaXN0ZXJzKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocGxhdGZvcm1SZWdpc3RlcnMp
KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdp
c3RlcnMuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgKaW5kZXggODRiZDg5
Mzc0OTlkYTk5ZWFhODZiNzM2OTVmN2M1YjgxYWMyNjBjZS4uOTJjZDc4OWIwYWU0MDE1NjdiYzI3
Y2U0YjA4ZDVmNTAyMjY4N2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1S
ZWdpc3RlcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCkBAIC03
NCw3ICs3NCwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogCiBpbmxpbmUgUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ2lzdGVyc0Zyb21VQ29udGV4dCh1Y29udGV4dF90KiB1Y29udGV4dCkK
IHsKKyNpZiBDUFUoUFBDKQorICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0
ZXJzKj4odWNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3MpOworI2Vsc2UKICAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyo+KCZ1Y29udGV4dC0+dWNfbWNvbnRleHQp
OworI2VuZGlmCiB9CiAKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRN
ZXNzYWdlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IDY0ZTc3
NWU3NWQwMmIxNDM4MjJkYTcxN2RkZTQ4MzZiMjMwODAyMzEuLjU2ZDZiY2Y3ZDUyZWNlYTM4YWI0
ZTg2ODRlNGM2MjM1NjAwMmU2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1l
c3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0yNiwx
NDEgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkTWVzc2Fn
ZS5oIgogCi0jaWYgVVNFKFBUSFJFQURTKQotCi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRl
IDx1bmlzdGQuaD4KLQotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+Ci0jaW5jbHVkZSA8d3RmL3RocmVhZHMvU2ln
bmFscy5oPgotCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi0jaW5jbHVkZSA8bWFjaC90aHJl
YWRfYWN0Lmg+Ci0jZW5kaWYKIAogbmFtZXNwYWNlIFdURiB7CiAKLXVzaW5nIE5vZGUgPSBMb2Nr
bGVzc0JhZzxUaHJlYWRNZXNzYWdlRGF0YSo+OjpOb2RlOwotCi1jbGFzcyBUaHJlYWRNZXNzYWdl
RGF0YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgVGhyZWFk
TWVzc2FnZURhdGEoY29uc3QgVGhyZWFkTWVzc2FnZSYgbSkKLSAgICAgICAgOiByYW4obnVsbHB0
cikKLSAgICAgICAgLCBtZXNzYWdlKG0pCi0gICAgewotICAgIH0KLQotICAgIEF0b21pYzxOb2Rl
Kj4gcmFuOwotICAgIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2U7Ci19OwotCi1lbnVtIEZp
bGVEZXNjcmlwdG9yIHsKLSAgICBSZWFkLAotICAgIFdyaXRlLAotICAgIE51bWJlck9mRmlsZURl
c2NyaXB0b3JzLAotfTsKLQotc3RhdGljIGludCBmaWxlRGVzY3JpcHRvcnNbTnVtYmVyT2ZGaWxl
RGVzY3JpcHRvcnNdOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG1hZ2ljQnl0ZSA9ICJkIjsK
LQotCi12b2lkIGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpCi17Ci0gICAgaW50IHJlc3VsdCA9
IHBpcGUoZmlsZURlc2NyaXB0b3JzKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0KTsKLQot
ICAgIGludCBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfR0VURkwpOwot
ICAgIHJlc3VsdCA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tXcml0ZV0sIEZfU0VURkwsIGZsYWdz
IHwgT19OT05CTE9DSyB8IE9fQVBQRU5EKTsKLSAgICBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlw
dG9yc1tXcml0ZV0sIEZfR0VURkwpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCAhPSAtMSk7
Ci0gICAgUkVMRUFTRV9BU1NFUlQoKGZsYWdzICYgT19OT05CTE9DSykgJiYgKGZsYWdzICYgT19B
UFBFTkQpKTsKLQotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBGX0dF
VEZMKTsKLSAgICByZXN1bHQgPSBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkws
IGZsYWdzICYgfk9fTk9OQkxPQ0spOwotICAgIGZsYWdzID0gZmNudGwoZmlsZURlc2NyaXB0b3Jz
W1JlYWRdLCBGX0dFVEZMKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQgIT0gLTEpOwotICAg
IFJFTEVBU0VfQVNTRVJUKCEoZmxhZ3MgJiBPX05PTkJMT0NLKSk7Ci19Ci0KLVNVUFBSRVNTX0FT
QU4KLXN0YXRpYyBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlVXNpbmdTaWduYWwoVGhyZWFkJiB0
aHJlYWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCi17Ci0gICAgY29uc3RleHByIFNp
Z25hbCBzaWduYWwgPSBTaWduYWw6OlVzcjsKLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZTsKLSAgICBzdGQ6OmNhbGxfb25jZShvbmNlLCBbXSB7Ci0gICAgICAgIGluc3RhbGxTaWduYWxI
YW5kbGVyKHNpZ25hbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJiBy
ZWdpc3RlcnMpIHsKLSAgICAgICAgICAgIFRocmVhZCogdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50
TWF5QmVOdWxsKCk7Ci0KLSAgICAgICAgICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJXZSBzb21laG93IGdvdCBhIG1lc3NhZ2Ugb24gYSB0aHJlYWQgdGhhdCBk
aWRuJ3QgaGF2ZSBhIFdURjo6VGhyZWFkIGluaXRpYWxpemVkLCB3ZSBwcm9iYWJseSBkZWFkbG9j
a2VkLCBoYWxwLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhh
bmRsZWQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIE5vZGUgc2hvdWxkIGJlIGRl
bGV0ZWQgaW4gdGhlIHNlbmRlciB0aHJlYWQuIERlbGV0aW5nIE5vZGVzIGluIHNpZ25hbCBoYW5k
bGVyIGNhdXNlcyBkZWFkIGxvY2suCi0gICAgICAgICAgICB0aHJlYWQtPnRocmVhZE1lc3NhZ2Vz
KCkuY29uc3VtZUFsbFdpdGhOb2RlKFsmXSAoVGhyZWFkTWVzc2FnZURhdGEqIGRhdGEsIE5vZGUq
IG5vZGUpIHsKLSAgICAgICAgICAgICAgICBkYXRhLT5tZXNzYWdlKHJlZ2lzdGVycyk7Ci0gICAg
ICAgICAgICAgICAgLy8gQnkgc2V0dGluZyByYW4gdmFyaWFibGUsICgxKSB0aGUgc2VuZGVyIGFj
a25vd2xlZGdlcyB0aGUgY29tcGxldGlvbiBhbmQKLSAgICAgICAgICAgICAgICAvLyAoMikgZ2V0
cyB0aGUgTm9kZSB0byBiZSBkZWxldGVkLgotICAgICAgICAgICAgICAgIGRhdGEtPnJhbi5zdG9y
ZShub2RlKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICB3aGlsZSAod3JpdGUoZmls
ZURlc2NyaXB0b3JzW1dyaXRlXSwgbWFnaWNCeXRlLCAxKSA9PSAtMSkKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoZXJybm8gPT0gRUFHQUlOKTsKLQotICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFj
dGlvbjo6SGFuZGxlZDsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0KLQotICAgIC8vIFNpbmNlIHdl
IGFyZSBndWFyZW50ZWVkIG5vdCB0byByZXR1cm4gdW50aWwgd2UgZ2V0IGEgcmVzcG9uc2UgZnJv
bSB0aGUgb3RoZXIgdGhyZWFkIHRoaXMgaXMgb2suCi0gICAgVGhyZWFkTWVzc2FnZURhdGEgZGF0
YShtZXNzYWdlKTsKLQotICAgIHRocmVhZC50aHJlYWRNZXNzYWdlcygpLmFkZCgmZGF0YSk7Ci0g
ICAgYm9vbCByZXN1bHQgPSB0aHJlYWQuc2lnbmFsKHRvU3lzdGVtU2lnbmFsKHNpZ25hbCkpOwot
ICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gTWVzc2FnZVN0YXR1czo6VGhyZWFkRXhp
dGVkOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdCk7Ci0KLSAgICBzdGF0aWMgU3RhdGljTG9j
ayByZWFkTG9jazsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihyZWFkTG9jayk7Ci0gICAgICAgIGNvbnN0ZXhwciBzaXplX3QgYnVmZmVyU2l6ZSA9IDE2Owot
ICAgICAgICBjaGFyIGJ1ZmZlcltidWZmZXJTaXplXTsKLQotICAgICAgICAvLyBJdCdzIGFsd2F5
cyBzYWZlIHRvIGNsZWFyIHRoZSBwaXBlIGJlY2F1c2Ugb25seSBvbmUgdGhyZWFkIGNhbiBldmVy
IGJsb2NrIHRyeWluZyB0byByZWFkCi0gICAgICAgIC8vIGZyb20gdGhlIHBpcGUuIFRodXMsIGVh
Y2ggYnl0ZSB3ZSBjbGVhciBmcm9tIHRoZSBwaXBlIGFjdHVhbGx5IGp1c3QgY29ycmVzcG9uZHMg
dG8gc29tZSB0YXNrCi0gICAgICAgIC8vIHRoYXQgaGFzIGFscmVhZHkgZmluaXNoZWQuIFdlIGFj
dGl2ZWx5IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIHBpcGUgZG9lcyBub3Qgb3ZlcmZpbGwgYmVj
YXVzZQotICAgICAgICAvLyBvdGhlcndpc2Ugb3VyIHdyaXRlcnMgbWlnaHQgc3BpbiB0cnlpbmcg
dG8gd3JpdGUuCi0gICAgICAgIGF1dG8gY2xlYXJQaXBlID0gWyZdIHsKLSAgICAgICAgICAgIGlu
dCBmbGFncyA9IGZjbnRsKGZpbGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9HRVRGTCk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIShmbGFncyAmIE9fTk9OQkxPQ0spKTsKLSAgICAgICAgICAgIGZjbnRsKGZp
bGVEZXNjcmlwdG9yc1tSZWFkXSwgRl9TRVRGTCwgZmxhZ3MgfCBPX05PTkJMT0NLKTsKLQotICAg
ICAgICAgICAgd2hpbGUgKHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIsIGJ1ZmZl
clNpemUpICE9IC0xKSB7IH0KLSAgICAgICAgICAgIEFTU0VSVChlcnJubyA9PSBFQUdBSU4pOwot
Ci0gICAgICAgICAgICBmY250bChmaWxlRGVzY3JpcHRvcnNbUmVhZF0sIEZfU0VURkwsIGZsYWdz
KTsKLSAgICAgICAgfTsKLQotICAgICAgICBpZiAoTm9kZSogbm9kZSA9IGRhdGEucmFuLmxvYWQo
KSkgewotICAgICAgICAgICAgY2xlYXJQaXBlKCk7Ci0gICAgICAgICAgICBkZWxldGUgbm9kZTsK
LSAgICAgICAgICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuOwotICAgICAgICB9
Ci0KLSAgICAgICAgaW50IHJldCA9IHJlYWQoZmlsZURlc2NyaXB0b3JzW1JlYWRdLCBidWZmZXIs
IDEpOwotICAgICAgICBVTlVTRURfUEFSQU0ocmV0KTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlclsw
XSA9PSBtYWdpY0J5dGVbMF0pOwotICAgICAgICBjbGVhclBpcGUoKTsKLSAgICB9Ci0gICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotI2lmIEhBVkUoTUFDSF9FWENFUFRJT05T
KQotc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ01hY2goVGhyZWFkJiB0aHJl
YWQsIGNvbnN0IFRocmVhZE1lc3NhZ2UmIG1lc3NhZ2UpCitNZXNzYWdlU3RhdHVzIHNlbmRNZXNz
YWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQog
ewogICAgIHN0YXRpYyBTdGF0aWNMb2NrIG1lc3NhZ2VMb2NrOwogICAgIGF1dG8gbG9ja2hvbGRl
ciA9IGhvbGRMb2NrKG1lc3NhZ2VMb2NrKTsKQEAgLTE3OCwyNCArNDksNCBAQCBzdGF0aWMgTWVz
c2FnZVN0YXR1cyBzZW5kTWVzc2FnZVVzaW5nTWFjaChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhy
ZWFkTWVzc2FnZSYgbQogICAgIHJldHVybiBNZXNzYWdlU3RhdHVzOjpNZXNzYWdlUmFuOwogfQog
Ci1zdGF0aWMgYm9vbCB1c2VNYWNoID0gZmFsc2U7Ci12b2lkIGRlbGl2ZXJNZXNzYWdlc1VzaW5n
TWFjaCgpCi17Ci0gICAgdXNlTWFjaCA9IHRydWU7Ci19Ci0KLSNlbmRpZiAvLyBIQVZFKE1BQ0hf
RVhDRVBUSU9OUykKLQotTWVzc2FnZVN0YXR1cyBzZW5kTWVzc2FnZVNjb3BlZChUaHJlYWQmIHRo
cmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKLXsKLSNpZiBIQVZFKE1BQ0hfRVhD
RVBUSU9OUykKLSAgICBpZiAodXNlTWFjaCkKLSAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlVXNp
bmdNYWNoKHRocmVhZCwgbWVzc2FnZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gc2VuZE1lc3NhZ2VV
c2luZ1NpZ25hbCh0aHJlYWQsIG1lc3NhZ2UpOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdURgot
Ci0jZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhy
ZWFkTWVzc2FnZS5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCmluZGV4IDBmNzQ1
NTEyOTQ2Mzc0Njc3YWNmMWI3MGRjNjYyMzU4YTM4NGZkNjAuLmI2YzhlMmJjODNlOGQxMGFiZmRk
MzRjZGQwYmFhODlmZmI5NmUwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1l
c3NhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmgKQEAgLTI5LDEzICsy
OSw4IEBACiAjaW5jbHVkZSA8d3RmL1Njb3BlZExhbWJkYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KIAotI2lmIFVTRShQVEhSRUFEUykKLQogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQg
aW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7Ci0KLWNsYXNzIFRocmVhZE1lc3NhZ2VEYXRhOwog
dXNpbmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKFBsYXRmb3JtUmVnaXN0ZXJz
Jik+OwogCiBlbnVtIGNsYXNzIE1lc3NhZ2VTdGF0dXMgewpAQCAtNTUsMTIgKzUwLDYgQEAgTWVz
c2FnZVN0YXR1cyBzZW5kTWVzc2FnZShUaHJlYWQmIHRhcmdldFRocmVhZCwgY29uc3QgRnVuY3Rv
ciYgZnVuYykKICAgICByZXR1cm4gc2VuZE1lc3NhZ2VTY29wZWQodGFyZ2V0VGhyZWFkLCBsYW1i
ZGEpOwogfQogCi0jaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCi12b2lkIGRlbGl2ZXJNZXNzYWdl
c1VzaW5nTWFjaCgpOwotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6
OnNlbmRNZXNzYWdlOwotCi0jZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAK
aW5kZXggY2JjY2Y2NTllNjk5NzBiZTA4MzM1NDVjZDhhNGVmMTVmYzgxMjhjNC4uNzVlMDEzZDE2
NWIyNTQyNmE1YTNmOGRkMTYzYjFmZjFlMGJmYzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0x
NzksOSArMTc5LDYgQEAgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKICAgICAgICAgd3RmVGhy
ZWFkRGF0YSgpOwogICAgICAgICBpbml0aWFsaXplRGF0ZXMoKTsKICAgICAgICAgVGhyZWFkOjpp
bml0aWFsaXplUGxhdGZvcm1UaHJlYWRpbmcoKTsKLSNpZiBVU0UoUFRIUkVBRFMpCi0gICAgICAg
IGluaXRpYWxpemVUaHJlYWRNZXNzYWdlcygpOwotI2VuZGlmCiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFk
aW5nLmgKaW5kZXggYzhlMDY3YTIyNzRhYzI1ZTVhZDlmN2Q3MmMwNWM4ZjU0MzFkZThmOS4uYThk
YmU4MmNhMmE1ZDljNDRkMmNhNjFjMTQ1MDA4NWI1NTY4YjViMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKQEAg
LTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9Mb2Nr
bGVzc0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAg
LTEyOCwxMyArMTI3LDkgQEAgY2xhc3MgVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFRocmVhZD4gewogCiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBsYXRmb3JtVGhyZWFk
aW5nKCk7CiAKLSNpZiBVU0UoUFRIUkVBRFMpCi0gICAgTG9ja2xlc3NCYWc8VGhyZWFkTWVzc2Fn
ZURhdGEqPiYgdGhyZWFkTWVzc2FnZXMoKSB7IHJldHVybiBtX3RocmVhZE1lc3NhZ2VzOyB9Ci0K
ICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbWFjaFRocmVhZCgpIHsgcmV0dXJuIG1f
cGxhdGZvcm1UaHJlYWQ7IH0KICNlbmRpZgotI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBUaHJl
YWQoKTsKQEAgLTE4Miw3ICsxNzcsNiBAQCBjbGFzcyBUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8VGhyZWFkPiB7CiAjaWYgVVNFKFBUSFJFQURTKQogICAgIHB0aHJlYWRfdCBt
X2hhbmRsZTsKIAotICAgIExvY2tsZXNzQmFnPFRocmVhZE1lc3NhZ2VEYXRhKj4gbV90aHJlYWRN
ZXNzYWdlczsKICNpZiBPUyhEQVJXSU4pCiAgICAgbWFjaF9wb3J0X3QgbV9wbGF0Zm9ybVRocmVh
ZDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAKaW5kZXggZjkwNGE5Mzkz
MDYwMGM0MDBjNDY3N2JiZTI3ZGIxYWU5ZDhjYTQ0Yi4uYWQ2NjQ3MDkwMzk4MmQ0ZWI0Y2Y0M2Y1
NzhiZDYyMjJhNWQ2MjIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHRo
cmVhZHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAt
MTQ1LDExICsxNDUsNyBAQCB2b2lkIFRocmVhZDo6c2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUo
aW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1Y29udGV4dCkKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFpc09uQWx0ZXJuYXRpdmVTaWduYWxTdGFjaygpLCAiVXNpbmcgYW4gYWx0ZXJuYXRpdmUgc2ln
bmFsIHN0YWNrIGlzIG5vdCBzdXBwb3J0ZWQuIENvbnNpZGVyIGRpc2FibGluZyB0aGUgY29uY3Vy
cmVudCBHQy4iKTsKIAogI2lmIEhBVkUoTUFDSElORV9DT05URVhUKQotI2lmIENQVShQUEMpCi0g
ICAgdGhyZWFkLT5tX3BsYXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyAqdXNl
ckNvbnRleHQtPnVjX21jb250ZXh0LnVjX3JlZ3MgfTsKLSNlbHNlCi0gICAgdGhyZWFkLT5tX3Bs
YXRmb3JtUmVnaXN0ZXJzID0gUGxhdGZvcm1SZWdpc3RlcnMgeyB1c2VyQ29udGV4dC0+dWNfbWNv
bnRleHQgfTsKLSNlbmRpZgorICAgIHRocmVhZC0+bV9wbGF0Zm9ybVJlZ2lzdGVycyA9IHJlZ2lz
dGVyc0Zyb21VQ29udGV4dCh1c2VyQ29udGV4dCk7CiAjZWxzZQogICAgIHRocmVhZC0+bV9wbGF0
Zm9ybVJlZ2lzdGVycyA9IFBsYXRmb3JtUmVnaXN0ZXJzIHsgZ2V0QXBwcm94aW1hdGVTdGFja1Bv
aW50ZXIoKSB9OwogI2VuZGlmCkBAIC00MDIsMTIgKzM5OCwxNiBAQCB2b2lkIFRocmVhZDo6cmVz
dW1lKCkKICNlbmRpZgogfQogCi1zaXplX3QgVGhyZWFkOjpnZXRSZWdpc3RlcnMoUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ2lzdGVycykKLXsKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+
IGxvY2tlcihtX211dGV4KTsKICNpZiBPUyhEQVJXSU4pCitzdHJ1Y3QgVGhyZWFkU3RhdGVPcHRp
b24geworICAgIHVuc2lnbmVkIHVzZXJDb3VudDsKKyAgICB0aHJlYWRfc3RhdGVfZmxhdm9yX3Qg
Zmxhdm9yOworfTsKKworc3RhdGljIFRocmVhZFN0YXRlT3B0aW9uIHRocmVhZFN0YXRlT3B0aW9u
KCkKK3sKICNpZiBDUFUoWDg2KQotICAgIHVuc2lnbmVkIHVzZXJDb3VudCA9IHNpemVvZihyZWdp
c3RlcnMpIC8gc2l6ZW9mKGludCk7CisgICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9mKFBs
YXRmb3JtUmVnaXN0ZXJzKSAvIHNpemVvZihpbnQpOwogICAgIHRocmVhZF9zdGF0ZV9mbGF2b3Jf
dCBmbGF2b3IgPSBpMzg2X1RIUkVBRF9TVEFURTsKICNlbGlmIENQVShYODZfNjQpCiAgICAgdW5z
aWduZWQgdXNlckNvdW50ID0geDg2X1RIUkVBRF9TVEFURTY0X0NPVU5UOwpAQCAtNDI3LDEzICs0
MjcsMjEgQEAgc2l6ZV90IFRocmVhZDo6Z2V0UmVnaXN0ZXJzKFBsYXRmb3JtUmVnaXN0ZXJzJiBy
ZWdpc3RlcnMpCiAjZWxzZQogI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAjZW5kaWYKKyAg
ICByZXR1cm4gVGhyZWFkU3RhdGVPcHRpb24geyB1c2VyQ291bnQsIGZsYXZvciB9OworfQorI2Vu
ZGlmIC8vIE9TKERBUldJTikKIAotICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dl
dF9zdGF0ZShtX3BsYXRmb3JtVGhyZWFkLCBmbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVnaXN0
ZXJzLCAmdXNlckNvdW50KTsKK3NpemVfdCBUaHJlYWQ6OmdldFJlZ2lzdGVycyhQbGF0Zm9ybVJl
Z2lzdGVycyYgcmVnaXN0ZXJzKQoreworICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
bG9ja2VyKG1fbXV0ZXgpOworI2lmIE9TKERBUldJTikKKyAgICBhdXRvIG9wdGlvbiA9IHRocmVh
ZFN0YXRlT3B0aW9uKCk7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRfZ2V0X3N0
YXRlKG1fcGxhdGZvcm1UaHJlYWQsIG9wdGlvbi5mbGF2b3IsICh0aHJlYWRfc3RhdGVfdCkmcmVn
aXN0ZXJzLCAmb3B0aW9uLnVzZXJDb3VudCk7CiAgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NF
U1MpIHsKICAgICAgICAgV1RGUmVwb3J0RmF0YWxFcnJvcihfX0ZJTEVfXywgX19MSU5FX18sIFdU
Rl9QUkVUVFlfRlVOQ1RJT04sICJKYXZhU2NyaXB0IGdhcmJhZ2UgY29sbGVjdGlvbiBmYWlsZWQg
YmVjYXVzZSB0aHJlYWRfZ2V0X3N0YXRlIHJldHVybmVkIGFuIGVycm9yICglZCkuIFRoaXMgaXMg
cHJvYmFibHkgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGluc2lkZSBSb3NldHRhLCB3aGljaCBpcyBu
b3Qgc3VwcG9ydGVkLiIsIHJlc3VsdCk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotICAgIHJl
dHVybiB1c2VyQ291bnQgKiBzaXplb2YodWludHB0cl90KTsKKyAgICByZXR1cm4gb3B0aW9uLnVz
ZXJDb3VudCAqIHNpemVvZih1aW50cHRyX3QpOwogI2Vsc2UKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKG1fc3VzcGVuZENvdW50LCAiV2UgY2FuIGdldCByZWdpc3RlcnMgb25seSBpZiB0aGUgdGhy
ZWFkIGlzIHN1c3BlbmRlZC4iKTsKICAgICByZWdpc3RlcnMgPSBtX3BsYXRmb3JtUmVnaXN0ZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggN2YyNDcwNjVlZWQ1YzFmMGIwMzUz
OGEzODFiNTg5MzA1MDVlMjIyMC4uZjkyOTk1MmE0YTEzODM3MTYyZmZjZTM5NWUyNDkyY2RiNDAy
Y2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC0yMDgsNyArMjA4LDYgQEAg
a2Vybl9yZXR1cm5fdCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9zdGF0ZSgKIHN0YXRpYyBi
b29sIHVzZU1hY2ggeyBmYWxzZSB9Owogdm9pZCBoYW5kbGVTaWduYWxzV2l0aE1hY2goKQogewot
ICAgIGRlbGl2ZXJNZXNzYWdlc1VzaW5nTWFjaCgpOwogICAgIHVzZU1hY2ggPSB0cnVlOwogfQog
Cg==
</data>
<flag name="review"
          id="333529"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>