<?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>169436</bug_id>
          
          <creation_ts>2017-03-09 13:13:59 -0800</creation_ts>
          <short_desc>[JSC][Linux] Implement VMTrap in Linux ports</short_desc>
          <delta_ts>2017-03-14 10:02:58 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>168920</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285525</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-09 13:13:59 -0800</bug_when>
    <thetext>Let&apos;s do that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286109</commentid>
    <comment_count>1</comment_count>
      <attachid>304144</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:11:40 -0800</bug_when>
    <thetext>Created attachment 304144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286110</commentid>
    <comment_count>2</comment_count>
      <attachid>304145</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:20:33 -0800</bug_when>
    <thetext>Created attachment 304145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286112</commentid>
    <comment_count>3</comment_count>
      <attachid>304146</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:28:29 -0800</bug_when>
    <thetext>Created attachment 304146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286114</commentid>
    <comment_count>4</comment_count>
      <attachid>304147</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:46:15 -0800</bug_when>
    <thetext>Created attachment 304147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286115</commentid>
    <comment_count>5</comment_count>
      <attachid>304148</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:47:50 -0800</bug_when>
    <thetext>Created attachment 304148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286116</commentid>
    <comment_count>6</comment_count>
      <attachid>304149</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:52:38 -0800</bug_when>
    <thetext>Created attachment 304149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286117</commentid>
    <comment_count>7</comment_count>
      <attachid>304150</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 01:59:17 -0800</bug_when>
    <thetext>Created attachment 304150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286118</commentid>
    <comment_count>8</comment_count>
      <attachid>304151</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 02:10:10 -0800</bug_when>
    <thetext>Created attachment 304151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286138</commentid>
    <comment_count>9</comment_count>
      <attachid>304162</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 07:59:11 -0800</bug_when>
    <thetext>Created attachment 304162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1286142</commentid>
    <comment_count>10</comment_count>
      <attachid>304163</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-11 09:01:38 -0800</bug_when>
    <thetext>Created attachment 304163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287241</commentid>
    <comment_count>11</comment_count>
      <attachid>304275</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-13 10:49:38 -0700</bug_when>
    <thetext>Created attachment 304275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287409</commentid>
    <comment_count>12</comment_count>
      <attachid>304275</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-13 16:25:08 -0700</bug_when>
    <thetext>Comment on attachment 304275
Patch

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

Thanks for the refactoring.  It makes the code looks so much cleaner.  r=me with some suggested changes.

&gt; Source/JavaScriptCore/runtime/MachineContext.h:103
&gt; +#else // !OS(DARWIN)

nit: using OS(WINDOWS) here would be more informative.

&gt; Source/JavaScriptCore/runtime/MachineContext.h:206
&gt; +#else // !OS(DARWIN)

ditto: #elif OS(WINDOWS)

&gt; Source/JavaScriptCore/runtime/MachineContext.h:307
&gt; +#else // !OS(DARWIN)

ditto: #elif OS(WINDOWS)

&gt; Source/JavaScriptCore/runtime/MachineContext.h:416
&gt; +#else // !OS(DARWIN)

ditto: #elif OS(WINDOWS)

&gt; Source/JavaScriptCore/runtime/MachineContext.h:478
&gt; +    return reinterpret_cast&lt;void*&amp;&gt;((uintptr_t&amp;) machineContext.gregs[5]);

How did you come up with gregs[5]?  The rest of the register values came from the mapping for regT1.  On MIPS, regT1 is MIPSRegisters::v1.  Does MIPSRegisters::v1 map to gregs[5]?

&gt; Source/JavaScriptCore/runtime/MachineContext.h:532
&gt; +#else // !OS(DARWIN)

ditto: #elif OS(WINDOWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287537</commentid>
    <comment_count>13</comment_count>
      <attachid>304275</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-14 00:31:05 -0700</bug_when>
    <thetext>Comment on attachment 304275
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:103
&gt;&gt; +#else // !OS(DARWIN)
&gt; 
&gt; nit: using OS(WINDOWS) here would be more informative.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:206
&gt;&gt; +#else // !OS(DARWIN)
&gt; 
&gt; ditto: #elif OS(WINDOWS)

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:307
&gt;&gt; +#else // !OS(DARWIN)
&gt; 
&gt; ditto: #elif OS(WINDOWS)

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:416
&gt;&gt; +#else // !OS(DARWIN)
&gt; 
&gt; ditto: #elif OS(WINDOWS)

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:478
&gt;&gt; +    return reinterpret_cast&lt;void*&amp;&gt;((uintptr_t&amp;) machineContext.gregs[5]);
&gt; 
&gt; How did you come up with gregs[5]?  The rest of the register values came from the mapping for regT1.  On MIPS, regT1 is MIPSRegisters::v1.  Does MIPSRegisters::v1 map to gregs[5]?

This is GPRInfo::argument1 register. It is mapped to MIPSRegister::a1.
In MIPS, registers are indexed as,
zero = 0
at = 1
v0 = 2
v1 = 3
a0 = 4
a1 = 5

This is why we specify 5 here.

&gt;&gt; Source/JavaScriptCore/runtime/MachineContext.h:532
&gt;&gt; +#else // !OS(DARWIN)
&gt; 
&gt; ditto: #elif OS(WINDOWS)

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287538</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-14 00:33:16 -0700</bug_when>
    <thetext>Committed r213886: &lt;http://trac.webkit.org/changeset/213886&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287621</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-03-14 08:31:15 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Committed r213886: &lt;http://trac.webkit.org/changeset/213886&gt;

It broke the CLoop build on El Capitan:
https://build.webkit.org/builders/Apple%20El%20Capitan%20LLINT%20CLoop%20%28BuildAndTest%29/builds/15032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287643</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-14 10:02:58 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Committed r213886: &lt;http://trac.webkit.org/changeset/213886&gt;
&gt; 
&gt; It broke the CLoop build on El Capitan:
&gt; https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20LLINT%20CLoop%20%28BuildAndTest%29/builds/15032

Speculative build fix for this landed in r213904: &lt;http://trac.webkit.org/r213904&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304144</attachid>
            <date>2017-03-11 01:11:40 -0800</date>
            <delta_ts>2017-03-11 01:20:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311181139.patch</filename>
            <type>text/plain</type>
            <size>45237</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTkwZDc4NjZlNGFkMzcyYmY2YTllZGIzMGY5OTc5ZGU0NzEzOTY2Li4zODNlODdiNWI5MGNkYWQ4
M2IwYjFkYjA0ZDUyNWEwMTcwZDhlY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpN
YWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcik6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVj
dGlvblBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdp
c3RlcnM6OmxsaW50UEMpOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9NYWNoaW5lQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjpmcmFtZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6aW5zdHJ1
Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9p
bnRlcjwxPik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaDoKKyAgICAgICAgKEpTQzo6cGxh
dGZvcm1UaHJlYWRTaWduYWwpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5jcHA6CisgICAg
ICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpT
aWduYWxDb250ZXh0OjphZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAqIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwOgorICAgICAgICAoSlNDOjpwcm9maWxpbmdU
aW1lcik6CisgICAgICAgICogdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpTaWdu
YWxDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKiB0b29scy9WTUluc3BlY3Rvci5jcHA6CisgICAg
ICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6dHJhcEhhbmRsZXIpOgorCiAyMDE3LTAzLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdyBIVFRQIHByb3RvY29s
IHZlcnNpb24gYW5kIG90aGVyIE5ldHdvcmsgTG9hZCBNZXRyaWNzIChJUCBBZGRyZXNzLCBQcmlv
cml0eSwgQ29ubmVjdGlvbiBJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTdjYjJlOWIxZjZhZTk0ZDZkNjU4ZjBkNGMyNDg2
MTU2NTBmZjBlOS4uZDhiNmIyMmQ3ZDU1YzQ4YWRjZjExZGVjNjNlNTM4MzcwNzIwZGJlNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBM
aW51eCBwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRW5hYmxlIFZNVHJhcCBtZWNoYW5pc20gZm9yIExpbnV4IGFuZCBGcmVlQlNELgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTctMDMtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFjdGl2YXRlIFZpZGVvVG9vbGJveCB3aGVuIFdlYlJU
QyBpcyBlbmFibGVkIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
Y2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggZjJkOGNiMTNlNTEwMTM2MDJlMmNiZjk5NTZjNGUx
ODVkZGYzNmE2Zi4uOGE2ZDU1ODExODZmNTI3ODM5MWYwOWZiMDVhNzBkZGVjNjVkZGVhZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CkBAIC00ODEsODcgKzQ4MSwxMiBAQCBzaXplX3QgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6Z2V0
UmVnaXN0ZXJzKFRocmVhZDo6UmVnaXN0ZXJzJiByZWdpc3RlcnMpCiAKIHZvaWQqIE1hY2hpbmVU
aHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKIHsKLSNpZiBP
UyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19lc3ApOwotI2VsaWYgQ1BVKFg4Nl82
NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JzcCk7Ci0jZWxp
ZiBDUFUoUFBDKSB8fCBDUFUoUFBDNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19yMSk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPihyZWdzLl9fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fc3ApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFy
Y2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLQotI2lmIENQ
VShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuZXNwKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3Mu
cnNwKTsKLSNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5yMSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFS
V0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuU3ApOwotI2VsaWYgQ1BVKE1JUFMp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuSW50
U3ApOwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5Fc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5Sc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVncyk7CiAj
ZWxpZiBVU0UoUFRIUkVBRFMpCiAKLSNpZiBPUyhGUkVFQlNEKSAmJiBFTkFCTEUoSklUKQotCi0j
aWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5tY19yc3ApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfU1Bd
KTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3Bfc3ApOwotI2VsaWYg
Q1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3Qp
IHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1syOV0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3du
IEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiBFTkFC
TEUoSklUKQotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRVNQXSk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SU1BdKTsKLSNlbGlmIENQVShBUk0p
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFj
aGluZUNvbnRleHQuYXJtX3NwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5zcCk7Ci0j
ZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1syOV0pOwotI2Vsc2UKLSNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiAoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChf
X0dMSUJDX18pKSAmJiBFTkFCTEUoSklUKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6c3Rh
Y2tQb2ludGVyKHJlZ3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICAgICB2b2lkKiBzdGFja0Jh
c2UgPSAwOwogICAgIHNpemVfdCBzdGFja1NpemUgPSAwOwpAQCAtNTg2LDgyICs1MTEsMTAgQEAg
dm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBj
b25zdAogI2lmIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIHZvaWQqIE1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJX
SU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19lYnApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JicCk7Ci0jZWxpZiBDUFUo
QVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fclsxMV0pOwot
I2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
Ll9feFsyOV0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0K
LSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MucnNwKTsKLSNlbHNlCi0jZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAz
Ci0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTEp
OwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBz
LiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRWJwKTsKLSNlbGlmIENQVShYODZf
NjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
UmJwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxp
ZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19lYnApOwotI2VsaWYg
Q1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yYnApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5fX2dyZWdzW19SRUdfRlBdKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJl
Z3MuZ3BfeFsyOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1szMF0pOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xp
YmMncyBzeXMvdWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19F
QlBdKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JCUF0pOwotI2Vs
aWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fZnApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0LnJlZ3NbMjldKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzMwXSk7Ci0j
ZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJ
TikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKHJlZ3MubWFjaGluZUNvbnRleHQpOwog
I2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5v
dGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCkBAIC02NjksMTcyICs1MjIsMjIg
QEAgdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIo
KSBjb25zdAogCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3Ry
dWN0aW9uUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYgX19EQVJXSU5f
VU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWdzLl9fZWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yaXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3BjKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3BjKTsKLSNlbHNlCi0jZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
Ci0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5l
aXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocmVncy5yaXApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlm
Ci0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlm
IE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPigodWludHB0cl90KSByZWdzLlBjKTsKLSNlbGlmIENQVShNSVBTKQotI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/Ci0jZWxp
ZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90
KSByZWdzLkVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQotI2lmIENQVShYODYp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFj
aGluZUNvbnRleHQubWNfZWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmlw
KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1BDXSk7Ci0jZWxpZiBD
UFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3Qp
IHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX2Vscik7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5tY19wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0j
ZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2Vx
dWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGlu
ZUNvbnRleHQuZ3JlZ3NbUkVHX0VJUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5n
cmVnc1tSRUdfUklQXSk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9wYyk7Ci0jZWxp
ZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MubWFjaGluZUNvbnRleHQucGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQu
cGMpOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBP
UyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjppbnN0
cnVjdGlvblBvaW50ZXIocmVncyk7CisjZWxpZiBPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJ
QkNfXykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdz
Lm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGlu
c3RydWN0aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KICNl
bmRpZgogfQorCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmxsaW50
UEMoKSBjb25zdAogewogICAgIC8vIExMSW50IHVzZXMgcmVnVDQgYXMgUEMuCi0jaWYgT1MoREFS
V0lOKQotCi0jaWYgX19EQVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQ
Qy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzaSk7Ci0j
ZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2
UmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPihyZWdzLl9fcjgpOwotI2VsaWYgQ1BVKEFSTSkKLSAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4i
KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JbOF0pOwotI2Vs
aWYgQ1BVKEFSTTY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNNjRS
ZWdpc3RlcnM6Ong0LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX194WzRdKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCi0jaWYgQ1BVKFg4NikK
LSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAi
V3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuZXNpKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJ
bnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MucjgpOwotI2Vsc2UKLSNlcnJvciBVbmtub3du
IEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKLQotLy8g
ZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJNKQotICAgIHN0
YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExM
SW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90
KSByZWdzLlI4KTsKLSNlbGlmIENQVShNSVBTKQotI2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRv
IHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/Ci0jZWxpZiBDUFUoWDg2KQotICAgIHN0
YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBM
TEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5Fc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50
OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6cjEwLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUjEwKTsKLSNl
bHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVF
QlNEKQotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19lc2kpOwotI2VsaWYgQ1BVKFg4Nl82
NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3Nb
X1JFR19SOF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF94WzRd
KTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMTJdKTsKLSNlbHNlCi0jZXJy
b3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNf
XykKLQotLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vj
b250ZXh0LmguCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRVNJXSk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SOF0pOwotI2VsaWYgQ1BVKEFSTSkK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5hcm1fcjgpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnJlZ3NbNF0p
OwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMTJdKTsKLSNlbHNlCi0jZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5E
T1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIo
cmVncyk7CisjZWxpZiBPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICByZXR1
cm4gTWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3MubWFjaGluZUNv
bnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgTExJbnRQQyBmb3Ig
YW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oCmluZGV4IDc5Nzg0MTJmYmFhMWJk
MGU0OWI5YjM2ODZiYTI4YjM1NDc3NTI5M2MuLjk5YTQyN2E0ODhjYzI4ZDY3M2NiMmEwMzYxODc2
N2QxNzliNzdiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVT
dGFja01hcmtlci5oCkBAIC0yMSw2ICsyMSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRocmVhZC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtODAsMjUgKzgx
LDggQEAgY2xhc3MgTWFjaGluZVRocmVhZHMgewogICAgICAgICAgICAgdm9pZCogbGxpbnRQQygp
IGNvbnN0OwogI2VuZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKICAgICAgICAgICAg
IAotI2lmIE9TKERBUldJTikKLSNpZiBDUFUoWDg2KQotICAgICAgICAgICAgdHlwZWRlZiBpMzg2
X3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICAgICAgICAgIHR5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7
Ci0jZWxpZiBDUFUoUFBDKQotICAgICAgICAgICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlX3Qg
UGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoUFBDNjQpCi0gICAgICAgICAgICB0eXBlZGVm
IHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKEFSTSkK
LSAgICAgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJz
OwotI2VsaWYgQ1BVKEFSTTY0KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRl
NjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1
cmUKLSNlbmRpZgotICAgICAgICAgICAgCi0jZWxpZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAg
dHlwZWRlZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0ZXJzOworI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICAgICAgICAgIHVzaW5nIFBsYXRmb3JtUmVnaXN0ZXJzID0gTWFjaGluZUNv
bnRleHQ6OlBsYXRmb3JtUmVnaXN0ZXJzOwogI2VsaWYgVVNFKFBUSFJFQURTKQogICAgICAgICAg
ICAgc3RydWN0IFBsYXRmb3JtUmVnaXN0ZXJzIHsKICAgICAgICAgICAgICAgICBwdGhyZWFkX2F0
dHJfdCBhdHRyaWJ1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGlu
ZUNvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzlhODljNjgzNWNmODRlNTExZDRhMGQ3MGY5NzJmMTI1
ZDhkOTNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFjaGluZUNvbnRleHQuaApAQCAtMCwwICsxLDU4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5oPgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1h
a2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRfdCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRo
aXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZyZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdv
cmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVkIGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4K
Ky8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3
MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNsdWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5k
aWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9T
KERBUldJTikgfHwgT1MoV0lORE9XUykKKworI2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQor
dHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7
CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdp
c3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBs
YXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0
ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhy
ZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBB
cmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlm
IENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9f
cnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BV
KEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
cmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQ
UEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNl
bmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIo
UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7
CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
cmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzddKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNl
bHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19E
QVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNo
aXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGlu
ZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQorewor
I2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUo
WDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOwor
I2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBf
X0RBUldJTl9VTklYMDMKK30KKwordGVtcGxhdGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQ
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYg
YXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFS
V0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yc2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8
IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsx
XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5k
aWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQor
I2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lO
X1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVj
dGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNl
cyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9f
ZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHN0
YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExM
SW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4
XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9
PSBBUk02NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3du
IEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKKyNpZiBD
UFUoWDg2KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJz
Ojplc2ksICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5lc2kpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBzdGF0aWNfYXNzZXJ0KExM
SW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9y
IFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgw
MworfQorI2VuZGlmCisKKyNlbGlmIE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0
Zm9ybVJlZ2lzdGVyczsKKworaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ3MpCit7CisjaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOwor
I2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSByZWdzLkVzcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9p
bnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlm
IENQVShNSVBTKQorI2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2Ug
ZXZlbiBuZWVkIHRoaXM/CisjZWxpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnAp
OworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGlu
ZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQorewor
I2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0
cl90JikgcmVncy5QYyk7CisjZWxpZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0
byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7
CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuUmlwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1
cmUKKyNlbmRpZgorfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50
ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1
bWVudFBvaW50ZXI8MT4oUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpOworeworI2lmIENQVShBUk0p
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5S
MSk7CisjZWxpZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVkeCk7CisjZWxpZiBDUFUo
WDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IHJlZ3MuUmR4KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
fQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50
ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBh
cyBQQy4KKyNpZiBDUFUoQVJNKQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0g
QVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMp
CisjZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQg
dGhpcz8KKyNlbGlmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9
PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShY
ODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6
OnIxMCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjEwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNo
aXRlY3R1cmUKKyNlbmRpZgorfQorI2VuZGlmCisKKyNlbmRpZgorCitpbmxpbmUgdm9pZCogc3Rh
Y2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBz
dGFja1BvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKwor
aW5saW5lIHZvaWQqIGZyYW1lUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykK
K3sKKyAgICByZXR1cm4gZnJhbWVQb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMm
PihyZWdzKSk7Cit9CisKK2lubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxh
dGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihj
b25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworfQorCit0ZW1wbGF0ZTxzaXpl
X3QgTj4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0
ZXJzJiBhcmdzKQoreworICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXIoY29uc3RfY2FzdDxQbGF0
Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworI2lmIEVOQUJMRShKSVQpCitpbmxpbmUgdm9p
ZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
Cit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZv
cm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisjZW5kaWYKKworI2VuZGlmCisKKyNpZiBPUyhEQVJX
SU4pIHx8ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pKSAmJiAoQ1BVKFg4Nikg
fHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpKQor
CitpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkK
K3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIHN0YWNrUG9pbnRlcihtYWNoaW5lQ29udGV4
dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19l
c3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yc3ApOworI2VsaWYgQ1BVKEFSTSkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5fX2dyZWdzW19SRUdfU1BdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19n
cHJlZ3MuZ3Bfc3ApOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1syOV0pOworI2Vs
c2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQo
X19HTElCQ19fKQorCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRVNQXSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SU1BdKTsKKyNlbGlmIENQVShBUk0pCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNv
bnRleHQuYXJtX3NwKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5zcCk7CisjZWxpZiBDUFUo
TUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1syOV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25z
dCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICByZXR1cm4gc3RhY2tQb2ludGVy
KGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisKK2lubGluZSB2
b2lkKiYgZnJhbWVQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9T
KERBUldJTikKKyAgICByZXR1cm4gZnJhbWVQb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsK
KyNlbGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VicCk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JicCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9f
Z3JlZ3NbX1JFR19GUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF94
WzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJD
X18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91
Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VCUF0pOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7CisjZWxpZiBDUFUoQVJNKQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250
ZXh0LmFybV9mcCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1syOV0pOworI2VsaWYg
Q1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNo
aXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBm
cmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYK
K30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5l
Q29udGV4dCkKK3sKKyAgICByZXR1cm4gZnJhbWVQb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRf
dCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2lu
dGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikKKyAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VpcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JpcCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JF
R19QQ10pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9lbHIpOworI2Vs
aWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0
cl90JikgbWFjaGluZUNvbnRleHQubWNfcGMpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9s
bG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FSVBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuZ3JlZ3NbUkVHX1JJUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fcGMpOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnBjKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LnBjKTsK
KyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQorI2Vy
cm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVy
IHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqIGluc3Ry
dWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVD
b250ZXh0KSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIE4+Cit2b2lkKiYgYXJndW1lbnRQb2lu
dGVyKG1jb250ZXh0X3QmKTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBv
aW50ZXI8MT4obWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQor
ICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXI8MT4obWFjaGluZUNvbnRleHQtPl9fc3MpOworI2Vs
aWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZWR4KTsKKyNlbGlmIENQ
VShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgbWFjaGluZUNvbnRleHQubWNfcnNpKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1IxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMV0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1s1XSk7CisjZWxzZQorI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisK
Ky8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4
dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VEWF0pOworI2VsaWYgQ1BVKFg4
Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUlNJXSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFy
bV9yMSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1sxXSk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5ncmVnc1s1XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgZnJhbWUgcG9p
bnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK3Rl
bXBsYXRlPHVuc2lnbmVkIE4+CitpbmxpbmUgdm9pZCogYXJndW1lbnRQb2ludGVyKGNvbnN0IG1j
b250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXI8
Tj4oY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKworI2lmIEVO
QUJMRShKSVQpCitpbmxpbmUgdm9pZComIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0
X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIC8vIExMSW50IHVzZXMgcmVnVDQgYXMgUEMuCisj
aWYgT1MoREFSV0lOKQorICAgIHJldHVybiBsbGludEluc3RydWN0aW9uUG9pbnRlcihtYWNoaW5l
Q29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19lc2kpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yOCk7CisjZWxpZiBDUFUo
QVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19SOF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
Lm1jX2dwcmVncy5ncF94WzRdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMTJd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxpZiBk
ZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9u
IGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdf
RVNJXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SOF0pOworI2VsaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSBtYWNoaW5lQ29udGV4dC5hcm1fcjgpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LnJlZ3Nb
NF0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbMTJdKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkg
dG8gZ2V0IHRoZSBMTEludFBDIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IG1j
b250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorI2Vu
ZGlmCisKKyNlbmRpZgorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9QbGF0Zm9ybVRocmVhZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UGxhdGZvcm1UaHJlYWQuaAppbmRleCBiZjc1NGZkZWE1M2ZlOTVmYzM4MjM3OGZiZGJkMmExYjA2
OTNkYjc0Li41OGRlY2MzYzJkMzdiZjViMGU1ZjM4YjU4M2Y3MDAyMmIxY2JlOWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKQEAgLTI5LDYg
KzI5LDEwIEBACiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlmCiAKKyNpZiBVU0UoUFRIUkVB
RFMpICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoREFSV0lOKQorI2luY2x1ZGUgPHNpZ25hbC5oPgor
I2VuZGlmCisKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+CiAj
ZWxpZiBPUyhXSU5ET1dTKQpAQCAtNjUsNCArNjksMTIgQEAgaW5saW5lIGJvb2wgcGxhdGZvcm1U
aHJlYWRTaWduYWwoUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJlYWQsIGludCBzaWduYWxOdW1i
ZXIKIH0KICNlbmRpZgogCisjaWYgVVNFKFBUSFJFQURTKQoraW5saW5lIGJvb2wgcGxhdGZvcm1U
aHJlYWRTaWduYWwoUGxhdGZvcm1UaHJlYWQgcHRocmVhZElELCBpbnQgc2lnbmFsTnVtYmVyKQor
eworICAgIGludCBlcnJObyA9IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7
CisgICAgcmV0dXJuICFlcnJObzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
VHJhcHMuY3BwCmluZGV4IGVlMDdlMDU4NmUxMjc5YjZlZjczMTkwY2E5MTkzNTFmMzlhZTIxMGUu
LjE2YjA1YmUwMzljYjY4OWYwZjMxYzZjMjQzNDE2MTY4YmNhNzhhMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNp
bmNsdWRlICJWTS5oIgpAQCAtNTYsNzkgKzU3LDMxIEBAIEFMV0FZU19JTkxJTkUgVk0mIFZNVHJh
cHM6OnZtKCkgY29uc3QKIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWd1c3IxQWN0aW9uOwog
c3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ3RyYXBBY3Rpb247CiAKLSNpZiBDUFUoWDg2XzY0
KQotCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90
JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFw
UEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yaXApKQotICAgICAg
ICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5f
X3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1j
b250ZXh0LT5fX3NzLl9fcmJwKSkKKyAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCisgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hp
bmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIGZyYW1lUG9pbnRl
cihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250ZXh0KSkKICAgICB7CisjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICAgICAgLy8gT24gWDg2XzY0LCBTSUdUUkFQIHJlcG9y
dHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCiAgICAg
ICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAxOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgdm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rp
b24oKQogICAgIHsKLSAgICAgICAgbWNvbnRleHQtPl9fc3MuX19yaXAgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odHJhcFBDKTsKLSAgICB9Ci0KLSAgICBtY29udGV4dF90JiBtY29udGV4
dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQq
IGZyYW1lUG9pbnRlcjsKLX07Ci0gICAgCi0jZWxpZiBDUFUoWDg2KQotCi1zdHJ1Y3QgU2lnbmFs
Q29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAg
ICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19laXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VzcCkpCi0gICAgICAgICwg
ZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZWJw
KSkKLSAgICB7Ci0gICAgICAgIC8vIE9uIFg4NiwgU0lHVFJBUCByZXBvcnRzIHRoZSBhZGRyZXNz
IGFmdGVyIHRoZSB0cmFwcGluZyBQQy4gU28sIGRlYyBieSAxLgotICAgICAgICB0cmFwUEMgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0cmFwUEMpIC0gMTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24oKQotICAgIHsKLSAgICAg
ICAgbWNvbnRleHQtPl9fc3MuX19laXAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odHJh
cFBDKTsKLSAgICB9Ci0gICAgCi0gICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7Ci0gICAgdm9pZCog
dHJhcFBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7
Ci19OwotCi0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNKQot
ICAgIAotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRf
dCYgbWNvbnRleHQpCi0gICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgdHJh
cFBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcGMpKQotICAgICAg
ICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5f
X3NwKSkKLSNpZiBDUFUoQVJNNjQpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotI2VsaWYgQ1BVKEFSTV9USFVNQjIp
Ci0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0
LT5fX3NzLl9fcls3XSkpCi0jZWxpZiBDUFUoQVJNKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JbMTFdKSkKKyNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoWDg2KQorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Q
b2ludGVyKG1jb250ZXh0KSA9IHRyYXBQQzsKICNlbmRpZgotICAgIHsgfQotICAgICAgICAKLSAg
ICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpIHsgfQorICAgIH0K
IAogICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OwogICAgIHZvaWQqIHRyYXBQQzsKICAgICB2b2lk
KiBzdGFja1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKLSAgICAKLSNlbmRp
ZgogCiBpbmxpbmUgc3RhdGljIGJvb2wgdm1Jc0luYWN0aXZlKFZNJiB2bSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAppbmRleCBmOTE2YzIwM2Ix
ZTEyMzAwN2YzN2M4ZWZmMGNiMWMxMmFlY2EwYjIxLi4yZDU5NTNlYTM2NTk0ZjY0ZmRkN2JmYjQ0
NjAyMzBlMTA5Yzg4YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5o
IgogCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGUuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5o
IgogI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9yLmg+CiAKICNpZiBIQVZFKFNJR05BTF9IKQpA
QCAtNjYsMTkgKzY3LDEzIEBAIHN0YXRpYyB2b2lkIHNldFByb2ZpbGVUaW1lcih1bnNpZ25lZCB1
c2VjKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCiAKLSNpZiBPUyhEQVJX
SU4pICYmICFQTEFURk9STShHVEspICYmIENQVShYODZfNjQpCi1zdGF0aWMgdm9pZCBwcm9maWxp
bmdUaW1lcihpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVhcCkKLXsKLSAgICBtY29udGV4dF90IGNv
bnRleHQgPSBzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKS0+dWNfbWNvbnRleHQ7Ci0gICAg
Q29kZVByb2ZpbGluZzo6c2FtcGxlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQtPl9f
c3MuX19yaXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQqKj4oY29udGV4dC0+X19zcy5fX3JicCkpOwotfQotI2VsaWYgT1MoTElOVVgpICYmIENQVShY
ODYpCisjaWYgKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkpIHx8
IChPUyhMSU5VWCkgJiYgQ1BVKFg4NikpCiBzdGF0aWMgdm9pZCBwcm9maWxpbmdUaW1lcihpbnQs
IHNpZ2luZm9fdCosIHZvaWQqIHVhcCkKIHsKICAgICBtY29udGV4dF90IGNvbnRleHQgPSBzdGF0
aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKS0+dWNfbWNvbnRleHQ7Ci0gICAgQ29kZVByb2ZpbGlu
Zzo6c2FtcGxlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuZ3JlZ3NbUkVHX0VJUF0p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUJQXSkpOworICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZSgKKyAgICAg
ICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KSwKKyAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIoY29u
dGV4dCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggMWFjMWFmNDgwMTdlY2Y1MjA0MTYwOTE5
MjYzYWIzODQ1MDYyMDA2Zi4uZmQ1YzM3NTNiNTk5YzY1M2ZmYjdlYTNjOGViNmY2ZGYwNjkwMWZj
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFu
YWx5emVyLmNwcApAQCAtNzgsMTcgKzc4LDE3IEBAIGNsYXNzIFNpZ2lsbENyYXNoQW5hbHl6ZXIg
ewogICAgIAogI2VuZGlmIC8vIFVTRShPU19MT0cpCiAKLSNpZiBDUFUoWDg2XzY0KQogc3RydWN0
IFNpZ25hbENvbnRleHQgewogICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQp
CiAgICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgbWFjaGluZVBDKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcmlwKSkKLSAgICAgICAgLCBzdGFj
a1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yc3ApKQot
ICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KG1jb250
ZXh0LT5fX3NzLl9fcmJwKSkKKyAgICAgICAgLCBtYWNoaW5lUEMoTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCisgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hp
bmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIGZyYW1lUG9pbnRl
cihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250ZXh0KSkKICAgICB7IH0KIAogICAg
IHZvaWQgZHVtcCgpCiAgICAgeworI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIEZPUl9FQUNIX1JF
R0lTVEVSKHYpIFwKICAgICAgICAgdihyYXgpIFwKICAgICAgICAgdihyYngpIFwKQEAgLTExNiwy
NiArMTE2LDggQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICBsb2coIlJlZ2lzdGVy
ICIgI19fcmVnICI6ICVwIiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X18jI19fcmVnKSk7CiAgICAgICAgIEZPUl9FQUNIX1JFR0lTVEVSKERVTVBfUkVHSVNURVIpCiAj
dW5kZWYgRk9SX0VBQ0hfUkVHSVNURVIKLSAgICB9Ci0KLSAgICBtY29udGV4dF90JiBtY29udGV4
dDsKLSAgICB2b2lkKiBtYWNoaW5lUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZv
aWQqIGZyYW1lUG9pbnRlcjsKLX07CiAKICNlbGlmIENQVShBUk02NCkKLQotc3RydWN0IFNpZ25h
bENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCi0gICAg
ICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgbWFjaGluZVBDKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcGMpKQotICAgICAgICAsIHN0YWNrUG9pbnRl
cihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3NwKSkKLSAgICAgICAg
LCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihtY29udGV4dC0+X19z
cy5fX2ZwKSkKLSAgICB7IH0KLQotICAgIHZvaWQgZHVtcCgpCi0gICAgewogICAgICAgICBpbnQg
aTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI4OyBpICs9IDQpIHsKICAgICAgICAgICAgIGxv
ZygieCVkOiAlMDE2bGx4IHglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IiwK
QEAgLTE0OSwyOCArMTMxLDE0IEBAIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICAgICAgICAg
IGksIG1jb250ZXh0LT5fX3NzLl9feFtpXSwgbWNvbnRleHQtPl9fc3MuX19mcCwgbWNvbnRleHQt
Pl9fc3MuX19scik7CiAgICAgICAgIGxvZygic3A6ICUwMTZsbHggcGM6ICUwMTZsbHggY3Bzcjog
JTA4eCIsCiAgICAgICAgICAgICBtY29udGV4dC0+X19zcy5fX3NwLCBtY29udGV4dC0+X19zcy5f
X3BjLCBtY29udGV4dC0+X19zcy5fX2Nwc3IpOworI2VuZGlmCiAgICAgfQogCi0gICAgbWNvbnRl
eHRfdCYgbWNvbnRleHQ7CiAgICAgdm9pZCogbWFjaGluZVBDOwogICAgIHZvaWQqIHN0YWNrUG9p
bnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7CiB9OwogCi0jZWxzZQotCi1zdHJ1Y3QgU2ln
bmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90JikgeyB9Ci0gICAgCi0g
ICAgdm9pZCBkdW1wKCkgeyB9Ci0gICAgCi0gICAgdm9pZCogbWFjaGluZVBDOwotICAgIHZvaWQq
IHN0YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7Ci19OwotICAgIAotI2VuZGlm
Ci0KIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWdJbGxBY3Rpb247CiAKIHN0YXRpYyB2b2lk
IGhhbmRsZUNyYXNoKGludCBzaWduYWxOdW1iZXIsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWFw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKaW5kZXggOGJl
M2M4NTYyMDIwY2M2MjFkMzVkYzQ3Mjc0Mzg0YWZlYjI5ZWQxZi4uZTM5YWMzMjc5NGIyYWM0NDYy
Y2E1OTYyNjU0NjdhYjU5MjRjZjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Vk1JbnNwZWN0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKKyNp
bmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0
Zi9FeHBlY3RlZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGFlYmIxNzE1YWIxNGY2OWY2YmY0YTJjMWIy
YWNjNjdmOWRlMTkzOTguLmIxNTAzNzQ0NzRkMGJlOTZlZGJjYTA0ODhkMGU3YjY4Y2IwYzdjNjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25h
bEhhbmRsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
CiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250
ZXh0LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgog
I2luY2x1ZGUgIldhc21NZW1vcnkuaCIKQEAgLTUwLDQwICs1MSwxMCBAQCBzdGF0aWMgYm9vbCBm
YXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU3RhdGljTG9jayBjb2RlTG9j
YXRpb25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxzdGQ6OnR1cGxl
PFZNKiwgdm9pZCosIHZvaWQqPj4+IGNvZGVMb2NhdGlvbnM7IC8vICh2bSwgc3RhcnQsIGVuZCkK
IAotLy8gRklYTUU6IENsZWFuIHVwIG1jb250ZXh0X3QgaGFuZGxpbmcgY29kZSBzaW5jZSBpdCBp
cyBzY2F0dGVyZWQgaW4gaGVhcC8sIHRvb2xzLyBhbmQgd2FzbS8uCi0vLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTgwCi0jaWYgQ1BVKFg4Nl82NCkKLQotI2lm
IE9TKERBUldJTikKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQtPl9fc3Mu
X19yaXAKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0LT5fX3NzLl9fcnNpCi0jZWxp
ZiBPUyhGUkVFQlNEKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5tY19y
aXAKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0Lm1jX3JzaQotI2VsaWYgZGVmaW5l
ZChfX0dMSUJDX18pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0LmdyZWdz
W1JFR19SSVBdCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5ncmVnc1tSRUdfUlNJ
XQotI2VuZGlmCi0KLSNlbHNlCi0KLSNpZiBPUyhEQVJXSU4pCi0jZGVmaW5lIEluc3RydWN0aW9u
UG9pbnRlckdQUiBjb250ZXh0LT5fX3NzLl9fcGMKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBj
b250ZXh0LT5fX3NzLl9feFsxXQotI2VsaWYgT1MoRlJFRUJTRCkKLSNkZWZpbmUgSW5zdHJ1Y3Rp
b25Qb2ludGVyR1BSIGNvbnRleHQubWNfZ3ByZWdzLmdwX2VscgotI2RlZmluZSBGaXJzdEFyZ3Vt
ZW50R1BSIGNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMV0KLSNlbGlmIGRlZmluZWQoX19HTElCQ19f
KQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5wYwotI2RlZmluZSBGaXJz
dEFyZ3VtZW50R1BSIGNvbnRleHQucmVnc1sxXQotI2VuZGlmCi0KLSNlbmRpZgotCiBzdGF0aWMg
dm9pZCB0cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNpZ0luZm8sIHZvaWQqIHVj
b250ZXh0KQogewogICAgIG1jb250ZXh0X3QmIGNvbnRleHQgPSBzdGF0aWNfY2FzdDx1Y29udGV4
dF90Kj4odWNvbnRleHQpLT51Y19tY29udGV4dDsKLSAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0
aW9uID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSKTsKKyAg
ICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9u
UG9pbnRlcihjb250ZXh0KTsKICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAic3RhcnRpbmcgaGFu
ZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdJbnN0cnVjdGlvbikpOwog
CiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkpJVCBtZW1vcnkgc3RhcnQ6ICIsIFJhd1BvaW50
ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBv
b2wpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZW5kT2ZG
aXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSkpOwpAQCAtMTIyLDggKzkzLDggQEAgc3RhdGljIHZv
aWQgdHJhcEhhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5mb190KiBzaWdJbmZvLCB2b2lkKiB1Y29u
dGV4dCkKICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGNlcHRpb25TdHViKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJmb3VuZCBzdHViOiAiLCBSYXdQb2ludGVyKGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgRmlyc3RBcmd1bWVudEdQ
UiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9y
eUFjY2Vzcyk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uUG9pbnRlckdQUiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQ
b2ludGVyPDE+KGNvbnRleHQpID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEV4Y2VwdGlvblR5cGU6
Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KSA9IGV4Y2VwdGlvblN0dWIuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBmNjVkNDIxNmFjYzAy
ZGRjYzJkNThkZmVmZjE5YmRiOTk1MDkyY2EzLi4yMjE4MGJkZTJjZmZkOGZlYWFkOWY0MzI5NmJk
OGZmOWIzNzEzZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTkxMyw3ICs5MTMsNyBAQAogI2VuZGlmCiAj
ZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJVCkKKyNpZiAoT1MoREFSV0lOKSB8
fCBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkpICYmIEVOQUJMRShKSVQpCiAjZGVmaW5lIEVOQUJM
RV9TSUdOQUxfQkFTRURfVk1fVFJBUFMgMQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304145</attachid>
            <date>2017-03-11 01:20:33 -0800</date>
            <delta_ts>2017-03-11 01:28:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311182032.patch</filename>
            <type>text/plain</type>
            <size>45256</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi44NDc2MjRlN2QyNWE1MjJl
NjgwY2YyNjhlNWJkYjUyNTA5NzNmYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpN
YWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcik6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVj
dGlvblBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdp
c3RlcnM6OmxsaW50UEMpOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9NYWNoaW5lQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjpmcmFtZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6aW5zdHJ1
Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9p
bnRlcjwxPik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaDoKKyAgICAgICAgKEpTQzo6cGxh
dGZvcm1UaHJlYWRTaWduYWwpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5jcHA6CisgICAg
ICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpT
aWduYWxDb250ZXh0OjphZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAqIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwOgorICAgICAgICAoSlNDOjpwcm9maWxpbmdU
aW1lcik6CisgICAgICAgICogdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpTaWdu
YWxDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKiB0b29scy9WTUluc3BlY3Rvci5jcHA6CisgICAg
ICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6dHJhcEhhbmRsZXIpOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRM
UyBsb2FkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCAyMTQ0YzJlYTI3NTg2NTljMGQ3YzE3NTMwZWQ5ZTU0NmRjNWIyZmFiLi40
Nzc0NzE1NjA3NjYyMTkzZTFjN2U0Y2Q1NTgzNjQzMDBiNjI2Mjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE3LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtKU0NdW0xpbnV4XSBJbXBsZW1lbnQgVk1UcmFwIGluIExpbnV4IHBvcnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgVk1U
cmFwIG1lY2hhbmlzbSBmb3IgTGludXggYW5kIEZyZWVCU0QuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm0uaDoKKwogMjAxNy0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIFRoZSBKSVRzIHNob3VsZCBiZSBhYmxlIHRvIGVtaXQgZmFzdCBUTFMgbG9hZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CmluZGV4IGYyZDhjYjEzZTUxMDEzNjAyZTJjYmY5OTU2YzRlMTg1ZGRmMzZhNmYuLjhhNmQ1NTgx
MTg2ZjUyNzgzOTFmMDlmYjA1YTcwZGRlYzY1ZGRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtNDgxLDg3ICs0ODEsMTIg
QEAgc2l6ZV90IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyhUaHJlYWQ6OlJl
Z2lzdGVycyYgcmVnaXN0ZXJzKQogCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdp
c3RlcnM6OnN0YWNrUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYgX19E
QVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPihyZWdzLl9fZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQ
QzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcjEpOwotI2Vs
aWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3Nw
KTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5fX3NwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgot
Ci0jZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLnJzcCk7Ci0jZWxpZiBDUFUoUFBD
KSB8fCBDUFUoUFBDNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3Mu
cjEpOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRp
ZiAvLyBfX0RBUldJTl9VTklYMDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRP
V1MpCi0KLSNpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLlNwKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLkludFNwKTsKLSNlbGlmIENQVShYODYp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRXNw
KTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MuUnNwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1
cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBN
YWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ3MpOwogI2VsaWYgVVNFKFBUSFJFQURTKQog
Ci0jaWYgT1MoRlJFRUJTRCkgJiYgRU5BQkxFKEpJVCkKLQotI2lmIENQVShYODYpCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRl
eHQubWNfZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcnNwKTsKLSNlbGlm
IENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3Qp
IHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1NQXSk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFj
aGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3NwKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
Lm1jX3JlZ3NbMjldKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRp
ZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgRU5BQkxFKEpJVCkKLQotI2lmIENQVShY
ODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5ncmVnc1tSRUdfUlNQXSk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9zcCk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuc3ApOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQuZ3JlZ3NbMjldKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNl
bmRpZgotCisjaWYgKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgRU5BQkxF
KEpJVCkKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzLm1hY2hp
bmVDb250ZXh0KTsKICNlbHNlCiAgICAgdm9pZCogc3RhY2tCYXNlID0gMDsKICAgICBzaXplX3Qg
c3RhY2tTaXplID0gMDsKQEAgLTU4Niw4MiArNTExLDEwIEBAIHZvaWQqIE1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKICNpZiBFTkFCTEUoU0FN
UExJTkdfUFJPRklMRVIpCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6
OmZyYW1lUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYgX19EQVJXSU5f
VU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWdzLl9fZWJwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yYnApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JbMTFdKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbMjldKTsKLSNlbHNlCi0j
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxzZSAvLyAhX19EQVJXSU5f
VU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWdzLmVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPihyZWdzLnJzcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lO
KQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUjExKTsKLSNlbGlmIENQVShNSVBTKQot
I2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRo
aXM/Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLkVicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJicCk7Ci0jZWxzZQotI2Vycm9y
IFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQotI2lm
IENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3Qp
IHJlZ3MubWFjaGluZUNvbnRleHQubWNfZWJwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKLSNlbGlm
IENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90
KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8g
VGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0Lmgu
Ci0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SQlBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRl
eHQuYXJtX2ZwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1szMF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3du
IEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisg
ICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncyk7CisjZWxpZiBPUyhG
UkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAjZXJyb3IgTmVlZCBh
IHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMg
cGxhdGZvcm0KICNlbmRpZgpAQCAtNjY5LDE3MiArNTIyLDIyIEBAIHZvaWQqIE1hY2hpbmVUaHJl
YWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKCkgY29uc3QKIAogdm9pZCogTWFj
aGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVjdGlvblBvaW50ZXIoKSBjb25z
dAogewotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VpcCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9f
cmlwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHJlZ3MuX19wYyk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlZ3MuX19wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotI2lmIENQVShYODYpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuZWlwKTsKLSNlbGlmIENQVShYODZf
NjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MucmlwKTsKLSNlbHNl
Ci0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJX
SU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYg
Q1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkg
cmVncy5QYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3
aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FaXApOwotI2VsaWYg
Q1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5SaXApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlm
Ci0KLSNlbGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VpcCk7
Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19QQ10pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
Lm1jX2dwcmVncy5ncF9lbHIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcGMpOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xp
YmMncyBzeXMvdWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19F
SVBdKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0pOwotI2Vs
aWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0LnBjKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnBjKTsKLSNlbHNlCi0jZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5E
T1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3Mp
OworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJuIE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAj
ZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKwogdm9pZCogTWFj
aGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpsbGludFBDKCkgY29uc3QKIHsKICAgICAv
LyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFSV0lO
X1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBD
ID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9u
ZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5f
X3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9
PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzhdKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBz
dGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTTY0UmVnaXN0ZXJzOjp4NCwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9f
eFs0XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vs
c2UgLy8gIV9fREFSV0lOX1VOSVgwMwotI2lmIENQVShYODYpCi0gICAgc3RhdGljX2Fzc2VydChM
TEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOwot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVzaSk7Ci0jZWxpZiBDUFUo
WDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJz
OjpyOCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnI4KTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRp
ZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxp
ZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SOCk7Ci0jZWxpZiBD
UFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2
ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRXNpKTsKLSNlbGlm
IENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdp
c3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIxMCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQotI2lmIENQVShYODYp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFj
aGluZUNvbnRleHQubWNfZXNpKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcjgp
OwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjhdKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkg
cmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0XSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5tY19yZWdzWzEyXSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dp
bmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShY
ODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTSV0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5ncmVnc1tSRUdfUjhdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3I4KTsK
LSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5yZWdzWzRdKTsKLSNlbGlmIENQVShNSVBTKQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0LmdyZWdzWzEyXSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFj
aGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3MpOworI2VsaWYgT1MoRlJF
RUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojps
bGludEluc3RydWN0aW9uUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAjZXJy
b3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRo
aXMgcGxhdGZvcm0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuaAppbmRleCA3OTc4NDEyZmJhYTFiZDBlNDliOWIzNjg2YmEyOGIzNTQ3
NzUyOTNjLi45OWE0MjdhNDg4Y2MyOGQ2NzNjYjJhMDM2MTg3NjdkMTc5Yjc3YjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaApAQCAtMjEs
NiArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1UaHJlYWQuaCIKICNpbmNsdWRlICJSZWdpc3RlclN0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTgwLDI1ICs4MSw4IEBAIGNsYXNzIE1hY2hpbmVU
aHJlYWRzIHsKICAgICAgICAgICAgIHZvaWQqIGxsaW50UEMoKSBjb25zdDsKICNlbmRpZiAvLyBF
TkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgICAgICAgICAKLSNpZiBPUyhEQVJXSU4pCi0j
aWYgQ1BVKFg4NikKLSAgICAgICAgICAgIHR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0
Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgICAgICAgICB0eXBlZGVmIHg4
Nl90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFBQQykKLSAg
ICAgICAgICAgIHR5cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOwot
I2VsaWYgQ1BVKFBQQzY0KQotICAgICAgICAgICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk0pCi0gICAgICAgICAgICB0eXBlZGVm
IGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk02NCkK
LSAgICAgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLSAgICAgICAg
ICAgIAotI2VsaWYgT1MoV0lORE9XUykKLSAgICAgICAgICAgIHR5cGVkZWYgQ09OVEVYVCBQbGF0
Zm9ybVJlZ2lzdGVyczsKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgICAgICAg
ICB1c2luZyBQbGF0Zm9ybVJlZ2lzdGVycyA9IE1hY2hpbmVDb250ZXh0OjpQbGF0Zm9ybVJlZ2lz
dGVyczsKICNlbGlmIFVTRShQVEhSRUFEUykKICAgICAgICAgICAgIHN0cnVjdCBQbGF0Zm9ybVJl
Z2lzdGVycyB7CiAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3QgYXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGM5YTg5YzY4MzVjZjg0ZTUxMWQ0YTBkNzBmOTcyZjEyNWQ4ZDkzYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKQEAg
LTAsMCArMSw1ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgT1Mo
REFSV0lOKSB8fCBPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyNpbmNsdWRlIDxz
aWduYWwuaD4KKy8vIFVzaW5nIHNpZ25hbC5oIGRpZG4ndCBtYWtlIG1jb250ZXh0X3QgYW5kIHVj
b250ZXh0X3QgYXZhaWxhYmxlIG9uIEZyZWVCU0QuCisvLyBUaGlzIGJ1ZyBoYXMgYmVlbiBmaXhl
ZCBpbiBGcmVlQlNEIDExLjAtQ1VSUkVOVCwgc28gdGhpcyB3b3JrYXJvdW5kIGNhbiBiZQorLy8g
cmVtb3ZlZCBhZnRlciBGcmVlQlNEIDEwLnggZ29lcyBFT0wuCisvLyBodHRwczovL2J1Z3MuZnJl
ZWJzZC5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIwNzA3OQorI2lmIE9TKEZSRUVCU0Qp
CisjaW5jbHVkZSA8dWNvbnRleHQuaD4KKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0Mg
eworbmFtZXNwYWNlIE1hY2hpbmVDb250ZXh0IHsKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRP
V1MpCisKKyNpZiBPUyhEQVJXSU4pCisjaWYgQ1BVKFg4NikKK3R5cGVkZWYgaTM4Nl90aHJlYWRf
c3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShYODZfNjQpCit0eXBlZGVmIHg4
Nl90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFBQQykKK3R5
cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFBQ
QzY0KQordHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNl
bGlmIENQVShBUk0pCit0eXBlZGVmIGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKKyNlbGlmIENQVShBUk02NCkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZv
cm1SZWdpc3RlcnM7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYK
KworaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JzcCk7CisjZWxpZiBDUFUoUFBD
KSB8fCBDUFUoUFBDNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdz
Ll9fcjEpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19zcCk7CisjZWxzZQor
I2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lO
X1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KHJlZ3MuZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPihyZWdzLnJzcCk7CisjZWxpZiBDUFUoUFBDKSB8fCBDUFUoUFBDNjQpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLnIxKTsKKyNlbHNlCisjZXJy
b3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8gX19EQVJXSU5fVU5J
WDAzCit9CisKK2lubGluZSB2b2lkKiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiBy
ZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lYnApOworI2VsaWYgQ1BVKFg4Nl82NCkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yYnApOworI2VsaWYg
Q1BVKEFSTV9USFVNQjIpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdz
Ll9fcls3XSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4ocmVncy5fX3JbMTFdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX194WzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuZXNwKTsK
KyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLnJzcCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCitpbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBfX0RBUldJTl9VTklYMDMK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdz
Ll9fZWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLl9fcmlwKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNKSB8
fCBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9f
cGMpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNl
IC8vICFfX0RBUldJTl9VTklYMDMKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4ocmVncy5laXApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucmlwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCit9CisK
K3RlbXBsYXRlPHNpemVfdCBOPgordm9pZComIGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9ybVJlZ2lz
dGVycyYpOworCit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBfX0RBUldJTl9VTklYMDMKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fZWR4KTsK
KyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fcnNpKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JbMV0pOworI2VsaWYgQ1BVKEFSTTY0
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbMV0pOworI2Vs
c2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RB
UldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yc2kpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKworI2lmIEVO
QUJMRShKSVQpCitpbmxpbmUgdm9pZComIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworICAgIC8vIExMSW50IHVzZXMgcmVnVDQgYXMgUEMuCisjaWYg
X19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6
OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpy
OCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWdzLl9fcjgpOworI2VsaWYgQ1BVKEFSTSkKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JbOF0pOworI2VsaWYgQ1BVKEFSTTY0
KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNNjRSZWdpc3RlcnM6Ong0
LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHJlZ3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRp
ZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNf
YXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQg
UEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuZXNpKTsKKyNl
bGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZS
ZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MucjgpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKyNlbmRpZgorCisjZWxp
ZiBPUyhXSU5ET1dTKQorCit0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisKK2lu
bGluZSB2b2lkKiYgc3RhY2tQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lm
IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgcmVncy5TcCk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkludFNwKTsKKyNlbGlmIENQVShYODYpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5Fc3ApOwor
I2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSByZWdzLlJzcCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisjaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlIxMSk7CisjZWxpZiBDUFUoTUlQUykKKyNlcnJvciBE
b250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPworI2Vs
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSByZWdzLkVicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmJwKTsKKyNlbHNlCisjZXJyb3IgVW5r
bm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGluc3RydWN0aW9u
UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUGMpOworI2Vs
aWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3
ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5FaXApOworI2VsaWYgQ1BVKFg4Nl82NCkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlJp
cCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKK30KKwordGVt
cGxhdGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJz
Jik7CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKTsKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjEpOworI2VsaWYgQ1BVKE1JUFMp
CisjZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQg
dGhpcz8KKyNlbGlmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgcmVncy5FZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlJkeCk7CisjZWxzZQor
I2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKK30KKworI2lmIEVOQUJMRShKSVQp
CitpbmxpbmUgdm9pZComIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdzKQoreworICAgIC8vIExMSW50IHVzZXMgcmVnVDQgYXMgUEMuCisjaWYgQ1BVKEFSTSkK
KyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSByZWdzLlI4KTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERvbnQga25vdyB3
aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxpZiBDUFUoWDg2
KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSByZWdzLkVzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQ
Qy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBy
ZWdzLlIxMCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKK30K
KyNlbmRpZgorCisjZW5kaWYKKworaW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0
Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gc3RhY2tQb2ludGVyKGNvbnN0X2Nh
c3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKK2lubGluZSB2b2lkKiBmcmFtZVBv
aW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIGZyYW1l
UG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworfQorCitpbmxp
bmUgdm9pZCogaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdz
KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJl
Z2lzdGVycyY+KHJlZ3MpKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IE4+CitpbmxpbmUgdm9pZCom
IGFyZ3VtZW50UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgYXJncykKK3sKKyAgICBy
ZXR1cm4gYXJndW1lbnRQb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdz
KSk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Q
b2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBsbGlu
dEluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykp
OworfQorI2VuZGlmCisKKyNlbmRpZgorCisjaWYgT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0Qp
IHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQ
VShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkKKworaW5saW5lIHZvaWQqJiBzdGFj
a1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQor
ICAgIHJldHVybiBzdGFja1BvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1Mo
RlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZXNwKTsKKyNlbGlmIENQVShYODZf
NjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfcnNwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVH
X1NQXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3NwKTsKKyNlbGlm
IENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBB
cmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5ncmVnc1tSRUdfUlNQXSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9zcCk7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0
cl90JikgbWFjaGluZUNvbnRleHQuc3ApOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3Nb
MjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGlu
ZUNvbnRleHQpCit7CisgICAgcmV0dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0
X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlciht
Y29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJu
IGZyYW1lUG9pbnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQor
CisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19lYnApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19yYnApOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfRlBdKTsKKyNl
bGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsyOV0pOworI2VsaWYgQ1BVKE1J
UFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfcmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93
aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUo
WDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LmdyZWdzW1JFR19FQlBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
Z3JlZ3NbUkVHX1JCUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fZnApOworI2VsaWYg
Q1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0LnJlZ3NbMjldKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lmdy
ZWdzWzMwXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5v
dGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBm
cmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisgICAgcmV0
dXJuIGZyYW1lUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkp
OworfQorCitpbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNo
aW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9p
bnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5tY19laXApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yaXAp
OworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
Lm1jX3BjKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisj
ZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBl
bmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVn
c1tSRUdfRUlQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SSVBdKTsK
KyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3BjKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5wYyk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5wYyk7CisjZWxzZQorI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdl
dCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0
Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9p
bnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCit0ZW1w
bGF0ZTx1bnNpZ25lZCBOPgordm9pZComIGFyZ3VtZW50UG9pbnRlcihtY29udGV4dF90Jik7CisK
K3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KG1jb250ZXh0X3Qm
IG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gYXJndW1lbnRQ
b2ludGVyPDE+KG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1j
X3JzaSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
Jj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19SMV0pOworI2VsaWYg
Q1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF94WzFdKTsKKyNlbGlmIENQVShNSVBTKQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0Lm1jX3JlZ3NbNV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQor
I2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNl
cXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0LmdyZWdzW1JFR19FRFhdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3Nb
UkVHX1JTSV0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fcjEpOworI2VsaWYgQ1BVKEFS
TTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LnJlZ3NbMV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbNV0p
OworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisj
ZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhy
ZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBOPgor
aW5saW5lIHZvaWQqIGFyZ3VtZW50UG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29u
dGV4dCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRQb2ludGVyPE4+KGNvbnN0X2Nhc3Q8bWNvbnRl
eHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZv
aWQqJiBsbGludEluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkK
K3sKKyAgICAvLyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIE9TKERBUldJTikKKyAgICBy
ZXR1cm4gbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2Vs
aWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZXNpKTsKKyNlbGlmIENQ
VShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgbWFjaGluZUNvbnRleHQubWNfcjgpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdz
W19SRUdfUjhdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0XSk7
CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzEyXSk7CisjZWxzZQorI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisK
Ky8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4
dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTSV0pOworI2VsaWYgQ1BVKFg4
Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUjhdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJt
X3I4KTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzRdKTsKKyNlbGlmIENQVShNSVBT
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hp
bmVDb250ZXh0LmdyZWdzWzEyXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgTExJbnRQQyBm
b3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2
b2lkKiBsbGludEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29u
dGV4dCkKK3sKKyAgICByZXR1cm4gbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxt
Y29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJl
YWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKaW5k
ZXggYmY3NTRmZGVhNTNmZTk1ZmMzODIzNzhmYmRiZDJhMWIwNjkzZGI3NC4uYjA2MWVlOWQxMWM5
NTcxMWYzZGUyNjZkZWIwOGJjNjJjOGIwMjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUg
PHB0aHJlYWQuaD4KICNlbmRpZgogCisjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykg
JiYgIU9TKERBUldJTikKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFS
V0lOKQogI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgogI2VsaWYgT1MoV0lORE9XUykKQEAg
LTYzLDYgKzY3LDEyIEBAIGlubGluZSBib29sIHBsYXRmb3JtVGhyZWFkU2lnbmFsKFBsYXRmb3Jt
VGhyZWFkIHBsYXRmb3JtVGhyZWFkLCBpbnQgc2lnbmFsTnVtYmVyCiAgICAgaW50IGVyck5vID0g
cHRocmVhZF9raWxsKHB0aHJlYWRJRCwgc2lnbmFsTnVtYmVyKTsKICAgICByZXR1cm4gIWVyck5v
OyAvLyBBIDAgZXJyTm8gbWVhbnMgc3VjY2Vzcy4KIH0KKyNlbGlmIFVTRShQVEhSRUFEUykKK2lu
bGluZSBib29sIHBsYXRmb3JtVGhyZWFkU2lnbmFsKFBsYXRmb3JtVGhyZWFkIHB0aHJlYWRJRCwg
aW50IHNpZ25hbE51bWJlcikKK3sKKyAgICBpbnQgZXJyTm8gPSBwdGhyZWFkX2tpbGwocHRocmVh
ZElELCBzaWduYWxOdW1iZXIpOworICAgIHJldHVybiAhZXJyTm87IC8vIEEgMCBlcnJObyBtZWFu
cyBzdWNjZXNzLgorfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCBlZTA3ZTA1ODZlMTI3OWI2ZWY3MzE5
MGNhOTE5MzUxZjM5YWUyMTBlLi4xNmIwNWJlMDM5Y2I2ODlmMGYzMWM2YzI0MzQxNjE2OGJjYTc4
YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJIZWFw
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKKyNpbmNsdWRlICJNYWNoaW5l
Q29udGV4dC5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKQEAgLTU2LDc5ICs1NywzMSBAQCBBTFdB
WVNfSU5MSU5FIFZNJiBWTVRyYXBzOjp2bSgpIGNvbnN0CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdp
bmFsU2lndXNyMUFjdGlvbjsKIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWd0cmFwQWN0aW9u
OwogCi0jaWYgQ1BVKFg4Nl82NCkKLQogc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIFNpZ25h
bENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCiAgICAgICAgIDogbWNvbnRleHQobWNvbnRl
eHQpCi0gICAgICAgICwgdHJhcFBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fcmlwKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4obWNvbnRleHQtPl9fc3MuX19yc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JicCkpCisgICAgICAgICwgdHJhcFBD
KE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAs
IHN0YWNrUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKG1jb250ZXh0KSkKKyAg
ICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihtY29udGV4
dCkpCiAgICAgeworI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgICAgIC8vIE9uIFg4
Nl82NCwgU0lHVFJBUCByZXBvcnRzIHRoZSBhZGRyZXNzIGFmdGVyIHRoZSB0cmFwcGluZyBQQy4g
U28sIGRlYyBieSAxLgogICAgICAgICB0cmFwUEMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih0cmFwUEMpIC0gMTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgYWRqdXN0UENUb1BvaW50
VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKICAgICB7Ci0gICAgICAgIG1jb250ZXh0LT5fX3NzLl9f
cmlwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRyYXBQQyk7Ci0gICAgfQotCi0gICAg
bWNvbnRleHRfdCYgbWNvbnRleHQ7Ci0gICAgdm9pZCogdHJhcFBDOwotICAgIHZvaWQqIHN0YWNr
UG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7Ci19OwotICAgIAotI2VsaWYgQ1BVKFg4
NikKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRf
dCYgbWNvbnRleHQpCi0gICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgdHJh
cFBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZWlwKSkKLSAgICAg
ICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X19lc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPiht
Y29udGV4dC0+X19zcy5fX2VicCkpCi0gICAgewotICAgICAgICAvLyBPbiBYODYsIFNJR1RSQVAg
cmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4K
LSAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIG1jb250ZXh0LT5fX3NzLl9fZWlwID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRyYXBQQyk7Ci0gICAgfQotICAgIAotICAgIG1jb250ZXh0X3QmIG1j
b250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0gICAg
dm9pZCogZnJhbWVQb2ludGVyOwotfTsKLQotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RI
VU1CMikgfHwgQ1BVKEFSTSkKLSAgICAKLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3BjKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4obWNvbnRleHQtPl9fc3MuX19zcCkpCi0jaWYgQ1BVKEFSTTY0KQotICAgICAgICAsIGZyYW1l
UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2ZwKSkKLSNl
bGlmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JbN10pKQotI2VsaWYgQ1BVKEFSTSkKLSAgICAg
ICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X19yWzExXSkpCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKKyAgICAgICAgTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkgPSB0cmFwUEM7CiAjZW5kaWYKLSAg
ICB7IH0KLSAgICAgICAgCi0gICAgdm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1
Y3Rpb24oKSB7IH0KKyAgICB9CiAKICAgICBtY29udGV4dF90JiBtY29udGV4dDsKICAgICB2b2lk
KiB0cmFwUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRl
cjsKIH07Ci0gICAgCi0jZW5kaWYKIAogaW5saW5lIHN0YXRpYyBib29sIHZtSXNJbmFjdGl2ZShW
TSYgdm0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVBy
b2ZpbGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5j
cHAKaW5kZXggZjkxNmMyMDNiMWUxMjMwMDdmMzdjOGVmZjBjYjFjMTJhZWNhMGIyMS4uMmQ1OTUz
ZWEzNjU5NGY2NGZkZDdiZmI0NDYwMjMwZTEwOWM4OGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkNvZGVQcm9maWxpbmcuaCIKIAogI2luY2x1ZGUgIkNvZGVQcm9maWxlLmgiCisjaW5jbHVk
ZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWV0YUFsbG9jYXRvci5oPgogCiAj
aWYgSEFWRShTSUdOQUxfSCkKQEAgLTY2LDE5ICs2NywxMyBAQCBzdGF0aWMgdm9pZCBzZXRQcm9m
aWxlVGltZXIodW5zaWduZWQgdXNlYykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNl
bmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKSAmJiBDUFUoWDg2XzY0KQot
c3RhdGljIHZvaWQgcHJvZmlsaW5nVGltZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1YXApCi17
Ci0gICAgbWNvbnRleHRfdCBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkt
PnVjX21jb250ZXh0OwotICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZShyZWludGVycHJldF9jYXN0
PHZvaWQqPihjb250ZXh0LT5fX3NzLl9fcmlwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGNvbnRleHQtPl9fc3MuX19yYnApKTsKLX0KLSNlbGlm
IE9TKExJTlVYKSAmJiBDUFUoWDg2KQorI2lmIChPUyhEQVJXSU4pICYmICFQTEFURk9STShHVEsp
ICYmIENQVShYODZfNjQpKSB8fCAoT1MoTElOVVgpICYmIENQVShYODYpKQogc3RhdGljIHZvaWQg
cHJvZmlsaW5nVGltZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1YXApCiB7CiAgICAgbWNvbnRl
eHRfdCBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0
OwotICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250
ZXh0LmdyZWdzW1JFR19FSVBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KGNvbnRleHQuZ3JlZ3NbUkVHX0VCUF0pKTsKKyAgICBDb2RlUHJvZmls
aW5nOjpzYW1wbGUoCisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIo
Y29udGV4dCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihNYWNoaW5lQ29udGV4
dDo6ZnJhbWVQb2ludGVyKGNvbnRleHQpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDFhYzFh
ZjQ4MDE3ZWNmNTIwNDE2MDkxOTI2M2FiMzg0NTA2MjAwNmYuLmZkNWMzNzUzYjU5OWM2NTNmZmI3
ZWEzYzhlYjZmNmRmMDY5MDFmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKQEAgLTc4LDE3ICs3OCwxNyBAQCBjbGFzcyBT
aWdpbGxDcmFzaEFuYWx5emVyIHsKICAgICAKICNlbmRpZiAvLyBVU0UoT1NfTE9HKQogCi0jaWYg
Q1BVKFg4Nl82NCkKIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICBTaWduYWxDb250ZXh0KG1j
b250ZXh0X3QmIG1jb250ZXh0KQogICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAg
ICAsIG1hY2hpbmVQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3Jp
cCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250
ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2Fz
dDxDYWxsRnJhbWUqPihtY29udGV4dC0+X19zcy5fX3JicCkpCisgICAgICAgICwgbWFjaGluZVBD
KE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAs
IHN0YWNrUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKG1jb250ZXh0KSkKKyAg
ICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihtY29udGV4
dCkpCiAgICAgeyB9CiAKICAgICB2b2lkIGR1bXAoKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KQog
I2RlZmluZSBGT1JfRUFDSF9SRUdJU1RFUih2KSBcCiAgICAgICAgIHYocmF4KSBcCiAgICAgICAg
IHYocmJ4KSBcCkBAIC0xMTYsMjYgKzExNiw4IEBAIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAg
ICAgICAgbG9nKCJSZWdpc3RlciAiICNfX3JlZyAiOiAlcCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fIyNfX3JlZykpOwogICAgICAgICBGT1JfRUFDSF9SRUdJU1RF
UihEVU1QX1JFR0lTVEVSKQogI3VuZGVmIEZPUl9FQUNIX1JFR0lTVEVSCi0gICAgfQotCi0gICAg
bWNvbnRleHRfdCYgbWNvbnRleHQ7Ci0gICAgdm9pZCogbWFjaGluZVBDOwotICAgIHZvaWQqIHN0
YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7Ci19OwogCiAjZWxpZiBDUFUoQVJN
NjQpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0
X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIG1h
Y2hpbmVQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3BjKSkKLSAg
ICAgICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9f
c3MuX19zcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZy
YW1lKj4obWNvbnRleHQtPl9fc3MuX19mcCkpCi0gICAgeyB9Ci0KLSAgICB2b2lkIGR1bXAoKQot
ICAgIHsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyODsgaSArPSA0
KSB7CiAgICAgICAgICAgICBsb2coInglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2
bGx4IHglZDogJTAxNmxseCIsCkBAIC0xNDksMjggKzEzMSwxNCBAQCBzdHJ1Y3QgU2lnbmFsQ29u
dGV4dCB7CiAgICAgICAgICAgICBpLCBtY29udGV4dC0+X19zcy5fX3hbaV0sIG1jb250ZXh0LT5f
X3NzLl9fZnAsIG1jb250ZXh0LT5fX3NzLl9fbHIpOwogICAgICAgICBsb2coInNwOiAlMDE2bGx4
IHBjOiAlMDE2bGx4IGNwc3I6ICUwOHgiLAogICAgICAgICAgICAgbWNvbnRleHQtPl9fc3MuX19z
cCwgbWNvbnRleHQtPl9fc3MuX19wYywgbWNvbnRleHQtPl9fc3MuX19jcHNyKTsKKyNlbmRpZgog
ICAgIH0KIAotICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OwogICAgIHZvaWQqIG1hY2hpbmVQQzsK
ICAgICB2b2lkKiBzdGFja1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKIAot
I2Vsc2UKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRl
eHRfdCYpIHsgfQotICAgIAotICAgIHZvaWQgZHVtcCgpIHsgfQotICAgIAotICAgIHZvaWQqIG1h
Y2hpbmVQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVy
OwotfTsKLSAgICAKLSNlbmRpZgotCiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lnSWxsQWN0
aW9uOwogCiBzdGF0aWMgdm9pZCBoYW5kbGVDcmFzaChpbnQgc2lnbmFsTnVtYmVyLCBzaWdpbmZv
X3QqIGluZm8sIHZvaWQqIHVhcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNw
ZWN0b3IuY3BwCmluZGV4IDhiZTNjODU2MjAyMGNjNjIxZDM1ZGM0NzI3NDM4NGFmZWIyOWVkMWYu
LmUzOWFjMzI3OTRiMmFjNDQ2MmNhNTk2MjY1NDY3YWI1OTI0Y2Y3NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUg
IkhlYXBJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlIDxt
dXRleD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCBhZWJiMTcx
NWFiMTRmNjlmNmJmNGEyYzFiMmFjYzY3ZjlkZTE5Mzk4Li5iMTUwMzc0NDc0ZDBiZTk2ZWRiY2Ew
NDg4ZDBlN2I2OGNiMGM3YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNp
bmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2Fz
bUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC01MCw0MCArNTEs
MTAgQEAgc3RhdGljIGJvb2wgZmFzdEhhbmRsZXJJbnN0YWxsZWQgeyBmYWxzZSB9Owogc3RhdGlj
IFN0YXRpY0xvY2sgY29kZUxvY2F0aW9uc0xvY2s7CiBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8c3RkOjp0dXBsZTxWTSosIHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAv
LyAodm0sIHN0YXJ0LCBlbmQpCiAKLS8vIEZJWE1FOiBDbGVhbiB1cCBtY29udGV4dF90IGhhbmRs
aW5nIGNvZGUgc2luY2UgaXQgaXMgc2NhdHRlcmVkIGluIGhlYXAvLCB0b29scy8gYW5kIHdhc20v
LgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTE4MAotI2lm
IENQVShYODZfNjQpCi0KLSNpZiBPUyhEQVJXSU4pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRl
ckdQUiBjb250ZXh0LT5fX3NzLl9fcmlwCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4
dC0+X19zcy5fX3JzaQotI2VsaWYgT1MoRlJFRUJTRCkKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2lu
dGVyR1BSIGNvbnRleHQubWNfcmlwCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5t
Y19yc2kKLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50
ZXJHUFIgY29udGV4dC5ncmVnc1tSRUdfUklQXQotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNv
bnRleHQuZ3JlZ3NbUkVHX1JTSV0KLSNlbmRpZgotCi0jZWxzZQotCi0jaWYgT1MoREFSV0lOKQot
I2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC0+X19zcy5fX3BjCi0jZGVmaW5l
IEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC0+X19zcy5fX3hbMV0KLSNlbGlmIE9TKEZSRUVCU0Qp
Ci0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0Lm1jX2dwcmVncy5ncF9lbHIK
LSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0Lm1jX2dwcmVncy5ncF94WzFdCi0jZWxp
ZiBkZWZpbmVkKF9fR0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRl
eHQucGMKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0LnJlZ3NbMV0KLSNlbmRpZgot
Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgdHJhcEhhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5mb190
KiBzaWdJbmZvLCB2b2lkKiB1Y29udGV4dCkKIHsKICAgICBtY29udGV4dF90JiBjb250ZXh0ID0g
c3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVjb250ZXh0KS0+dWNfbWNvbnRleHQ7Ci0gICAgdm9p
ZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEluc3RydWN0
aW9uUG9pbnRlckdQUik7CisgICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7CiAgICAgZGF0YUxvZ0xuSWYodmVy
Ym9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0
aW5nSW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJKSVQgbWVtb3J5
IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhl
ZEV4ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpKTsKQEAgLTEyMiw4
ICs5Myw4IEBAIHN0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9fdCog
c2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0
aW9uU3R1YikKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNl
cHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIEZpcnN0QXJndW1lbnRHUFIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oRXhjZXB0aW9uVHlw
ZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwotICAgICAgICAgICAgICAgICAgICBJbnN0cnVj
dGlvblBvaW50ZXJHUFIgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihleGNlcHRpb25TdHVi
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGlu
ZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CisgICAgICAgICAg
ICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCkgPSBl
eGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggMmJmMDc4OThkZDBjMjgwN2Q3YTVkMzc4NjBlM2UwYTU3MTdmNjdkMi4uYTRhYTBlZmVj
MTUxNjVkYjJjZjNmODMyMThhMjA1MGIzNjUwNjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MjEsNyAr
OTIxLDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShKSVQp
CisjaWYgKE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSAmJiBFTkFCTEUo
SklUKQogI2RlZmluZSBFTkFCTEVfU0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304146</attachid>
            <date>2017-03-11 01:28:29 -0800</date>
            <delta_ts>2017-03-11 01:46:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311182827.patch</filename>
            <type>text/plain</type>
            <size>45292</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi44NDc2MjRlN2QyNWE1MjJl
NjgwY2YyNjhlNWJkYjUyNTA5NzNmYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpN
YWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcik6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVj
dGlvblBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdp
c3RlcnM6OmxsaW50UEMpOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9NYWNoaW5lQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250
ZXh0OjpmcmFtZVBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6aW5zdHJ1
Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9p
bnRlcjwxPik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaDoKKyAgICAgICAgKEpTQzo6cGxh
dGZvcm1UaHJlYWRTaWduYWwpOgorICAgICAgICAqIHJ1bnRpbWUvVk1UcmFwcy5jcHA6CisgICAg
ICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpT
aWduYWxDb250ZXh0OjphZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAqIHRvb2xzL0NvZGVQcm9maWxpbmcuY3BwOgorICAgICAgICAoSlNDOjpwcm9maWxpbmdU
aW1lcik6CisgICAgICAgICogdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHA6CisgICAgICAg
IChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpTaWdu
YWxDb250ZXh0OjpkdW1wKToKKyAgICAgICAgKiB0b29scy9WTUluc3BlY3Rvci5jcHA6CisgICAg
ICAgICogd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6dHJhcEhhbmRsZXIpOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRM
UyBsb2FkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCAyMTQ0YzJlYTI3NTg2NTljMGQ3YzE3NTMwZWQ5ZTU0NmRjNWIyZmFiLi40
Nzc0NzE1NjA3NjYyMTkzZTFjN2U0Y2Q1NTgzNjQzMDBiNjI2Mjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE3LTAzLTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtKU0NdW0xpbnV4XSBJbXBsZW1lbnQgVk1UcmFwIGluIExpbnV4IHBvcnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmFibGUgVk1U
cmFwIG1lY2hhbmlzbSBmb3IgTGludXggYW5kIEZyZWVCU0QuCisKKyAgICAgICAgKiB3dGYvUGxh
dGZvcm0uaDoKKwogMjAxNy0wMy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIFRoZSBKSVRzIHNob3VsZCBiZSBhYmxlIHRvIGVtaXQgZmFzdCBUTFMgbG9hZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CmluZGV4IGYyZDhjYjEzZTUxMDEzNjAyZTJjYmY5OTU2YzRlMTg1ZGRmMzZhNmYuLjhhNmQ1NTgx
MTg2ZjUyNzgzOTFmMDlmYjA1YTcwZGRlYzY1ZGRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtNDgxLDg3ICs0ODEsMTIg
QEAgc2l6ZV90IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyhUaHJlYWQ6OlJl
Z2lzdGVycyYgcmVnaXN0ZXJzKQogCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdp
c3RlcnM6OnN0YWNrUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYgX19E
QVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPihyZWdzLl9fZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQ
QzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcjEpOwotI2Vs
aWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3Nw
KTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5fX3NwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgot
Ci0jZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLnJzcCk7Ci0jZWxpZiBDUFUoUFBD
KSB8fCBDUFUoUFBDNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3Mu
cjEpOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRp
ZiAvLyBfX0RBUldJTl9VTklYMDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRP
V1MpCi0KLSNpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLlNwKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLkludFNwKTsKLSNlbGlmIENQVShYODYp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRXNw
KTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MuUnNwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1
cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBN
YWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ3MpOwogI2VsaWYgVVNFKFBUSFJFQURTKQog
Ci0jaWYgT1MoRlJFRUJTRCkgJiYgRU5BQkxFKEpJVCkKLQotI2lmIENQVShYODYpCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRl
eHQubWNfZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcnNwKTsKLSNlbGlm
IENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3Qp
IHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1NQXSk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFj
aGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3NwKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
Lm1jX3JlZ3NbMjldKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRp
ZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgRU5BQkxFKEpJVCkKLQotI2lmIENQVShY
ODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5ncmVnc1tSRUdfUlNQXSk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9zcCk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuc3ApOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQuZ3JlZ3NbMjldKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNl
bmRpZgotCisjaWYgKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgRU5BQkxF
KEpJVCkKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzLm1hY2hp
bmVDb250ZXh0KTsKICNlbHNlCiAgICAgdm9pZCogc3RhY2tCYXNlID0gMDsKICAgICBzaXplX3Qg
c3RhY2tTaXplID0gMDsKQEAgLTU4Niw4MiArNTExLDEwIEBAIHZvaWQqIE1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKICNpZiBFTkFCTEUoU0FN
UExJTkdfUFJPRklMRVIpCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6
OmZyYW1lUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYgX19EQVJXSU5f
VU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWdzLl9fZWJwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yYnApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JbMTFdKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbMjldKTsKLSNlbHNlCi0j
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxzZSAvLyAhX19EQVJXSU5f
VU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWdzLmVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPihyZWdzLnJzcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lO
KQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUjExKTsKLSNlbGlmIENQVShNSVBTKQot
I2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRo
aXM/Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLkVicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJicCk7Ci0jZWxzZQotI2Vycm9y
IFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQotI2lm
IENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3Qp
IHJlZ3MubWFjaGluZUNvbnRleHQubWNfZWJwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKLSNlbGlm
IENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90
KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8g
VGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0Lmgu
Ci0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SQlBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRl
eHQuYXJtX2ZwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1szMF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3du
IEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisg
ICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncyk7CisjZWxpZiBPUyhG
UkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAjZXJyb3IgTmVlZCBh
IHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMg
cGxhdGZvcm0KICNlbmRpZgpAQCAtNjY5LDE3MiArNTIyLDIyIEBAIHZvaWQqIE1hY2hpbmVUaHJl
YWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKCkgY29uc3QKIAogdm9pZCogTWFj
aGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVjdGlvblBvaW50ZXIoKSBjb25z
dAogewotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VpcCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9f
cmlwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHJlZ3MuX19wYyk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlZ3MuX19wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotI2lmIENQVShYODYpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuZWlwKTsKLSNlbGlmIENQVShYODZf
NjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MucmlwKTsKLSNlbHNl
Ci0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJX
SU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYg
Q1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkg
cmVncy5QYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3
aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FaXApOwotI2VsaWYg
Q1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5SaXApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlm
Ci0KLSNlbGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VpcCk7
Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigo
dWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19QQ10pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
Lm1jX2dwcmVncy5ncF9lbHIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcGMpOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xp
YmMncyBzeXMvdWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19F
SVBdKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0pOwotI2Vs
aWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0LnBjKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnBjKTsKLSNlbHNlCi0jZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5E
T1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3Mp
OworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJuIE1h
Y2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAj
ZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKwogdm9pZCogTWFj
aGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpsbGludFBDKCkgY29uc3QKIHsKICAgICAv
LyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFSV0lO
X1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBD
ID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9u
ZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5f
X3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9
PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzhdKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBz
dGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTTY0UmVnaXN0ZXJzOjp4NCwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9f
eFs0XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vs
c2UgLy8gIV9fREFSV0lOX1VOSVgwMwotI2lmIENQVShYODYpCi0gICAgc3RhdGljX2Fzc2VydChM
TEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOwot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVzaSk7Ci0jZWxpZiBDUFUo
WDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJz
OjpyOCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnI4KTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRp
ZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxp
ZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SOCk7Ci0jZWxpZiBD
UFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2
ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRXNpKTsKLSNlbGlm
IENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdp
c3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIxMCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQotI2lmIENQVShYODYp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFj
aGluZUNvbnRleHQubWNfZXNpKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcjgp
OwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjhdKTsKLSNlbGlmIENQ
VShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkg
cmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0XSk7Ci0jZWxpZiBDUFUoTUlQUykK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5tY19yZWdzWzEyXSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dp
bmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShY
ODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTSV0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5ncmVnc1tSRUdfUjhdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3I4KTsK
LSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5yZWdzWzRdKTsKLSNlbGlmIENQVShNSVBTKQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0LmdyZWdzWzEyXSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFj
aGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3MpOworI2VsaWYgT1MoRlJF
RUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojps
bGludEluc3RydWN0aW9uUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAjZXJy
b3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRo
aXMgcGxhdGZvcm0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNo
aW5lU3RhY2tNYXJrZXIuaAppbmRleCA3OTc4NDEyZmJhYTFiZDBlNDliOWIzNjg2YmEyOGIzNTQ3
NzUyOTNjLi45OWE0MjdhNDg4Y2MyOGQ2NzNjYjJhMDM2MTg3NjdkMTc5Yjc3YjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaApAQCAtMjEs
NiArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1UaHJlYWQuaCIKICNpbmNsdWRlICJSZWdpc3RlclN0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTgwLDI1ICs4MSw4IEBAIGNsYXNzIE1hY2hpbmVU
aHJlYWRzIHsKICAgICAgICAgICAgIHZvaWQqIGxsaW50UEMoKSBjb25zdDsKICNlbmRpZiAvLyBF
TkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgICAgICAgICAKLSNpZiBPUyhEQVJXSU4pCi0j
aWYgQ1BVKFg4NikKLSAgICAgICAgICAgIHR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0
Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgICAgICAgICB0eXBlZGVmIHg4
Nl90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFBQQykKLSAg
ICAgICAgICAgIHR5cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOwot
I2VsaWYgQ1BVKFBQQzY0KQotICAgICAgICAgICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk0pCi0gICAgICAgICAgICB0eXBlZGVm
IGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk02NCkK
LSAgICAgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLSAgICAgICAg
ICAgIAotI2VsaWYgT1MoV0lORE9XUykKLSAgICAgICAgICAgIHR5cGVkZWYgQ09OVEVYVCBQbGF0
Zm9ybVJlZ2lzdGVyczsKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgICAgICAg
ICB1c2luZyBQbGF0Zm9ybVJlZ2lzdGVycyA9IE1hY2hpbmVDb250ZXh0OjpQbGF0Zm9ybVJlZ2lz
dGVyczsKICNlbGlmIFVTRShQVEhSRUFEUykKICAgICAgICAgICAgIHN0cnVjdCBQbGF0Zm9ybVJl
Z2lzdGVycyB7CiAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3QgYXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjE0NzQ3NGRkYWQ5MWE3YzliMDhlYWIzYmM1OTZiNzYwOGI4YWI5OAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKQEAg
LTAsMCArMSw1ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIE9TKERBUldJTikgfHwgT1MoRlJFRUJTRCkgfHwgZGVm
aW5lZChfX0dMSUJDX18pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisvLyBVc2luZyBzaWduYWwuaCBk
aWRuJ3QgbWFrZSBtY29udGV4dF90IGFuZCB1Y29udGV4dF90IGF2YWlsYWJsZSBvbiBGcmVlQlNE
LgorLy8gVGhpcyBidWcgaGFzIGJlZW4gZml4ZWQgaW4gRnJlZUJTRCAxMS4wLUNVUlJFTlQsIHNv
IHRoaXMgd29ya2Fyb3VuZCBjYW4gYmUKKy8vIHJlbW92ZWQgYWZ0ZXIgRnJlZUJTRCAxMC54IGdv
ZXMgRU9MLgorLy8gaHR0cHM6Ly9idWdzLmZyZWVic2Qub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNn
aT9pZD0yMDcwNzkKKyNpZiBPUyhGUkVFQlNEKQorI2luY2x1ZGUgPHVjb250ZXh0Lmg+CisjZW5k
aWYKKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBNYWNoaW5lQ29udGV4dCB7
CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorCisjaWYgT1MoREFSV0lOKQorI2lmIENQ
VShYODYpCit0eXBlZGVmIGkzODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Cisj
ZWxpZiBDUFUoWDg2XzY0KQordHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJl
Z2lzdGVyczsKKyNlbGlmIENQVShQUEMpCit0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVfdCBQbGF0
Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShQUEM2NCkKK3R5cGVkZWYgcHBjX3RocmVhZF9zdGF0
ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoQVJNKQordHlwZWRlZiBhcm1fdGhy
ZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoQVJNNjQpCit0eXBlZGVm
IGFybV90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKK2lubGluZSB2b2lkKiYgc3RhY2tQb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lc3Ap
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yc3ApOworI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3IxKTsKKyNlbGlmIENQVShBUk1fVEhVTUIy
KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLl9fc3ApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQor
I2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yc3ApOworI2Vs
aWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4ocmVncy5yMSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5k
aWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCitpbmxpbmUgdm9pZComIGZyYW1l
UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBfX0RBUldJTl9VTklYMDMK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdz
Ll9fZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLl9fcmJwKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JbN10pOworI2VsaWYgQ1BVKEFSTSkKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzExXSk7CisjZWxpZiBD
UFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsy
OV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNl
IC8vICFfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yc3ApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MpCit7CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JpcCk7CisjZWxpZiBD
UFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3BjKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBB
cmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuZWlwKTsKKyNl
bGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdz
LnJpcCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vu
ZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBh
cmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKKwordGVtcGxhdGU8PgoraW5saW5l
IHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7Cisj
aWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4ocmVncy5fX2VkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JzaSk7CisjZWxpZiBDUFUoQVJNX1RI
VU1CMikgfHwgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX19yWzFdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KHJlZ3MuX194WzFdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1
cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lZHgpOworI2VsaWYgQ1BV
KFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNpKTsK
KyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8g
X19EQVJXSU5fVU5JWDAzCit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZvaWQqJiBsbGlu
dEluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICAvLyBM
TEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4
NikKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNp
LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PihyZWdzLl9fZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChMTElu
dDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcjgpOworI2VsaWYgQ1BVKEFS
TSkKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgs
ICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yWzhdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50
OjpMTEludFBDID09IEFSTTY0UmVnaXN0ZXJzOjp4NCwgIldyb25nIExMSW50IFBDLiIpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbNF0pOworI2Vsc2UKKyNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJTl9V
TklYMDMKKyNpZiBDUFUoWDg2KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0g
WDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3Rh
dGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJ
bnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLnI4KTsK
KyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8g
X19EQVJXSU5fVU5JWDAzCit9CisjZW5kaWYKKworI2VsaWYgT1MoV0lORE9XUykKKwordHlwZWRl
ZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0ZXJzOworCitpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRl
cihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuU3ApOworI2VsaWYgQ1BV
KE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
cmVncy5JbnRTcCk7CisjZWxpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuRXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5Sc3ApOwor
I2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2
b2lkKiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShB
Uk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVn
cy5SMTEpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8gd2l0
aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5FYnApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSByZWdzLlJicCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisjaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlBjKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SaXApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK3RlbXBsYXRlPHNpemVfdCBOPgordm9pZCom
IGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOworCit0ZW1wbGF0ZTw+Citpbmxp
bmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncyk7Cit7
CisjaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSByZWdzLlIxKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERvbnQga25vdyB3aGF0
IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxpZiBDUFUoWDg2KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuRWR4
KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgcmVncy5SZHgpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZvaWQqJiBsbGludElu
c3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICAvLyBMTElu
dCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTElu
dDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SOCk7Cisj
ZWxpZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERv
IHdlIGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNzZXJ0KExM
SW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5Fc2kp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09
IFg4NlJlZ2lzdGVyczo6cjEwLCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SMTApOworI2Vsc2UKKyNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisjZW5kaWYKKworI2VuZGlmCisKK2lu
bGluZSB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisgICAgcmV0dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4o
cmVncykpOworfQorCitpbmxpbmUgdm9pZCogZnJhbWVQb2ludGVyKGNvbnN0IFBsYXRmb3JtUmVn
aXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxQbGF0
Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5lIHZvaWQqIGluc3RydWN0aW9uUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gaW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisK
K3RlbXBsYXRlPHNpemVfdCBOPgoraW5saW5lIHZvaWQqIGFyZ3VtZW50UG9pbnRlcihjb25zdCBQ
bGF0Zm9ybVJlZ2lzdGVycyYgYXJncykKK3sKKyAgICByZXR1cm4gYXJndW1lbnRQb2ludGVyPE4+
KGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKKyNpZiBFTkFCTEUo
SklUKQoraW5saW5lIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBsbGludEluc3RydWN0aW9uUG9pbnRlcihj
b25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworfQorI2VuZGlmCisKKyNlbmRp
ZgorCisjaWYgT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19f
KSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkg
fHwgQ1BVKE1JUFMpKSkKKworaW5saW5lIHZvaWQqJiBzdGFja1BvaW50ZXIobWNvbnRleHRfdCYg
bWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBzdGFja1BvaW50
ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShY
ODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcnNwKTsK
KyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1NQXSk7CisjZWxpZiBDUFUoQVJN
NjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3NwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1j
X3JlZ3NbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3Nb
UkVHX0VTUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUlNQXSk7Cisj
ZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9zcCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
c3ApOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbMjldKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBz
dGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisgICAgcmV0
dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkp
OworfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29u
dGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGZyYW1lUG9pbnRlcihtYWNoaW5l
Q29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19lYnApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yYnApOworI2VsaWYgQ1BV
KEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfRlBdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19ncHJlZ3MuZ3BfeFsyOV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1sz
MF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlm
IGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMg
b24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JF
R19FQlBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JCUF0pOworI2Vs
aWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fZnApOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LnJl
Z3NbMjldKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzMwXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEg
d2F5IHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBw
bGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgbWNv
bnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlcihjb25z
dF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCitpbmxpbmUgdm9pZCom
IGluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBP
UyhEQVJXSU4pCisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihtYWNoaW5lQ29udGV4dC0+
X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yaXApOworI2VsaWYgQ1BVKEFSTSkKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29u
dGV4dC5fX2dyZWdzW19SRUdfUENdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJl
Z3MuZ3BfZWxyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3BjKTsKKyNlbHNlCisjZXJy
b3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNf
XykKKworLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vj
b250ZXh0LmguCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SSVBdKTsKKyNlbGlmIENQVShBUk0pCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuYXJtX3BjKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5wYyk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5k
aWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgaW5zdHJ1Y3Rpb24gcG9p
bnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lu
bGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PG1jb250
ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBOPgordm9p
ZComIGFyZ3VtZW50UG9pbnRlcihtY29udGV4dF90Jik7CisKK3RlbXBsYXRlPD4KK2lubGluZSB2
b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQorewor
I2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gYXJndW1lbnRQb2ludGVyPDE+KG1hY2hpbmVDb250
ZXh0LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1j
X2VkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JzaSk7CisjZWxpZiBDUFUoQVJN
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hp
bmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19SMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1j
X2dwcmVncy5ncF94WzFdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbNV0pOwor
I2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xp
YmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FRFhd
KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTSV0pOworI2VsaWYgQ1BV
KEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5hcm1fcjEpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LnJlZ3NbMV0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbNV0pOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBn
ZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0K
KyNlbmRpZgorfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBOPgoraW5saW5lIHZvaWQqIGFyZ3VtZW50
UG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICByZXR1cm4g
YXJndW1lbnRQb2ludGVyPE4+KGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0
KSk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZvaWQqJiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICAvLyBMTEludCB1c2Vz
IHJlZ1Q0IGFzIFBDLgorI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gbGxpbnRJbnN0cnVjdGlv
blBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lm
IENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgbWFjaGluZUNvbnRleHQubWNfZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNf
cjgpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjhdKTsKKyNlbGlmIENQ
VShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0XSk7CisjZWxpZiBDUFUoTUlQUykKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29u
dGV4dC5tY19yZWdzWzEyXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisj
ZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2Vx
dWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNv
bnRleHQuZ3JlZ3NbUkVHX0VTSV0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tS
RUdfUjhdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3I4KTsKKyNlbGlmIENQVShBUk02
NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5yZWdzWzRdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzEyXSk7
CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UKKyNl
cnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgTExJbnRQQyBmb3IgYW5vdGhlciB0aHJlYWQgb24g
dGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICByZXR1cm4g
bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNv
bnRleHQpKTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKaW5kZXggYmY3NTRmZGVhNTNmZTk1ZmMz
ODIzNzhmYmRiZDJhMWIwNjkzZGI3NC4uYjA2MWVlOWQxMWM5NTcxMWYzZGUyNjZkZWIwOGJjNjJj
OGIwMjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZv
cm1UaHJlYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRo
cmVhZC5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgog
CisjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykgJiYgIU9TKERBUldJTikKKyNpbmNs
dWRlIDxzaWduYWwuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gv
dGhyZWFkX2FjdC5oPgogI2VsaWYgT1MoV0lORE9XUykKQEAgLTYzLDYgKzY3LDEyIEBAIGlubGlu
ZSBib29sIHBsYXRmb3JtVGhyZWFkU2lnbmFsKFBsYXRmb3JtVGhyZWFkIHBsYXRmb3JtVGhyZWFk
LCBpbnQgc2lnbmFsTnVtYmVyCiAgICAgaW50IGVyck5vID0gcHRocmVhZF9raWxsKHB0aHJlYWRJ
RCwgc2lnbmFsTnVtYmVyKTsKICAgICByZXR1cm4gIWVyck5vOyAvLyBBIDAgZXJyTm8gbWVhbnMg
c3VjY2Vzcy4KIH0KKyNlbGlmIFVTRShQVEhSRUFEUykKK2lubGluZSBib29sIHBsYXRmb3JtVGhy
ZWFkU2lnbmFsKFBsYXRmb3JtVGhyZWFkIHB0aHJlYWRJRCwgaW50IHNpZ25hbE51bWJlcikKK3sK
KyAgICBpbnQgZXJyTm8gPSBwdGhyZWFkX2tpbGwocHRocmVhZElELCBzaWduYWxOdW1iZXIpOwor
ICAgIHJldHVybiAhZXJyTm87IC8vIEEgMCBlcnJObyBtZWFucyBzdWNjZXNzLgorfQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRy
YXBzLmNwcAppbmRleCBlZTA3ZTA1ODZlMTI3OWI2ZWY3MzE5MGNhOTE5MzUxZjM5YWUyMTBlLi4x
NmIwNWJlMDM5Y2I2ODlmMGYzMWM2YzI0MzQxNjE2OGJjYTc4YTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUg
IkxMSW50UENSYW5nZXMuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUg
Ik1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5j
bHVkZSAiVk0uaCIKQEAgLTU2LDc5ICs1NywzMSBAQCBBTFdBWVNfSU5MSU5FIFZNJiBWTVRyYXBz
Ojp2bSgpIGNvbnN0CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lndXNyMUFjdGlvbjsKIHN0
cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWd0cmFwQWN0aW9uOwogCi0jaWYgQ1BVKFg4Nl82NCkK
LQogc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYg
bWNvbnRleHQpCiAgICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgdHJhcFBD
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcmlwKSkKLSAgICAgICAg
LCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19y
c3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX3JicCkpCisgICAgICAgICwgdHJhcFBDKE1hY2hpbmVDb250ZXh0OjppbnN0
cnVjdGlvblBvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNoaW5l
Q29udGV4dDo6c3RhY2tQb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAgLCBmcmFtZVBvaW50ZXIo
TWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihtY29udGV4dCkpCiAgICAgeworI2lmIENQVShY
ODZfNjQpIHx8IENQVShYODYpCiAgICAgICAgIC8vIE9uIFg4Nl82NCwgU0lHVFJBUCByZXBvcnRz
IHRoZSBhZGRyZXNzIGFmdGVyIHRoZSB0cmFwcGluZyBQQy4gU28sIGRlYyBieSAxLgogICAgICAg
ICB0cmFwUEMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0cmFwUEMpIC0gMTsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9u
KCkKICAgICB7Ci0gICAgICAgIG1jb250ZXh0LT5fX3NzLl9fcmlwID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHRyYXBQQyk7Ci0gICAgfQotCi0gICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7
Ci0gICAgdm9pZCogdHJhcFBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBm
cmFtZVBvaW50ZXI7Ci19OwotICAgIAotI2VsaWYgQ1BVKFg4NikKLQotc3RydWN0IFNpZ25hbENv
bnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCi0gICAgICAg
IDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgdHJhcFBDKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZWlwKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19lc3ApKQotICAgICAgICAsIGZy
YW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VicCkp
Ci0gICAgewotICAgICAgICAvLyBPbiBYODYsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVzcyBh
ZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4KLSAgICAgICAgdHJhcFBDID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7Ci0gICAgfQotICAgIAotICAgIHZv
aWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IG1jb250ZXh0LT5fX3NzLl9fZWlwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRyYXBQ
Qyk7Ci0gICAgfQotICAgIAotICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIHRy
YXBQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwot
fTsKLQotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkKLSAg
ICAKLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3Qm
IG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRyYXBQ
QyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3BjKSkKLSAgICAgICAg
LCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19z
cCkpCi0jaWYgQ1BVKEFSTTY0KQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2ZwKSkKLSNlbGlmIENQVShBUk1fVEhVTUIyKQot
ICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3JbN10pKQotI2VsaWYgQ1BVKEFSTSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzExXSkpCisjaWYgQ1BVKFg4
Nl82NCkgfHwgQ1BVKFg4NikKKyAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9p
bnRlcihtY29udGV4dCkgPSB0cmFwUEM7CiAjZW5kaWYKLSAgICB7IH0KLSAgICAgICAgCi0gICAg
dm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24oKSB7IH0KKyAgICB9CiAK
ICAgICBtY29udGV4dF90JiBtY29udGV4dDsKICAgICB2b2lkKiB0cmFwUEM7CiAgICAgdm9pZCog
c3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07Ci0gICAgCi0jZW5kaWYK
IAogaW5saW5lIHN0YXRpYyBib29sIHZtSXNJbmFjdGl2ZShWTSYgdm0pCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKaW5kZXggZjkxNmMyMDNiMWUx
MjMwMDdmMzdjOGVmZjBjYjFjMTJhZWNhMGIyMS4uMmQ1OTUzZWEzNjU5NGY2NGZkZDdiZmI0NDYw
MjMwZTEwOWM4OGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Nv
ZGVQcm9maWxpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJv
ZmlsaW5nLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvZGVQcm9maWxpbmcuaCIK
IAogI2luY2x1ZGUgIkNvZGVQcm9maWxlLmgiCisjaW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvTWV0YUFsbG9jYXRvci5oPgogCiAjaWYgSEFWRShTSUdOQUxfSCkKQEAg
LTY2LDE5ICs2NywxMyBAQCBzdGF0aWMgdm9pZCBzZXRQcm9maWxlVGltZXIodW5zaWduZWQgdXNl
YykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgogCi0jaWYgT1MoREFSV0lO
KSAmJiAhUExBVEZPUk0oR1RLKSAmJiBDUFUoWDg2XzY0KQotc3RhdGljIHZvaWQgcHJvZmlsaW5n
VGltZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1YXApCi17Ci0gICAgbWNvbnRleHRfdCBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0OwotICAgIENv
ZGVQcm9maWxpbmc6OnNhbXBsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LT5fX3Nz
Ll9fcmlwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KGNvbnRleHQtPl9fc3MuX19yYnApKTsKLX0KLSNlbGlmIE9TKExJTlVYKSAmJiBDUFUoWDg2
KQorI2lmIChPUyhEQVJXSU4pICYmICFQTEFURk9STShHVEspICYmIENQVShYODZfNjQpKSB8fCAo
T1MoTElOVVgpICYmIENQVShYODYpKQogc3RhdGljIHZvaWQgcHJvZmlsaW5nVGltZXIoaW50LCBz
aWdpbmZvX3QqLCB2b2lkKiB1YXApCiB7CiAgICAgbWNvbnRleHRfdCBjb250ZXh0ID0gc3RhdGlj
X2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0OwotICAgIENvZGVQcm9maWxpbmc6
OnNhbXBsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmdyZWdzW1JFR19FSVBdKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGNvbnRl
eHQuZ3JlZ3NbUkVHX0VCUF0pKTsKKyAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUoCisgICAgICAg
IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCksCisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKGNvbnRl
eHQpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDFhYzFhZjQ4MDE3ZWNmNTIwNDE2MDkxOTI2
M2FiMzg0NTA2MjAwNmYuLmZkNWMzNzUzYjU5OWM2NTNmZmI3ZWEzYzhlYjZmNmRmMDY5MDFmYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5
emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFs
eXplci5jcHAKQEAgLTc4LDE3ICs3OCwxNyBAQCBjbGFzcyBTaWdpbGxDcmFzaEFuYWx5emVyIHsK
ICAgICAKICNlbmRpZiAvLyBVU0UoT1NfTE9HKQogCi0jaWYgQ1BVKFg4Nl82NCkKIHN0cnVjdCBT
aWduYWxDb250ZXh0IHsKICAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQog
ICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIG1hY2hpbmVQQyhyZWludGVy
cHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQ
b2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAg
ICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihtY29udGV4
dC0+X19zcy5fX3JicCkpCisgICAgICAgICwgbWFjaGluZVBDKE1hY2hpbmVDb250ZXh0OjppbnN0
cnVjdGlvblBvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNoaW5l
Q29udGV4dDo6c3RhY2tQb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAgLCBmcmFtZVBvaW50ZXIo
TWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihtY29udGV4dCkpCiAgICAgeyB9CiAKICAgICB2
b2lkIGR1bXAoKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KQogI2RlZmluZSBGT1JfRUFDSF9SRUdJ
U1RFUih2KSBcCiAgICAgICAgIHYocmF4KSBcCiAgICAgICAgIHYocmJ4KSBcCkBAIC0xMTYsMjYg
KzExNiw4IEBAIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICAgICAgbG9nKCJSZWdpc3RlciAi
ICNfX3JlZyAiOiAlcCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9f
IyNfX3JlZykpOwogICAgICAgICBGT1JfRUFDSF9SRUdJU1RFUihEVU1QX1JFR0lTVEVSKQogI3Vu
ZGVmIEZPUl9FQUNIX1JFR0lTVEVSCi0gICAgfQotCi0gICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7
Ci0gICAgdm9pZCogbWFjaGluZVBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2b2lk
KiBmcmFtZVBvaW50ZXI7Ci19OwogCiAjZWxpZiBDUFUoQVJNNjQpCi0KLXN0cnVjdCBTaWduYWxD
b250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAg
ICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIG1hY2hpbmVQQyhyZWludGVycHJldF9j
YXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3BjKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19zcCkpCi0gICAgICAgICwg
ZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9fc3Mu
X19mcCkpCi0gICAgeyB9Ci0KLSAgICB2b2lkIGR1bXAoKQotICAgIHsKICAgICAgICAgaW50IGk7
CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyODsgaSArPSA0KSB7CiAgICAgICAgICAgICBsb2co
InglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAxNmxseCIsCkBA
IC0xNDksMjggKzEzMSwxNCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgICAgICBp
LCBtY29udGV4dC0+X19zcy5fX3hbaV0sIG1jb250ZXh0LT5fX3NzLl9fZnAsIG1jb250ZXh0LT5f
X3NzLl9fbHIpOwogICAgICAgICBsb2coInNwOiAlMDE2bGx4IHBjOiAlMDE2bGx4IGNwc3I6ICUw
OHgiLAogICAgICAgICAgICAgbWNvbnRleHQtPl9fc3MuX19zcCwgbWNvbnRleHQtPl9fc3MuX19w
YywgbWNvbnRleHQtPl9fc3MuX19jcHNyKTsKKyNlbmRpZgogICAgIH0KIAotICAgIG1jb250ZXh0
X3QmIG1jb250ZXh0OwogICAgIHZvaWQqIG1hY2hpbmVQQzsKICAgICB2b2lkKiBzdGFja1BvaW50
ZXI7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKIAotI2Vsc2UKLQotc3RydWN0IFNpZ25h
bENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYpIHsgfQotICAgIAotICAg
IHZvaWQgZHVtcCgpIHsgfQotICAgIAotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBz
dGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbmRpZgot
CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lnSWxsQWN0aW9uOwogCiBzdGF0aWMgdm9pZCBo
YW5kbGVDcmFzaChpbnQgc2lnbmFsTnVtYmVyLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVhcCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IDhiZTNj
ODU2MjAyMGNjNjIxZDM1ZGM0NzI3NDM4NGFmZWIyOWVkMWYuLmUzOWFjMzI3OTRiMmFjNDQ2MmNh
NTk2MjY1NDY3YWI1OTI0Y2Y3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZN
SW5zcGVjdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYv
RXhwZWN0ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCBhZWJiMTcxNWFiMTRmNjlmNmJmNGEyYzFiMmFj
YzY3ZjlkZTE5Mzk4Li5iMTUwMzc0NDc0ZDBiZTk2ZWRiY2EwNDg4ZDBlN2I2OGNiMGM3YzY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxI
YW5kbGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAog
I2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4
dC5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNp
bmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC01MCw0MCArNTEsMTAgQEAgc3RhdGljIGJvb2wgZmFz
dEhhbmRsZXJJbnN0YWxsZWQgeyBmYWxzZSB9Owogc3RhdGljIFN0YXRpY0xvY2sgY29kZUxvY2F0
aW9uc0xvY2s7CiBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8c3RkOjp0dXBsZTxW
TSosIHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAodm0sIHN0YXJ0LCBlbmQpCiAK
LS8vIEZJWE1FOiBDbGVhbiB1cCBtY29udGV4dF90IGhhbmRsaW5nIGNvZGUgc2luY2UgaXQgaXMg
c2NhdHRlcmVkIGluIGhlYXAvLCB0b29scy8gYW5kIHdhc20vLgotLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTE4MAotI2lmIENQVShYODZfNjQpCi0KLSNpZiBP
UyhEQVJXSU4pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0LT5fX3NzLl9f
cmlwCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC0+X19zcy5fX3JzaQotI2VsaWYg
T1MoRlJFRUJTRCkKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQubWNfcmlw
Ci0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5tY19yc2kKLSNlbGlmIGRlZmluZWQo
X19HTElCQ19fKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5ncmVnc1tS
RUdfUklQXQotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQuZ3JlZ3NbUkVHX1JTSV0K
LSNlbmRpZgotCi0jZWxzZQotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBJbnN0cnVjdGlvblBv
aW50ZXJHUFIgY29udGV4dC0+X19zcy5fX3BjCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29u
dGV4dC0+X19zcy5fX3hbMV0KLSNlbGlmIE9TKEZSRUVCU0QpCi0jZGVmaW5lIEluc3RydWN0aW9u
UG9pbnRlckdQUiBjb250ZXh0Lm1jX2dwcmVncy5ncF9lbHIKLSNkZWZpbmUgRmlyc3RBcmd1bWVu
dEdQUiBjb250ZXh0Lm1jX2dwcmVncy5ncF94WzFdCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykK
LSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQucGMKLSNkZWZpbmUgRmlyc3RB
cmd1bWVudEdQUiBjb250ZXh0LnJlZ3NbMV0KLSNlbmRpZgotCi0jZW5kaWYKLQogc3RhdGljIHZv
aWQgdHJhcEhhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5mb190KiBzaWdJbmZvLCB2b2lkKiB1Y29u
dGV4dCkKIHsKICAgICBtY29udGV4dF90JiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRf
dCo+KHVjb250ZXh0KS0+dWNfbWNvbnRleHQ7Ci0gICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlv
biA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEluc3RydWN0aW9uUG9pbnRlckdQUik7CisgICAg
dm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBv
aW50ZXIoY29udGV4dCk7CiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRs
ZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKIAog
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVy
KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29s
KSksICIgZW5kOiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4
ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpKTsKQEAgLTEyMiw4ICs5Myw4IEBAIHN0YXRpYyB2b2lk
IHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRl
eHQpCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9uU3R1YikKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJi
b3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVj
dXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgICAgICAgICAgICAgICAgIEZpcnN0QXJndW1lbnRHUFIg
PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlB
Y2Nlc3MpOwotICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvblBvaW50ZXJHUFIgPSByZWlu
dGVycHJldF9jYXN0PHVpbnQ2NF90PihleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9p
bnRlcjwxPihjb250ZXh0KSA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250
ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCkgPSBleGNlcHRpb25TdHViLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMmJmMDc4OThkZDBjMjgw
N2Q3YTVkMzc4NjBlM2UwYTU3MTdmNjdkMi4uYTRhYTBlZmVjMTUxNjVkYjJjZjNmODMyMThhMjA1
MGIzNjUwNjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MjEsNyArOTIxLDcgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShKSVQpCisjaWYgKE9TKERBUldJTikgfHwg
T1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSAmJiBFTkFCTEUoSklUKQogI2RlZmluZSBFTkFCTEVf
U0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304147</attachid>
            <date>2017-03-11 01:46:15 -0800</date>
            <delta_ts>2017-03-11 01:47:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311184613.patch</filename>
            <type>text/plain</type>
            <size>48164</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDIxNDRjMmVhMjc1ODY1OWMwZDdjMTc1MzBlZDllNTQ2ZGM1YjJmYWIuLjQ3NzQ3
MTU2MDc2NjIxOTNlMWM3ZTRjZDU1ODM2NDMwMGI2MjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlh
ZTgzOTMwYTkyNGRhLi41NDYxNGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVF
NDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEg
LyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9Owog
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
ODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC01MDM2LDYgKzUwMzcsNyBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dh
cFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CkBAIC02OTM2LDYgKzY5MzgsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdy
aXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJh
cnJpZXJJbmxpbmVzLmggKi8sCisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hp
bmVDb250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0
ZTE4NWRkZjM2YTZmLi44YTZkNTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKQEAgLTQ4MSw4NyArNDgxLDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpn
ZXRSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lm
IE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNl
bGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX3IxKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYg
Q1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhE
QVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5J
bnRTcCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsK
ICNlbGlmIFVTRShQVEhSRUFEUykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JzcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19T
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVO
QUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5hcm1fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsK
LSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWlu
dHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVk
KF9fR0xJQkNfXykpICYmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNr
QmFzZSA9IDA7CiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBA
QCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigp
IGNvbnN0CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERB
UldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQ
VShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX194WzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklY
MDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIx
MSk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4
Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVn
cy5SYnApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF94WzI5XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7
Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X0VCUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQucmVnc1syOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsK
LSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2lu
dGVyKHJlZ3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAg
cmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBh
bm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwy
MiBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRl
cigpIGNvbnN0CiAKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5z
dHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJ
Tl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklY
MDMKLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
LmVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2Vs
aWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3Ig
RG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNl
bGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuRWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19y
aXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Lm1jX3BjKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SSVBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lm
IE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxp
bnRQQygpIGNvbnN0CiB7CiAgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhE
QVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGlj
X2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50
IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsK
LSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBY
ODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBD
LiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02
NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2
KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0v
LyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUjgpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLkVzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJ
bnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZS
RUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hb
NF0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmFybV9yOCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0
XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5l
Q29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWEx
YmQwZTQ5YjliMzY4NmJhMjhiMzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4
NzY3ZDE3OWI3N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSAr
ODEsOCBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBD
KCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAg
ICAgCi0jaWYgT1MoREFSV0lOKQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkz
ODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgICAgICAgICAgdHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEMpCi0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0gICAgICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAg
ICB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBP
UyhXSU5ET1dTKQorICAgICAgICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5l
Q29udGV4dDo6UGxhdGZvcm1SZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAg
ICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRf
YXR0cl90IGF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxNDc0NzRkZGFkOTFhN2M5YjA4ZWFiM2JjNTk2Yjc2
MDhiOGFiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5o
PgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRf
dCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZy
ZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVk
IGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
I2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQordHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0
eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vs
aWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxp
bmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
CisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzdd
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9f
REFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKwordGVtcGxh
dGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19y
c2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VO
SVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJ
VCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJ
Tl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5fX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcls4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzaSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorI2VuZGlmCisKKyNlbGlm
IE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKKworaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7Cisj
ZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Q
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5QYyk7CisjZWxp
ZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
KTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpOworeworI2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SMSk7CisjZWxpZiBDUFUoTUlQUykK
KyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0
aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSByZWdzLkVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmR4KTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEpJVCkK
K2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBDUFUoQVJNKQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdo
YXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYp
CisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwg
Ildyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fz
c2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBD
LiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJl
Z3MuUjEwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQor
I2VuZGlmCisKKyNlbmRpZgorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gZnJhbWVQ
b2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKK2lubGlu
ZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVn
aXN0ZXJzJj4ocmVncykpOworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK2lubGluZSB2b2lkKiBh
cmd1bWVudFBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIGFyZ3MpCit7CisgICAgcmV0
dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVn
cykpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gbGxp
bnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3Mp
KTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNE
KSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCisKK2lubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikK
KyAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JzcCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JF
R19TUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuZ3JlZ3NbUkVHX1JTUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fc3ApOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
WzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4
dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVy
biBmcmFtZVBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7Cisj
ZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxv
d2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SQlBdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX2ZwKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5n
cmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisK
KyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFu
b3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCog
ZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJl
dHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQp
KTsKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFj
aGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmlw
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1BDXSk7CisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX2Vscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVw
ZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3Jl
Z3NbUkVHX0VJUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUklQXSk7
CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9wYyk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQucGMpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucGMpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBn
ZXQgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxh
dGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0
IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKwordGVt
cGxhdGU8dW5zaWduZWQgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIobWNvbnRleHRfdCYpOwor
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGFyZ3VtZW50
UG9pbnRlcjwxPihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19lZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5t
Y19yc2kpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjFdKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXSk7CisjZWxpZiBDUFUoTUlQUykK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5tY19yZWdzWzVdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRURYXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SU0ldKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3IxKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5yZWdzWzFdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzVd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQor
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRo
cmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwordGVtcGxhdGU8dW5zaWduZWQgTj4K
K2lubGluZSB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PG1jb250
ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2
b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
Cit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBPUyhEQVJXSU4pCisgICAg
cmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNl
bGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbNF0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQor
CisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRl
eHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKKyNlbGlmIENQVShY
ODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFy
bV9yOCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1s0XSk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5ncmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMg
Zm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUg
dm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8
bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYKKworI2VuZGlmCisKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhy
ZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCmlu
ZGV4IGJmNzU0ZmRlYTUzZmU5NWZjMzgyMzc4ZmJkYmQyYTFiMDY5M2RiNzQuLmIwNjFlZTlkMTFj
OTU3MTFmM2RlMjY2ZGViMDhiYzYyYzhiMDI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1Mp
ICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERB
UldJTikKICNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KICNlbGlmIE9TKFdJTkRPV1MpCkBA
IC02Myw2ICs2NywxMiBAQCBpbmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9y
bVRocmVhZCBwbGF0Zm9ybVRocmVhZCwgaW50IHNpZ25hbE51bWJlcgogICAgIGludCBlcnJObyA9
IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7CiAgICAgcmV0dXJuICFlcnJO
bzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCiB9CisjZWxpZiBVU0UoUFRIUkVBRFMpCitp
bmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9ybVRocmVhZCBwdGhyZWFkSUQs
IGludCBzaWduYWxOdW1iZXIpCit7CisgICAgaW50IGVyck5vID0gcHRocmVhZF9raWxsKHB0aHJl
YWRJRCwgc2lnbmFsTnVtYmVyKTsKKyAgICByZXR1cm4gIWVyck5vOyAvLyBBIDAgZXJyTm8gbWVh
bnMgc3VjY2Vzcy4KK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZWUwN2UwNTg2ZTEyNzliNmVmNzMx
OTBjYTkxOTM1MWYzOWFlMjEwZS4uMTZiMDViZTAzOWNiNjg5ZjBmMzFjNmMyNDM0MTYxNjhiY2E3
OGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTWFjaGlu
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC01Niw3OSArNTcsMzEgQEAgQUxX
QVlTX0lOTElORSBWTSYgVk1UcmFwczo6dm0oKSBjb25zdAogc3RydWN0IHNpZ2FjdGlvbiBvcmln
aW5hbFNpZ3VzcjFBY3Rpb247CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lndHJhcEFjdGlv
bjsKIAotI2lmIENQVShYODZfNjQpCi0KIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQogICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIHRyYXBQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgICAgICAvLyBPbiBY
ODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMu
IFNvLCBkZWMgYnkgMS4KICAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4odHJhcFBDKSAtIDE7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGFkanVzdFBDVG9Qb2lu
dFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCiAgICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5f
X3JpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFj
a1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbGlmIENQVShY
ODYpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0
X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRy
YXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VpcCkpCi0gICAg
ICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fZXNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bWNvbnRleHQtPl9fc3MuX19lYnApKQotICAgIHsKLSAgICAgICAgLy8gT24gWDg2LCBTSUdUUkFQ
IHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEu
Ci0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAx
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVj
dGlvbigpCi0gICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5fX2VpcCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLSAgICAKLSAgICBtY29udGV4dF90JiBt
Y29udGV4dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAg
IHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0KLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk0pCi0gICAgCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2ln
bmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29u
dGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQt
Pl9fc3MuX19wYykpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fc3ApKQotI2lmIENQVShBUk02NCkKLSAgICAgICAgLCBmcmFt
ZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19mcCkpCi0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzddKSkKLSNlbGlmIENQVShBUk0pCi0gICAg
ICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fclsxMV0pKQorI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCisgICAgICAgIE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpID0gdHJhcFBDOwogI2VuZGlmCi0g
ICAgeyB9Ci0gICAgICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3Ry
dWN0aW9uKCkgeyB9CisgICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CiAgICAgdm9p
ZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50
ZXI7CiB9OwotICAgIAotI2VuZGlmCiAKIGlubGluZSBzdGF0aWMgYm9vbCB2bUlzSW5hY3RpdmUo
Vk0mIHZtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmluZGV4IGY5MTZjMjAzYjFlMTIzMDA3ZjM3YzhlZmYwY2IxYzEyYWVjYTBiMjEuLjJkNTk1
M2VhMzY1OTRmNjRmZGQ3YmZiNDQ2MDIzMGUxMDljODhiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJDb2RlUHJvZmlsaW5nLmgiCiAKICNpbmNsdWRlICJDb2RlUHJvZmlsZS5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3IuaD4KIAog
I2lmIEhBVkUoU0lHTkFMX0gpCkBAIC02NiwxOSArNjcsMTMgQEAgc3RhdGljIHZvaWQgc2V0UHJv
ZmlsZVRpbWVyKHVuc2lnbmVkIHVzZWMpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAj
ZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkK
LXN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQot
ewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXAp
LT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29udGV4dC0+X19zcy5fX3JpcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LT5fX3NzLl9fcmJwKSk7Ci19Ci0jZWxp
ZiBPUyhMSU5VWCkgJiYgQ1BVKFg4NikKKyNpZiAoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RL
KSAmJiBDUFUoWDg2XzY0KSkgfHwgKE9TKExJTlVYKSAmJiBDUFUoWDg2KSkKIHN0YXRpYyB2b2lk
IHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewogICAgIG1jb250
ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4
dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUlQXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LmdyZWdzW1JFR19FQlBdKSk7CisgICAgQ29kZVByb2Zp
bGluZzo6c2FtcGxlKAorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAxYWMx
YWY0ODAxN2VjZjUyMDQxNjA5MTkyNjNhYjM4NDUwNjIwMDZmLi5mZDVjMzc1M2I1OTljNjUzZmZi
N2VhM2M4ZWI2ZjZkZjA2OTAxZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3Mg
U2lnaWxsQ3Jhc2hBbmFseXplciB7CiAgICAgCiAjZW5kaWYgLy8gVVNFKE9TX0xPRykKIAotI2lm
IENQVShYODZfNjQpCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dCht
Y29udGV4dF90JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAg
ICAgLCBtYWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19y
aXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIG1hY2hpbmVQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKICAgICB7CisjaWYgQ1BVKFg4Nl82NCkK
ICNkZWZpbmUgRk9SX0VBQ0hfUkVHSVNURVIodikgXAogICAgICAgICB2KHJheCkgXAogICAgICAg
ICB2KHJieCkgXApAQCAtMTE2LDI2ICsxMTYsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtY29udGV4dC0+X19zcy5fXyMjX19yZWcpKTsKICAgICAgICAgRk9SX0VBQ0hfUkVHSVNU
RVIoRFVNUF9SRUdJU1RFUikKICN1bmRlZiBGT1JfRUFDSF9SRUdJU1RFUgotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBz
dGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKIAogI2VsaWYgQ1BVKEFS
TTY0KQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4
dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCBt
YWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19wYykpCi0g
ICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxG
cmFtZSo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotICAgIHsgfQotCi0gICAgdm9pZCBkdW1wKCkK
LSAgICB7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjg7IGkgKz0g
NCkgewogICAgICAgICAgICAgbG9nKCJ4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAx
NmxseCB4JWQ6ICUwMTZsbHgiLApAQCAtMTQ5LDI4ICsxMzEsMTQgQEAgc3RydWN0IFNpZ25hbENv
bnRleHQgewogICAgICAgICAgICAgaSwgbWNvbnRleHQtPl9fc3MuX194W2ldLCBtY29udGV4dC0+
X19zcy5fX2ZwLCBtY29udGV4dC0+X19zcy5fX2xyKTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxs
eCBwYzogJTAxNmxseCBjcHNyOiAlMDh4IiwKICAgICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9f
c3AsIG1jb250ZXh0LT5fX3NzLl9fcGMsIG1jb250ZXh0LT5fX3NzLl9fY3Bzcik7CisjZW5kaWYK
ICAgICB9CiAKLSAgICBtY29udGV4dF90JiBtY29udGV4dDsKICAgICB2b2lkKiBtYWNoaW5lUEM7
CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07CiAK
LSNlbHNlCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250
ZXh0X3QmKSB7IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoKSB7IH0KLSAgICAKLSAgICB2b2lkKiBt
YWNoaW5lUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9pbnRl
cjsKLX07Ci0gICAgCi0jZW5kaWYKLQogc3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ0lsbEFj
dGlvbjsKIAogc3RhdGljIHZvaWQgaGFuZGxlQ3Jhc2goaW50IHNpZ25hbE51bWJlciwgc2lnaW5m
b190KiBpbmZvLCB2b2lkKiB1YXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5z
cGVjdG9yLmNwcAppbmRleCA4YmUzYzg1NjIwMjBjYzYyMWQzNWRjNDcyNzQzODRhZmViMjllZDFm
Li5lMzlhYzMyNzk0YjJhYzQ0NjJjYTU5NjI2NTQ2N2FiNTkyNGNmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRl
ICJIZWFwSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggYWViYjE3
MTVhYjE0ZjY5ZjZiZjRhMmMxYjJhY2M2N2Y5ZGUxOTM5OC4uYjE1MDM3NDQ3NGQwYmU5NmVkYmNh
MDQ4OGQwZTdiNjhjYjBjN2M2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCisj
aW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldh
c21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtNTAsNDAgKzUx
LDEwIEBAIHN0YXRpYyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIHN0YXRp
YyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlvbnNMb2NrOwogc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PHN0ZDo6dHVwbGU8Vk0qLCB2b2lkKiwgdm9pZCo+Pj4gY29kZUxvY2F0aW9uczsg
Ly8gKHZtLCBzdGFydCwgZW5kKQogCi0vLyBGSVhNRTogQ2xlYW4gdXAgbWNvbnRleHRfdCBoYW5k
bGluZyBjb2RlIHNpbmNlIGl0IGlzIHNjYXR0ZXJlZCBpbiBoZWFwLywgdG9vbHMvIGFuZCB3YXNt
Ly4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxODAKLSNp
ZiBDUFUoWDg2XzY0KQotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50
ZXJHUFIgY29udGV4dC0+X19zcy5fX3JpcAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRl
eHQtPl9fc3MuX19yc2kKLSNlbGlmIE9TKEZSRUVCU0QpCi0jZGVmaW5lIEluc3RydWN0aW9uUG9p
bnRlckdQUiBjb250ZXh0Lm1jX3JpcAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQu
bWNfcnNpCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2lu
dGVyR1BSIGNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0KLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBj
b250ZXh0LmdyZWdzW1JFR19SU0ldCi0jZW5kaWYKLQotI2Vsc2UKLQotI2lmIE9TKERBUldJTikK
LSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQtPl9fc3MuX19wYwotI2RlZmlu
ZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQtPl9fc3MuX194WzFdCi0jZWxpZiBPUyhGUkVFQlNE
KQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfZWxy
Ci0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXQotI2Vs
aWYgZGVmaW5lZChfX0dMSUJDX18pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250
ZXh0LnBjCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5yZWdzWzFdCi0jZW5kaWYK
LQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9f
dCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiB7CiAgICAgbWNvbnRleHRfdCYgY29udGV4dCA9
IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwotICAgIHZv
aWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnN0cnVj
dGlvblBvaW50ZXJHUFIpOworICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpOwogICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVs
dGluZ0luc3RydWN0aW9uKSk7CiAKICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9y
eSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4
ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CkBAIC0xMjIs
OCArOTMsOCBAQCBzdGF0aWMgdm9pZCB0cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3Qq
IHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2Vw
dGlvblN0dWIpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhj
ZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICAgICAgICAg
ICAgICBGaXJzdEFyZ3VtZW50R1BSID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEV4Y2VwdGlvblR5
cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zdHJ1
Y3Rpb25Qb2ludGVyR1BSID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oZXhjZXB0aW9uU3R1
Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hp
bmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4oY29udGV4dCkgPSBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOworICAgICAgICAg
ICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0g
ZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IDJiZjA3ODk4ZGQwYzI4MDdkN2E1ZDM3ODYwZTNlMGE1NzE3ZjY3ZDIuLmE0YWEwZWZl
YzE1MTY1ZGIyY2YzZjgzMjE4YTIwNTBiMzY1MDY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtOTIxLDcg
KzkyMSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklU
KQorI2lmIChPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkgJiYgRU5BQkxF
KEpJVCkKICNkZWZpbmUgRU5BQkxFX1NJR05BTF9CQVNFRF9WTV9UUkFQUyAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304148</attachid>
            <date>2017-03-11 01:47:50 -0800</date>
            <delta_ts>2017-03-11 01:52:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311184748.patch</filename>
            <type>text/plain</type>
            <size>48164</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDIxNDRjMmVhMjc1ODY1OWMwZDdjMTc1MzBlZDllNTQ2ZGM1YjJmYWIuLjQ3NzQ3
MTU2MDc2NjIxOTNlMWM3ZTRjZDU1ODM2NDMwMGI2MjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlh
ZTgzOTMwYTkyNGRhLi41NDYxNGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVF
NDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEg
LyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9Owog
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
ODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC01MDM2LDYgKzUwMzcsNyBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dh
cFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CkBAIC02OTM2LDYgKzY5MzgsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdy
aXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJh
cnJpZXJJbmxpbmVzLmggKi8sCisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hp
bmVDb250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0
ZTE4NWRkZjM2YTZmLi44YTZkNTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKQEAgLTQ4MSw4NyArNDgxLDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpn
ZXRSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lm
IE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNl
bGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX3IxKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYg
Q1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhE
QVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5J
bnRTcCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsK
ICNlbGlmIFVTRShQVEhSRUFEUykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JzcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19T
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVO
QUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5hcm1fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsK
LSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWlu
dHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVk
KF9fR0xJQkNfXykpICYmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNr
QmFzZSA9IDA7CiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBA
QCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigp
IGNvbnN0CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERB
UldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQ
VShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX194WzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklY
MDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIx
MSk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4
Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVn
cy5SYnApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF94WzI5XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7
Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X0VCUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQucmVnc1syOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsK
LSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2lu
dGVyKHJlZ3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAg
cmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBh
bm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwy
MiBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRl
cigpIGNvbnN0CiAKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5z
dHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJ
Tl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklY
MDMKLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
LmVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2Vs
aWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3Ig
RG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNl
bGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuRWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19y
aXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Lm1jX3BjKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SSVBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lm
IE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxp
bnRQQygpIGNvbnN0CiB7CiAgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhE
QVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGlj
X2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50
IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsK
LSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBY
ODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBD
LiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02
NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2
KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0v
LyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUjgpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLkVzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJ
bnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZS
RUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hb
NF0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmFybV9yOCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0
XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5l
Q29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWEx
YmQwZTQ5YjliMzY4NmJhMjhiMzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4
NzY3ZDE3OWI3N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSAr
ODEsOCBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBD
KCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAg
ICAgCi0jaWYgT1MoREFSV0lOKQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkz
ODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgICAgICAgICAgdHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEMpCi0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0gICAgICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAg
ICB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBP
UyhXSU5ET1dTKQorICAgICAgICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5l
Q29udGV4dDo6UGxhdGZvcm1SZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAg
ICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRf
YXR0cl90IGF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYzBkOTUwYTI5MTUwNWM1ZTU4ZTVkMzUwYTgzMjk0
ZTBiYmQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5o
PgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRf
dCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZy
ZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVk
IGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
I2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQordHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0
eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vs
aWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxp
bmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
CisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzdd
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9f
REFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKwordGVtcGxh
dGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19y
c2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VO
SVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJ
VCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJ
Tl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5fX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcls4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzaSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorI2VuZGlmCisKKyNlbGlm
IE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKKworaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7Cisj
ZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Q
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5QYyk7CisjZWxp
ZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
KTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpOworeworI2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SMSk7CisjZWxpZiBDUFUoTUlQUykK
KyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0
aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSByZWdzLkVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmR4KTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEpJVCkK
K2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBDUFUoQVJNKQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdo
YXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYp
CisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwg
Ildyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fz
c2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBD
LiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJl
Z3MuUjEwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQor
I2VuZGlmCisKKyNlbmRpZgorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gZnJhbWVQ
b2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKK2lubGlu
ZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVn
aXN0ZXJzJj4ocmVncykpOworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK2lubGluZSB2b2lkKiBh
cmd1bWVudFBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0
dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVn
cykpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gbGxp
bnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3Mp
KTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNE
KSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCisKK2lubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikK
KyAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JzcCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JF
R19TUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuZ3JlZ3NbUkVHX1JTUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fc3ApOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
WzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4
dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVy
biBmcmFtZVBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7Cisj
ZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxv
d2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SQlBdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX2ZwKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5n
cmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisK
KyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFu
b3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCog
ZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJl
dHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQp
KTsKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFj
aGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmlw
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1BDXSk7CisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX2Vscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVw
ZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3Jl
Z3NbUkVHX0VJUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUklQXSk7
CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9wYyk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQucGMpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucGMpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBn
ZXQgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxh
dGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0
IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKwordGVt
cGxhdGU8dW5zaWduZWQgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIobWNvbnRleHRfdCYpOwor
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGFyZ3VtZW50
UG9pbnRlcjwxPihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19lZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5t
Y19yc2kpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjFdKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXSk7CisjZWxpZiBDUFUoTUlQUykK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5tY19yZWdzWzVdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRURYXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SU0ldKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3IxKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5yZWdzWzFdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzVd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQor
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRo
cmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwordGVtcGxhdGU8dW5zaWduZWQgTj4K
K2lubGluZSB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PG1jb250
ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2
b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
Cit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBPUyhEQVJXSU4pCisgICAg
cmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNl
bGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbNF0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQor
CisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRl
eHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKKyNlbGlmIENQVShY
ODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFy
bV9yOCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1s0XSk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5ncmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMg
Zm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUg
dm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8
bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYKKworI2VuZGlmCisKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhy
ZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCmlu
ZGV4IGJmNzU0ZmRlYTUzZmU5NWZjMzgyMzc4ZmJkYmQyYTFiMDY5M2RiNzQuLmIwNjFlZTlkMTFj
OTU3MTFmM2RlMjY2ZGViMDhiYzYyYzhiMDI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1Mp
ICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERB
UldJTikKICNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KICNlbGlmIE9TKFdJTkRPV1MpCkBA
IC02Myw2ICs2NywxMiBAQCBpbmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9y
bVRocmVhZCBwbGF0Zm9ybVRocmVhZCwgaW50IHNpZ25hbE51bWJlcgogICAgIGludCBlcnJObyA9
IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7CiAgICAgcmV0dXJuICFlcnJO
bzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCiB9CisjZWxpZiBVU0UoUFRIUkVBRFMpCitp
bmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9ybVRocmVhZCBwdGhyZWFkSUQs
IGludCBzaWduYWxOdW1iZXIpCit7CisgICAgaW50IGVyck5vID0gcHRocmVhZF9raWxsKHB0aHJl
YWRJRCwgc2lnbmFsTnVtYmVyKTsKKyAgICByZXR1cm4gIWVyck5vOyAvLyBBIDAgZXJyTm8gbWVh
bnMgc3VjY2Vzcy4KK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZWUwN2UwNTg2ZTEyNzliNmVmNzMx
OTBjYTkxOTM1MWYzOWFlMjEwZS4uMTZiMDViZTAzOWNiNjg5ZjBmMzFjNmMyNDM0MTYxNjhiY2E3
OGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTWFjaGlu
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC01Niw3OSArNTcsMzEgQEAgQUxX
QVlTX0lOTElORSBWTSYgVk1UcmFwczo6dm0oKSBjb25zdAogc3RydWN0IHNpZ2FjdGlvbiBvcmln
aW5hbFNpZ3VzcjFBY3Rpb247CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lndHJhcEFjdGlv
bjsKIAotI2lmIENQVShYODZfNjQpCi0KIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQogICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIHRyYXBQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgICAgICAvLyBPbiBY
ODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMu
IFNvLCBkZWMgYnkgMS4KICAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4odHJhcFBDKSAtIDE7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGFkanVzdFBDVG9Qb2lu
dFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCiAgICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5f
X3JpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFj
a1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbGlmIENQVShY
ODYpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0
X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRy
YXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VpcCkpCi0gICAg
ICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fZXNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bWNvbnRleHQtPl9fc3MuX19lYnApKQotICAgIHsKLSAgICAgICAgLy8gT24gWDg2LCBTSUdUUkFQ
IHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEu
Ci0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAx
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVj
dGlvbigpCi0gICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5fX2VpcCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLSAgICAKLSAgICBtY29udGV4dF90JiBt
Y29udGV4dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAg
IHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0KLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk0pCi0gICAgCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2ln
bmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29u
dGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQt
Pl9fc3MuX19wYykpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fc3ApKQotI2lmIENQVShBUk02NCkKLSAgICAgICAgLCBmcmFt
ZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19mcCkpCi0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzddKSkKLSNlbGlmIENQVShBUk0pCi0gICAg
ICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fclsxMV0pKQorI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCisgICAgICAgIE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpID0gdHJhcFBDOwogI2VuZGlmCi0g
ICAgeyB9Ci0gICAgICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3Ry
dWN0aW9uKCkgeyB9CisgICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CiAgICAgdm9p
ZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50
ZXI7CiB9OwotICAgIAotI2VuZGlmCiAKIGlubGluZSBzdGF0aWMgYm9vbCB2bUlzSW5hY3RpdmUo
Vk0mIHZtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmluZGV4IGY5MTZjMjAzYjFlMTIzMDA3ZjM3YzhlZmYwY2IxYzEyYWVjYTBiMjEuLjJkNTk1
M2VhMzY1OTRmNjRmZGQ3YmZiNDQ2MDIzMGUxMDljODhiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJDb2RlUHJvZmlsaW5nLmgiCiAKICNpbmNsdWRlICJDb2RlUHJvZmlsZS5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3IuaD4KIAog
I2lmIEhBVkUoU0lHTkFMX0gpCkBAIC02NiwxOSArNjcsMTMgQEAgc3RhdGljIHZvaWQgc2V0UHJv
ZmlsZVRpbWVyKHVuc2lnbmVkIHVzZWMpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAj
ZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkK
LXN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQot
ewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXAp
LT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29udGV4dC0+X19zcy5fX3JpcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LT5fX3NzLl9fcmJwKSk7Ci19Ci0jZWxp
ZiBPUyhMSU5VWCkgJiYgQ1BVKFg4NikKKyNpZiAoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RL
KSAmJiBDUFUoWDg2XzY0KSkgfHwgKE9TKExJTlVYKSAmJiBDUFUoWDg2KSkKIHN0YXRpYyB2b2lk
IHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewogICAgIG1jb250
ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4
dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUlQXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LmdyZWdzW1JFR19FQlBdKSk7CisgICAgQ29kZVByb2Zp
bGluZzo6c2FtcGxlKAorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAxYWMx
YWY0ODAxN2VjZjUyMDQxNjA5MTkyNjNhYjM4NDUwNjIwMDZmLi5mZDVjMzc1M2I1OTljNjUzZmZi
N2VhM2M4ZWI2ZjZkZjA2OTAxZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3Mg
U2lnaWxsQ3Jhc2hBbmFseXplciB7CiAgICAgCiAjZW5kaWYgLy8gVVNFKE9TX0xPRykKIAotI2lm
IENQVShYODZfNjQpCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dCht
Y29udGV4dF90JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAg
ICAgLCBtYWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19y
aXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIG1hY2hpbmVQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKICAgICB7CisjaWYgQ1BVKFg4Nl82NCkK
ICNkZWZpbmUgRk9SX0VBQ0hfUkVHSVNURVIodikgXAogICAgICAgICB2KHJheCkgXAogICAgICAg
ICB2KHJieCkgXApAQCAtMTE2LDI2ICsxMTYsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtY29udGV4dC0+X19zcy5fXyMjX19yZWcpKTsKICAgICAgICAgRk9SX0VBQ0hfUkVHSVNU
RVIoRFVNUF9SRUdJU1RFUikKICN1bmRlZiBGT1JfRUFDSF9SRUdJU1RFUgotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBz
dGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKIAogI2VsaWYgQ1BVKEFS
TTY0KQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4
dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCBt
YWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19wYykpCi0g
ICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxG
cmFtZSo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotICAgIHsgfQotCi0gICAgdm9pZCBkdW1wKCkK
LSAgICB7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjg7IGkgKz0g
NCkgewogICAgICAgICAgICAgbG9nKCJ4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAx
NmxseCB4JWQ6ICUwMTZsbHgiLApAQCAtMTQ5LDI4ICsxMzEsMTQgQEAgc3RydWN0IFNpZ25hbENv
bnRleHQgewogICAgICAgICAgICAgaSwgbWNvbnRleHQtPl9fc3MuX194W2ldLCBtY29udGV4dC0+
X19zcy5fX2ZwLCBtY29udGV4dC0+X19zcy5fX2xyKTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxs
eCBwYzogJTAxNmxseCBjcHNyOiAlMDh4IiwKICAgICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9f
c3AsIG1jb250ZXh0LT5fX3NzLl9fcGMsIG1jb250ZXh0LT5fX3NzLl9fY3Bzcik7CisjZW5kaWYK
ICAgICB9CiAKLSAgICBtY29udGV4dF90JiBtY29udGV4dDsKICAgICB2b2lkKiBtYWNoaW5lUEM7
CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07CiAK
LSNlbHNlCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250
ZXh0X3QmKSB7IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoKSB7IH0KLSAgICAKLSAgICB2b2lkKiBt
YWNoaW5lUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9pbnRl
cjsKLX07Ci0gICAgCi0jZW5kaWYKLQogc3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ0lsbEFj
dGlvbjsKIAogc3RhdGljIHZvaWQgaGFuZGxlQ3Jhc2goaW50IHNpZ25hbE51bWJlciwgc2lnaW5m
b190KiBpbmZvLCB2b2lkKiB1YXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5z
cGVjdG9yLmNwcAppbmRleCA4YmUzYzg1NjIwMjBjYzYyMWQzNWRjNDcyNzQzODRhZmViMjllZDFm
Li5lMzlhYzMyNzk0YjJhYzQ0NjJjYTU5NjI2NTQ2N2FiNTkyNGNmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRl
ICJIZWFwSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggYWViYjE3
MTVhYjE0ZjY5ZjZiZjRhMmMxYjJhY2M2N2Y5ZGUxOTM5OC4uYjE1MDM3NDQ3NGQwYmU5NmVkYmNh
MDQ4OGQwZTdiNjhjYjBjN2M2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCisj
aW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldh
c21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtNTAsNDAgKzUx
LDEwIEBAIHN0YXRpYyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIHN0YXRp
YyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlvbnNMb2NrOwogc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PHN0ZDo6dHVwbGU8Vk0qLCB2b2lkKiwgdm9pZCo+Pj4gY29kZUxvY2F0aW9uczsg
Ly8gKHZtLCBzdGFydCwgZW5kKQogCi0vLyBGSVhNRTogQ2xlYW4gdXAgbWNvbnRleHRfdCBoYW5k
bGluZyBjb2RlIHNpbmNlIGl0IGlzIHNjYXR0ZXJlZCBpbiBoZWFwLywgdG9vbHMvIGFuZCB3YXNt
Ly4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxODAKLSNp
ZiBDUFUoWDg2XzY0KQotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50
ZXJHUFIgY29udGV4dC0+X19zcy5fX3JpcAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRl
eHQtPl9fc3MuX19yc2kKLSNlbGlmIE9TKEZSRUVCU0QpCi0jZGVmaW5lIEluc3RydWN0aW9uUG9p
bnRlckdQUiBjb250ZXh0Lm1jX3JpcAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQu
bWNfcnNpCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2lu
dGVyR1BSIGNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0KLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBj
b250ZXh0LmdyZWdzW1JFR19SU0ldCi0jZW5kaWYKLQotI2Vsc2UKLQotI2lmIE9TKERBUldJTikK
LSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQtPl9fc3MuX19wYwotI2RlZmlu
ZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQtPl9fc3MuX194WzFdCi0jZWxpZiBPUyhGUkVFQlNE
KQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfZWxy
Ci0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXQotI2Vs
aWYgZGVmaW5lZChfX0dMSUJDX18pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250
ZXh0LnBjCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5yZWdzWzFdCi0jZW5kaWYK
LQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9f
dCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiB7CiAgICAgbWNvbnRleHRfdCYgY29udGV4dCA9
IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwotICAgIHZv
aWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnN0cnVj
dGlvblBvaW50ZXJHUFIpOworICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpOwogICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVs
dGluZ0luc3RydWN0aW9uKSk7CiAKICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9y
eSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4
ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CkBAIC0xMjIs
OCArOTMsOCBAQCBzdGF0aWMgdm9pZCB0cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3Qq
IHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2Vw
dGlvblN0dWIpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhj
ZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICAgICAgICAg
ICAgICBGaXJzdEFyZ3VtZW50R1BSID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEV4Y2VwdGlvblR5
cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zdHJ1
Y3Rpb25Qb2ludGVyR1BSID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oZXhjZXB0aW9uU3R1
Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hp
bmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4oY29udGV4dCkgPSBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOworICAgICAgICAg
ICAgICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0g
ZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IDJiZjA3ODk4ZGQwYzI4MDdkN2E1ZDM3ODYwZTNlMGE1NzE3ZjY3ZDIuLmE0YWEwZWZl
YzE1MTY1ZGIyY2YzZjgzMjE4YTIwNTBiMzY1MDY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtOTIxLDcg
KzkyMSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklU
KQorI2lmIChPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkgJiYgRU5BQkxF
KEpJVCkKICNkZWZpbmUgRU5BQkxFX1NJR05BTF9CQVNFRF9WTV9UUkFQUyAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304149</attachid>
            <date>2017-03-11 01:52:38 -0800</date>
            <delta_ts>2017-03-11 01:59:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311185237.patch</filename>
            <type>text/plain</type>
            <size>48166</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDIxNDRjMmVhMjc1ODY1OWMwZDdjMTc1MzBlZDllNTQ2ZGM1YjJmYWIuLjQ3NzQ3
MTU2MDc2NjIxOTNlMWM3ZTRjZDU1ODM2NDMwMGI2MjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlh
ZTgzOTMwYTkyNGRhLi41NDYxNGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVF
NDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEg
LyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9Owog
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
ODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC01MDM2LDYgKzUwMzcsNyBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dh
cFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CkBAIC02OTM2LDYgKzY5MzgsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdy
aXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJh
cnJpZXJJbmxpbmVzLmggKi8sCisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hp
bmVDb250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0
ZTE4NWRkZjM2YTZmLi44YTZkNTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKQEAgLTQ4MSw4NyArNDgxLDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpn
ZXRSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lm
IE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNl
bGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX3IxKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYg
Q1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhE
QVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5J
bnRTcCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsK
ICNlbGlmIFVTRShQVEhSRUFEUykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JzcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19T
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVO
QUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5hcm1fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsK
LSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWlu
dHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVk
KF9fR0xJQkNfXykpICYmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNr
QmFzZSA9IDA7CiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBA
QCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigp
IGNvbnN0CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERB
UldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQ
VShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX194WzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklY
MDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIx
MSk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4
Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVn
cy5SYnApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF94WzI5XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7
Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X0VCUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQucmVnc1syOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsK
LSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2lu
dGVyKHJlZ3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAg
cmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBh
bm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwy
MiBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRl
cigpIGNvbnN0CiAKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5z
dHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJ
Tl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklY
MDMKLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
LmVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2Vs
aWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3Ig
RG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNl
bGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuRWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19y
aXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Lm1jX3BjKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SSVBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lm
IE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxp
bnRQQygpIGNvbnN0CiB7CiAgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhE
QVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGlj
X2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50
IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsK
LSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBY
ODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBD
LiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02
NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2
KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0v
LyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUjgpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLkVzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJ
bnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZS
RUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hb
NF0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmFybV9yOCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0
XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5l
Q29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWEx
YmQwZTQ5YjliMzY4NmJhMjhiMzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4
NzY3ZDE3OWI3N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSAr
ODEsOCBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBD
KCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAg
ICAgCi0jaWYgT1MoREFSV0lOKQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkz
ODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgICAgICAgICAgdHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEMpCi0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0gICAgICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAg
ICB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBP
UyhXSU5ET1dTKQorICAgICAgICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5l
Q29udGV4dDo6UGxhdGZvcm1SZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAg
ICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRf
YXR0cl90IGF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYzBkOTUwYTI5MTUwNWM1ZTU4ZTVkMzUwYTgzMjk0
ZTBiYmQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5o
PgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRf
dCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZy
ZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVk
IGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
I2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQordHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0
eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vs
aWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxp
bmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
CisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzdd
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9f
REFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKwordGVtcGxh
dGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19y
c2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VO
SVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJ
VCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJ
Tl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5fX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcls4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzaSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorI2VuZGlmCisKKyNlbGlm
IE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKKworaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7Cisj
ZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Q
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5QYyk7CisjZWxp
ZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
KTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpOworeworI2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SMSk7CisjZWxpZiBDUFUoTUlQUykK
KyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0
aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSByZWdzLkVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmR4KTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEpJVCkK
K2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBDUFUoQVJNKQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdo
YXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYp
CisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwg
Ildyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fz
c2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBD
LiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJl
Z3MuUjEwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQor
I2VuZGlmCisKKyNlbmRpZgorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gZnJhbWVQ
b2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKK2lubGlu
ZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVn
aXN0ZXJzJj4ocmVncykpOworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK2lubGluZSB2b2lkKiBh
cmd1bWVudFBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0
dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVn
cykpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gbGxp
bnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3Mp
KTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNE
KSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCisKK2lubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikK
KyAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JzcCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JF
R19TUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuZ3JlZ3NbUkVHX1JTUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fc3ApOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
WzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4
dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVy
biBmcmFtZVBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7Cisj
ZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxv
d2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SQlBdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX2ZwKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5n
cmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisK
KyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFu
b3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCog
ZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJl
dHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQp
KTsKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFj
aGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmlw
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1BDXSk7CisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX2Vscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVw
ZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3Jl
Z3NbUkVHX0VJUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUklQXSk7
CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9wYyk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQucGMpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucGMpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBn
ZXQgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxh
dGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0
IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKwordGVt
cGxhdGU8dW5zaWduZWQgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIobWNvbnRleHRfdCYpOwor
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGFyZ3VtZW50
UG9pbnRlcjwxPihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19lZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5t
Y19yc2kpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjFdKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXSk7CisjZWxpZiBDUFUoTUlQUykK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5tY19yZWdzWzVdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRURYXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SU0ldKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3IxKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5yZWdzWzFdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzVd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQor
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRo
cmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwordGVtcGxhdGU8dW5zaWduZWQgTj4K
K2lubGluZSB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PG1jb250
ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2
b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
Cit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBPUyhEQVJXSU4pCisgICAg
cmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNl
bGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbNF0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQor
CisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRl
eHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKKyNlbGlmIENQVShY
ODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFy
bV9yOCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1s0XSk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5ncmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMg
Zm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUg
dm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8
bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYKKworI2VuZGlmCisKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhy
ZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCmlu
ZGV4IGJmNzU0ZmRlYTUzZmU5NWZjMzgyMzc4ZmJkYmQyYTFiMDY5M2RiNzQuLmIwNjFlZTlkMTFj
OTU3MTFmM2RlMjY2ZGViMDhiYzYyYzhiMDI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1Mp
ICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERB
UldJTikKICNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KICNlbGlmIE9TKFdJTkRPV1MpCkBA
IC02Myw2ICs2NywxMiBAQCBpbmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9y
bVRocmVhZCBwbGF0Zm9ybVRocmVhZCwgaW50IHNpZ25hbE51bWJlcgogICAgIGludCBlcnJObyA9
IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7CiAgICAgcmV0dXJuICFlcnJO
bzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCiB9CisjZWxpZiBVU0UoUFRIUkVBRFMpCitp
bmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9ybVRocmVhZCBwdGhyZWFkSUQs
IGludCBzaWduYWxOdW1iZXIpCit7CisgICAgaW50IGVyck5vID0gcHRocmVhZF9raWxsKHB0aHJl
YWRJRCwgc2lnbmFsTnVtYmVyKTsKKyAgICByZXR1cm4gIWVyck5vOyAvLyBBIDAgZXJyTm8gbWVh
bnMgc3VjY2Vzcy4KK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZWUwN2UwNTg2ZTEyNzliNmVmNzMx
OTBjYTkxOTM1MWYzOWFlMjEwZS4uMTZiMDViZTAzOWNiNjg5ZjBmMzFjNmMyNDM0MTYxNjhiY2E3
OGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTWFjaGlu
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC01Niw3OSArNTcsMzEgQEAgQUxX
QVlTX0lOTElORSBWTSYgVk1UcmFwczo6dm0oKSBjb25zdAogc3RydWN0IHNpZ2FjdGlvbiBvcmln
aW5hbFNpZ3VzcjFBY3Rpb247CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lndHJhcEFjdGlv
bjsKIAotI2lmIENQVShYODZfNjQpCi0KIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQogICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIHRyYXBQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgICAgICAvLyBPbiBY
ODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMu
IFNvLCBkZWMgYnkgMS4KICAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4odHJhcFBDKSAtIDE7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGFkanVzdFBDVG9Qb2lu
dFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCiAgICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5f
X3JpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFj
a1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbGlmIENQVShY
ODYpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0
X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRy
YXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VpcCkpCi0gICAg
ICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fZXNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bWNvbnRleHQtPl9fc3MuX19lYnApKQotICAgIHsKLSAgICAgICAgLy8gT24gWDg2LCBTSUdUUkFQ
IHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEu
Ci0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAx
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVj
dGlvbigpCi0gICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5fX2VpcCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLSAgICAKLSAgICBtY29udGV4dF90JiBt
Y29udGV4dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAg
IHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0KLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk0pCi0gICAgCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2ln
bmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29u
dGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQt
Pl9fc3MuX19wYykpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fc3ApKQotI2lmIENQVShBUk02NCkKLSAgICAgICAgLCBmcmFt
ZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19mcCkpCi0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzddKSkKLSNlbGlmIENQVShBUk0pCi0gICAg
ICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fclsxMV0pKQorI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCisgICAgICAgIE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpID0gdHJhcFBDOwogI2VuZGlmCi0g
ICAgeyB9Ci0gICAgICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3Ry
dWN0aW9uKCkgeyB9CisgICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CiAgICAgdm9p
ZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50
ZXI7CiB9OwotICAgIAotI2VuZGlmCiAKIGlubGluZSBzdGF0aWMgYm9vbCB2bUlzSW5hY3RpdmUo
Vk0mIHZtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmluZGV4IGY5MTZjMjAzYjFlMTIzMDA3ZjM3YzhlZmYwY2IxYzEyYWVjYTBiMjEuLjJkNTk1
M2VhMzY1OTRmNjRmZGQ3YmZiNDQ2MDIzMGUxMDljODhiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJDb2RlUHJvZmlsaW5nLmgiCiAKICNpbmNsdWRlICJDb2RlUHJvZmlsZS5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3IuaD4KIAog
I2lmIEhBVkUoU0lHTkFMX0gpCkBAIC02NiwxOSArNjcsMTMgQEAgc3RhdGljIHZvaWQgc2V0UHJv
ZmlsZVRpbWVyKHVuc2lnbmVkIHVzZWMpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAj
ZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkK
LXN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQot
ewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXAp
LT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29udGV4dC0+X19zcy5fX3JpcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LT5fX3NzLl9fcmJwKSk7Ci19Ci0jZWxp
ZiBPUyhMSU5VWCkgJiYgQ1BVKFg4NikKKyNpZiAoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RL
KSAmJiBDUFUoWDg2XzY0KSkgfHwgKE9TKExJTlVYKSAmJiBDUFUoWDg2KSkKIHN0YXRpYyB2b2lk
IHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewogICAgIG1jb250
ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4
dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUlQXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LmdyZWdzW1JFR19FQlBdKSk7CisgICAgQ29kZVByb2Zp
bGluZzo6c2FtcGxlKAorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAxYWMx
YWY0ODAxN2VjZjUyMDQxNjA5MTkyNjNhYjM4NDUwNjIwMDZmLi5mZDVjMzc1M2I1OTljNjUzZmZi
N2VhM2M4ZWI2ZjZkZjA2OTAxZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3Mg
U2lnaWxsQ3Jhc2hBbmFseXplciB7CiAgICAgCiAjZW5kaWYgLy8gVVNFKE9TX0xPRykKIAotI2lm
IENQVShYODZfNjQpCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dCht
Y29udGV4dF90JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAg
ICAgLCBtYWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19y
aXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIG1hY2hpbmVQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKICAgICB7CisjaWYgQ1BVKFg4Nl82NCkK
ICNkZWZpbmUgRk9SX0VBQ0hfUkVHSVNURVIodikgXAogICAgICAgICB2KHJheCkgXAogICAgICAg
ICB2KHJieCkgXApAQCAtMTE2LDI2ICsxMTYsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtY29udGV4dC0+X19zcy5fXyMjX19yZWcpKTsKICAgICAgICAgRk9SX0VBQ0hfUkVHSVNU
RVIoRFVNUF9SRUdJU1RFUikKICN1bmRlZiBGT1JfRUFDSF9SRUdJU1RFUgotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBz
dGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKIAogI2VsaWYgQ1BVKEFS
TTY0KQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4
dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCBt
YWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19wYykpCi0g
ICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxG
cmFtZSo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotICAgIHsgfQotCi0gICAgdm9pZCBkdW1wKCkK
LSAgICB7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjg7IGkgKz0g
NCkgewogICAgICAgICAgICAgbG9nKCJ4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAx
NmxseCB4JWQ6ICUwMTZsbHgiLApAQCAtMTQ5LDI4ICsxMzEsMTQgQEAgc3RydWN0IFNpZ25hbENv
bnRleHQgewogICAgICAgICAgICAgaSwgbWNvbnRleHQtPl9fc3MuX194W2ldLCBtY29udGV4dC0+
X19zcy5fX2ZwLCBtY29udGV4dC0+X19zcy5fX2xyKTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxs
eCBwYzogJTAxNmxseCBjcHNyOiAlMDh4IiwKICAgICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9f
c3AsIG1jb250ZXh0LT5fX3NzLl9fcGMsIG1jb250ZXh0LT5fX3NzLl9fY3Bzcik7CisjZW5kaWYK
ICAgICB9CiAKLSAgICBtY29udGV4dF90JiBtY29udGV4dDsKICAgICB2b2lkKiBtYWNoaW5lUEM7
CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07CiAK
LSNlbHNlCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250
ZXh0X3QmKSB7IH0KLSAgICAKLSAgICB2b2lkIGR1bXAoKSB7IH0KLSAgICAKLSAgICB2b2lkKiBt
YWNoaW5lUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9pbnRl
cjsKLX07Ci0gICAgCi0jZW5kaWYKLQogc3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ0lsbEFj
dGlvbjsKIAogc3RhdGljIHZvaWQgaGFuZGxlQ3Jhc2goaW50IHNpZ25hbE51bWJlciwgc2lnaW5m
b190KiBpbmZvLCB2b2lkKiB1YXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5z
cGVjdG9yLmNwcAppbmRleCA4YmUzYzg1NjIwMjBjYzYyMWQzNWRjNDcyNzQzODRhZmViMjllZDFm
Li5lMzlhYzMyNzk0YjJhYzQ0NjJjYTU5NjI2NTQ2N2FiNTkyNGNmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRl
ICJIZWFwSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggYWViYjE3
MTVhYjE0ZjY5ZjZiZjRhMmMxYjJhY2M2N2Y5ZGUxOTM5OC4uYzFjNmMyMjdkMjZiNzgxMzMwMDQ2
NTVkZjg5NGQ0YzE5ZTA1NjkxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCisj
aW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldh
c21FeGNlcHRpb25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtNTAsNDAgKzUx
LDEwIEBAIHN0YXRpYyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIHN0YXRp
YyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlvbnNMb2NrOwogc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PHN0ZDo6dHVwbGU8Vk0qLCB2b2lkKiwgdm9pZCo+Pj4gY29kZUxvY2F0aW9uczsg
Ly8gKHZtLCBzdGFydCwgZW5kKQogCi0vLyBGSVhNRTogQ2xlYW4gdXAgbWNvbnRleHRfdCBoYW5k
bGluZyBjb2RlIHNpbmNlIGl0IGlzIHNjYXR0ZXJlZCBpbiBoZWFwLywgdG9vbHMvIGFuZCB3YXNt
Ly4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxODAKLSNp
ZiBDUFUoWDg2XzY0KQotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50
ZXJHUFIgY29udGV4dC0+X19zcy5fX3JpcAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRl
eHQtPl9fc3MuX19yc2kKLSNlbGlmIE9TKEZSRUVCU0QpCi0jZGVmaW5lIEluc3RydWN0aW9uUG9p
bnRlckdQUiBjb250ZXh0Lm1jX3JpcAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQu
bWNfcnNpCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2lu
dGVyR1BSIGNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0KLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBj
b250ZXh0LmdyZWdzW1JFR19SU0ldCi0jZW5kaWYKLQotI2Vsc2UKLQotI2lmIE9TKERBUldJTikK
LSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQtPl9fc3MuX19wYwotI2RlZmlu
ZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQtPl9fc3MuX194WzFdCi0jZWxpZiBPUyhGUkVFQlNE
KQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfZWxy
Ci0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXQotI2Vs
aWYgZGVmaW5lZChfX0dMSUJDX18pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250
ZXh0LnBjCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5yZWdzWzFdCi0jZW5kaWYK
LQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9f
dCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiB7CiAgICAgbWNvbnRleHRfdCYgY29udGV4dCA9
IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwotICAgIHZv
aWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnN0cnVj
dGlvblBvaW50ZXJHUFIpOworICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5l
Q29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpOwogICAgIGRhdGFMb2dMbklmKHZl
cmJvc2UsICJzdGFydGluZyBoYW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVs
dGluZ0luc3RydWN0aW9uKSk7CiAKICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9y
eSBzdGFydDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4
ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpLCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CkBAIC0xMjIs
OCArOTMsOCBAQCBzdGF0aWMgdm9pZCB0cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3Qq
IHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2Vw
dGlvblN0dWIpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhj
ZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICAgICAgICAg
ICAgICBGaXJzdEFyZ3VtZW50R1BSID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KEV4Y2VwdGlvblR5
cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zdHJ1
Y3Rpb25Qb2ludGVyR1BSID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oZXhjZXB0aW9uU3R1
Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hp
bmVDb250ZXh0Ojphcmd1bWVudFBvaW50ZXI8MT4oY29udGV4dCkgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPihFeGNlcHRpb25UeXBlOjpPdXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CisgICAgICAg
ICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCkg
PSBleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKaW5kZXggMmJmMDc4OThkZDBjMjgwN2Q3YTVkMzc4NjBlM2UwYTU3MTdmNjdkMi4uYTRhYTBl
ZmVjMTUxNjVkYjJjZjNmODMyMThhMjA1MGIzNjUwNjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MjEs
NyArOTIxLDcgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShK
SVQpCisjaWYgKE9TKERBUldJTikgfHwgT1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSAmJiBFTkFC
TEUoSklUKQogI2RlZmluZSBFTkFCTEVfU0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRpZgog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304150</attachid>
            <date>2017-03-11 01:59:17 -0800</date>
            <delta_ts>2017-03-11 02:10:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311185915.patch</filename>
            <type>text/plain</type>
            <size>48161</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDIxNDRjMmVhMjc1ODY1OWMwZDdjMTc1MzBlZDllNTQ2ZGM1YjJmYWIuLjQ3NzQ3
MTU2MDc2NjIxOTNlMWM3ZTRjZDU1ODM2NDMwMGI2MjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlh
ZTgzOTMwYTkyNGRhLi41NDYxNGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVF
NDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEg
LyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9Owog
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
ODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC01MDM2LDYgKzUwMzcsNyBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dh
cFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CkBAIC02OTM2LDYgKzY5MzgsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdy
aXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJh
cnJpZXJJbmxpbmVzLmggKi8sCisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hp
bmVDb250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0
ZTE4NWRkZjM2YTZmLi44YTZkNTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKQEAgLTQ4MSw4NyArNDgxLDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpn
ZXRSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lm
IE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNl
bGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX3IxKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYg
Q1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhE
QVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5J
bnRTcCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsK
ICNlbGlmIFVTRShQVEhSRUFEUykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JzcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19T
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVO
QUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5hcm1fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsK
LSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWlu
dHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVk
KF9fR0xJQkNfXykpICYmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNr
QmFzZSA9IDA7CiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBA
QCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigp
IGNvbnN0CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERB
UldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQ
VShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX194WzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklY
MDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIx
MSk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4
Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVn
cy5SYnApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF94WzI5XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7
Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X0VCUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQucmVnc1syOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsK
LSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2lu
dGVyKHJlZ3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAg
cmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBh
bm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwy
MiBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRl
cigpIGNvbnN0CiAKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5z
dHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJ
Tl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklY
MDMKLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
LmVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2Vs
aWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3Ig
RG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNl
bGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuRWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19y
aXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Lm1jX3BjKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SSVBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lm
IE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxp
bnRQQygpIGNvbnN0CiB7CiAgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhE
QVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGlj
X2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50
IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsK
LSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBY
ODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBD
LiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02
NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2
KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0v
LyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUjgpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLkVzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJ
bnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZS
RUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hb
NF0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmFybV9yOCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0
XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5l
Q29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWEx
YmQwZTQ5YjliMzY4NmJhMjhiMzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4
NzY3ZDE3OWI3N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSAr
ODEsOCBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBD
KCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAg
ICAgCi0jaWYgT1MoREFSV0lOKQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkz
ODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgICAgICAgICAgdHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEMpCi0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0gICAgICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAg
ICB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBP
UyhXSU5ET1dTKQorICAgICAgICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5l
Q29udGV4dDo6UGxhdGZvcm1SZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAg
ICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRf
YXR0cl90IGF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYzBkOTUwYTI5MTUwNWM1ZTU4ZTVkMzUwYTgzMjk0
ZTBiYmQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5o
PgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRf
dCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZy
ZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVk
IGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
I2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQordHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0
eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vs
aWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxp
bmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
CisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzdd
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9f
REFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKwordGVtcGxh
dGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19y
c2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VO
SVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJ
VCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJ
Tl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5fX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcls4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzaSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorI2VuZGlmCisKKyNlbGlm
IE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKKworaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7Cisj
ZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Q
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5QYyk7CisjZWxp
ZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
KTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpOworeworI2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SMSk7CisjZWxpZiBDUFUoTUlQUykK
KyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0
aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSByZWdzLkVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmR4KTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEpJVCkK
K2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBDUFUoQVJNKQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdo
YXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYp
CisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwg
Ildyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fz
c2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBD
LiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJl
Z3MuUjEwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQor
I2VuZGlmCisKKyNlbmRpZgorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gZnJhbWVQ
b2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKK2lubGlu
ZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVn
aXN0ZXJzJj4ocmVncykpOworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK2lubGluZSB2b2lkKiBh
cmd1bWVudFBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0
dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVn
cykpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gbGxp
bnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3Mp
KTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNE
KSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCisKK2lubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikK
KyAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JzcCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JF
R19TUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuZ3JlZ3NbUkVHX1JTUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fc3ApOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
WzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4
dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVy
biBmcmFtZVBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7Cisj
ZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxv
d2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SQlBdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX2ZwKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5n
cmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisK
KyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFu
b3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCog
ZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJl
dHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQp
KTsKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFj
aGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmlw
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1BDXSk7CisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX2Vscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVw
ZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3Jl
Z3NbUkVHX0VJUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUklQXSk7
CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9wYyk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQucGMpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucGMpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBn
ZXQgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxh
dGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0
IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKwordGVt
cGxhdGU8dW5zaWduZWQgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIobWNvbnRleHRfdCYpOwor
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGFyZ3VtZW50
UG9pbnRlcjwxPihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19lZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5t
Y19yc2kpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjFdKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXSk7CisjZWxpZiBDUFUoTUlQUykK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5tY19yZWdzWzVdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRURYXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SU0ldKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3IxKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5yZWdzWzFdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzVd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQor
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRo
cmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwordGVtcGxhdGU8dW5zaWduZWQgTj4K
K2lubGluZSB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PG1jb250
ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2
b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
Cit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBPUyhEQVJXSU4pCisgICAg
cmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNl
bGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbNF0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQor
CisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRl
eHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKKyNlbGlmIENQVShY
ODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFy
bV9yOCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1s0XSk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5ncmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMg
Zm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUg
dm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8
bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYKKworI2VuZGlmCisKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhy
ZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCmlu
ZGV4IGJmNzU0ZmRlYTUzZmU5NWZjMzgyMzc4ZmJkYmQyYTFiMDY5M2RiNzQuLmIwNjFlZTlkMTFj
OTU3MTFmM2RlMjY2ZGViMDhiYzYyYzhiMDI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1Mp
ICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERB
UldJTikKICNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KICNlbGlmIE9TKFdJTkRPV1MpCkBA
IC02Myw2ICs2NywxMiBAQCBpbmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9y
bVRocmVhZCBwbGF0Zm9ybVRocmVhZCwgaW50IHNpZ25hbE51bWJlcgogICAgIGludCBlcnJObyA9
IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7CiAgICAgcmV0dXJuICFlcnJO
bzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCiB9CisjZWxpZiBVU0UoUFRIUkVBRFMpCitp
bmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9ybVRocmVhZCBwdGhyZWFkSUQs
IGludCBzaWduYWxOdW1iZXIpCit7CisgICAgaW50IGVyck5vID0gcHRocmVhZF9raWxsKHB0aHJl
YWRJRCwgc2lnbmFsTnVtYmVyKTsKKyAgICByZXR1cm4gIWVyck5vOyAvLyBBIDAgZXJyTm8gbWVh
bnMgc3VjY2Vzcy4KK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZWUwN2UwNTg2ZTEyNzliNmVmNzMx
OTBjYTkxOTM1MWYzOWFlMjEwZS4uMTZiMDViZTAzOWNiNjg5ZjBmMzFjNmMyNDM0MTYxNjhiY2E3
OGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTWFjaGlu
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC01Niw3OSArNTcsMzEgQEAgQUxX
QVlTX0lOTElORSBWTSYgVk1UcmFwczo6dm0oKSBjb25zdAogc3RydWN0IHNpZ2FjdGlvbiBvcmln
aW5hbFNpZ3VzcjFBY3Rpb247CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lndHJhcEFjdGlv
bjsKIAotI2lmIENQVShYODZfNjQpCi0KIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQogICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIHRyYXBQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgICAgICAvLyBPbiBY
ODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMu
IFNvLCBkZWMgYnkgMS4KICAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4odHJhcFBDKSAtIDE7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGFkanVzdFBDVG9Qb2lu
dFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCiAgICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5f
X3JpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFj
a1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbGlmIENQVShY
ODYpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0
X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRy
YXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VpcCkpCi0gICAg
ICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fZXNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bWNvbnRleHQtPl9fc3MuX19lYnApKQotICAgIHsKLSAgICAgICAgLy8gT24gWDg2LCBTSUdUUkFQ
IHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEu
Ci0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAx
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVj
dGlvbigpCi0gICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5fX2VpcCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLSAgICAKLSAgICBtY29udGV4dF90JiBt
Y29udGV4dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAg
IHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0KLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk0pCi0gICAgCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2ln
bmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29u
dGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQt
Pl9fc3MuX19wYykpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fc3ApKQotI2lmIENQVShBUk02NCkKLSAgICAgICAgLCBmcmFt
ZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19mcCkpCi0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzddKSkKLSNlbGlmIENQVShBUk0pCi0gICAg
ICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fclsxMV0pKQorI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCisgICAgICAgIE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpID0gdHJhcFBDOwogI2VuZGlmCi0g
ICAgeyB9Ci0gICAgICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3Ry
dWN0aW9uKCkgeyB9CisgICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CiAgICAgdm9p
ZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50
ZXI7CiB9OwotICAgIAotI2VuZGlmCiAKIGlubGluZSBzdGF0aWMgYm9vbCB2bUlzSW5hY3RpdmUo
Vk0mIHZtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmluZGV4IGY5MTZjMjAzYjFlMTIzMDA3ZjM3YzhlZmYwY2IxYzEyYWVjYTBiMjEuLjJkNTk1
M2VhMzY1OTRmNjRmZGQ3YmZiNDQ2MDIzMGUxMDljODhiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJDb2RlUHJvZmlsaW5nLmgiCiAKICNpbmNsdWRlICJDb2RlUHJvZmlsZS5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3IuaD4KIAog
I2lmIEhBVkUoU0lHTkFMX0gpCkBAIC02NiwxOSArNjcsMTMgQEAgc3RhdGljIHZvaWQgc2V0UHJv
ZmlsZVRpbWVyKHVuc2lnbmVkIHVzZWMpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAj
ZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkK
LXN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQot
ewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXAp
LT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29udGV4dC0+X19zcy5fX3JpcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LT5fX3NzLl9fcmJwKSk7Ci19Ci0jZWxp
ZiBPUyhMSU5VWCkgJiYgQ1BVKFg4NikKKyNpZiAoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RL
KSAmJiBDUFUoWDg2XzY0KSkgfHwgKE9TKExJTlVYKSAmJiBDUFUoWDg2KSkKIHN0YXRpYyB2b2lk
IHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewogICAgIG1jb250
ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4
dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUlQXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LmdyZWdzW1JFR19FQlBdKSk7CisgICAgQ29kZVByb2Zp
bGluZzo6c2FtcGxlKAorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAxYWMx
YWY0ODAxN2VjZjUyMDQxNjA5MTkyNjNhYjM4NDUwNjIwMDZmLi4yZjk4MTM2YjBmMzQ1NGUzODdl
ZjhkODU5N2JjNjU0ZWI1MzIwMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3Mg
U2lnaWxsQ3Jhc2hBbmFseXplciB7CiAgICAgCiAjZW5kaWYgLy8gVVNFKE9TX0xPRykKIAotI2lm
IENQVShYODZfNjQpCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dCht
Y29udGV4dF90JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAg
ICAgLCBtYWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19y
aXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIG1hY2hpbmVQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKICAgICB7CisjaWYgQ1BVKFg4Nl82NCkK
ICNkZWZpbmUgRk9SX0VBQ0hfUkVHSVNURVIodikgXAogICAgICAgICB2KHJheCkgXAogICAgICAg
ICB2KHJieCkgXApAQCAtMTE2LDI2ICsxMTYsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtY29udGV4dC0+X19zcy5fXyMjX19yZWcpKTsKICAgICAgICAgRk9SX0VBQ0hfUkVHSVNU
RVIoRFVNUF9SRUdJU1RFUikKICN1bmRlZiBGT1JfRUFDSF9SRUdJU1RFUgotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBz
dGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKIAogI2VsaWYgQ1BVKEFS
TTY0KQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4
dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCBt
YWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19wYykpCi0g
ICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxG
cmFtZSo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotICAgIHsgfQotCi0gICAgdm9pZCBkdW1wKCkK
LSAgICB7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjg7IGkgKz0g
NCkgewogICAgICAgICAgICAgbG9nKCJ4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAx
NmxseCB4JWQ6ICUwMTZsbHgiLApAQCAtMTQ5LDYgKzEzMSw3IEBAIHN0cnVjdCBTaWduYWxDb250
ZXh0IHsKICAgICAgICAgICAgIGksIG1jb250ZXh0LT5fX3NzLl9feFtpXSwgbWNvbnRleHQtPl9f
c3MuX19mcCwgbWNvbnRleHQtPl9fc3MuX19scik7CiAgICAgICAgIGxvZygic3A6ICUwMTZsbHgg
cGM6ICUwMTZsbHggY3BzcjogJTA4eCIsCiAgICAgICAgICAgICBtY29udGV4dC0+X19zcy5fX3Nw
LCBtY29udGV4dC0+X19zcy5fX3BjLCBtY29udGV4dC0+X19zcy5fX2Nwc3IpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CkBAIC0xNTcsMjAgKzE0MCw2IEBAIHN0
cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7CiB9OwogCi0jZWxz
ZQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90
JikgeyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKCkgeyB9Ci0gICAgCi0gICAgdm9pZCogbWFjaGlu
ZVBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7Ci19
OwotICAgIAotI2VuZGlmCi0KIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWdJbGxBY3Rpb247
CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUNyYXNoKGludCBzaWduYWxOdW1iZXIsIHNpZ2luZm9fdCog
aW5mbywgdm9pZCogdWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1ZNSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5jcHAKaW5kZXggOGJlM2M4NTYyMDIwY2M2MjFkMzVkYzQ3Mjc0Mzg0YWZlYjI5ZWQxZi4uZTM5
YWMzMjc5NGIyYWM0NDYyY2E1OTYyNjU0NjdhYjU5MjRjZjc0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgPG11dGV4
PgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGFlYmIxNzE1YWIx
NGY2OWY2YmY0YTJjMWIyYWNjNjdmOWRlMTkzOTguLmMxYzZjMjI3ZDI2Yjc4MTMzMDA0NjU1ZGY4
OTRkNGMxOWUwNTY5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtRXhj
ZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKQEAgLTUwLDQwICs1MSwxMCBA
QCBzdGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU3Rh
dGljTG9jayBjb2RlTG9jYXRpb25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxzdGQ6OnR1cGxlPFZNKiwgdm9pZCosIHZvaWQqPj4+IGNvZGVMb2NhdGlvbnM7IC8vICh2
bSwgc3RhcnQsIGVuZCkKIAotLy8gRklYTUU6IENsZWFuIHVwIG1jb250ZXh0X3QgaGFuZGxpbmcg
Y29kZSBzaW5jZSBpdCBpcyBzY2F0dGVyZWQgaW4gaGVhcC8sIHRvb2xzLyBhbmQgd2FzbS8uCi0v
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTgwCi0jaWYgQ1BV
KFg4Nl82NCkKLQotI2lmIE9TKERBUldJTikKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BS
IGNvbnRleHQtPl9fc3MuX19yaXAKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0LT5f
X3NzLl9fcnNpCi0jZWxpZiBPUyhGUkVFQlNEKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJH
UFIgY29udGV4dC5tY19yaXAKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0Lm1jX3Jz
aQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQ
UiBjb250ZXh0LmdyZWdzW1JFR19SSVBdCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4
dC5ncmVnc1tSRUdfUlNJXQotI2VuZGlmCi0KLSNlbHNlCi0KLSNpZiBPUyhEQVJXSU4pCi0jZGVm
aW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0LT5fX3NzLl9fcGMKLSNkZWZpbmUgRmly
c3RBcmd1bWVudEdQUiBjb250ZXh0LT5fX3NzLl9feFsxXQotI2VsaWYgT1MoRlJFRUJTRCkKLSNk
ZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQubWNfZ3ByZWdzLmdwX2VscgotI2Rl
ZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMV0KLSNlbGlmIGRl
ZmluZWQoX19HTElCQ19fKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5w
YwotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQucmVnc1sxXQotI2VuZGlmCi0KLSNl
bmRpZgotCiBzdGF0aWMgdm9pZCB0cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNp
Z0luZm8sIHZvaWQqIHVjb250ZXh0KQogewogICAgIG1jb250ZXh0X3QmIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDx1Y29udGV4dF90Kj4odWNvbnRleHQpLT51Y19tY29udGV4dDsKLSAgICB2b2lkKiBm
YXVsdGluZ0luc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSW5zdHJ1Y3Rpb25Q
b2ludGVyR1BSKTsKKyAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFjaGluZUNvbnRl
eHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KTsKICAgICBkYXRhTG9nTG5JZih2ZXJib3Nl
LCAic3RhcnRpbmcgaGFuZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdJ
bnN0cnVjdGlvbikpOwogCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkpJVCBtZW1vcnkgc3Rh
cnQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZpeGVkRXhl
Y3V0YWJsZU1lbW9yeVBvb2wpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSkpOwpAQCAtMTIyLDggKzkz
LDggQEAgc3RhdGljIHZvaWQgdHJhcEhhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5mb190KiBzaWdJ
bmZvLCB2b2lkKiB1Y29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGNlcHRpb25T
dHViKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBSYXdQb2ludGVyKGV4Y2VwdGlv
blN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICAgICAgICAgICAgICAgICAg
Rmlyc3RBcmd1bWVudEdQUiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9u
UG9pbnRlckdQUiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGV4Y2VwdGlvblN0dWIuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29u
dGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOworICAgICAgICAgICAg
ICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhj
ZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmlu
ZGV4IDJiZjA3ODk4ZGQwYzI4MDdkN2E1ZDM3ODYwZTNlMGE1NzE3ZjY3ZDIuLmE0YWEwZWZlYzE1
MTY1ZGIyY2YzZjgzMjE4YTIwNTBiMzY1MDY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtOTIxLDcgKzky
MSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKQor
I2lmIChPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkgJiYgRU5BQkxFKEpJ
VCkKICNkZWZpbmUgRU5BQkxFX1NJR05BTF9CQVNFRF9WTV9UUkFQUyAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304151</attachid>
            <date>2017-03-11 02:10:10 -0800</date>
            <delta_ts>2017-03-11 07:59:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170311191009.patch</filename>
            <type>text/plain</type>
            <size>48333</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDIxNDRjMmVhMjc1ODY1OWMwZDdjMTc1MzBlZDllNTQ2ZGM1YjJmYWIuLjQ3NzQ3
MTU2MDc2NjIxOTNlMWM3ZTRjZDU1ODM2NDMwMGI2MjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlh
ZTgzOTMwYTkyNGRhLi41NDYxNGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVF
NDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEg
LyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9Owog
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
ODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC01MDM2LDYgKzUwMzcsNyBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dh
cFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CkBAIC02OTM2LDYgKzY5MzgsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdy
aXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJh
cnJpZXJJbmxpbmVzLmggKi8sCisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hp
bmVDb250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0
ZTE4NWRkZjM2YTZmLi44YTZkNTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKQEAgLTQ4MSw4NyArNDgxLDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpn
ZXRSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lm
IE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNl
bGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX3IxKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYg
Q1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhE
QVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5J
bnRTcCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsK
ICNlbGlmIFVTRShQVEhSRUFEUykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JzcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19T
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVO
QUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5hcm1fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsK
LSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWlu
dHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVk
KF9fR0xJQkNfXykpICYmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNr
QmFzZSA9IDA7CiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBA
QCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigp
IGNvbnN0CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERB
UldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQ
VShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX194WzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklY
MDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIx
MSk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4
Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVn
cy5SYnApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF94WzI5XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7
Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X0VCUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQucmVnc1syOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsK
LSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2lu
dGVyKHJlZ3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAg
cmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBh
bm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwy
MiBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRl
cigpIGNvbnN0CiAKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5z
dHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJ
Tl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklY
MDMKLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
LmVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2Vs
aWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3Ig
RG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNl
bGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuRWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19y
aXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Lm1jX3BjKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SSVBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lm
IE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxp
bnRQQygpIGNvbnN0CiB7CiAgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhE
QVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGlj
X2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50
IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsK
LSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBY
ODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBD
LiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02
NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2
KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0v
LyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUjgpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLkVzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJ
bnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZS
RUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hb
NF0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmFybV9yOCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0
XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5l
Q29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWEx
YmQwZTQ5YjliMzY4NmJhMjhiMzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4
NzY3ZDE3OWI3N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSAr
ODEsOCBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBD
KCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAg
ICAgCi0jaWYgT1MoREFSV0lOKQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkz
ODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgICAgICAgICAgdHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEMpCi0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0gICAgICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAg
ICB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBP
UyhXSU5ET1dTKQorICAgICAgICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5l
Q29udGV4dDo6UGxhdGZvcm1SZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAg
ICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRf
YXR0cl90IGF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwYzBkOTUwYTI5MTUwNWM1ZTU4ZTVkMzUwYTgzMjk0
ZTBiYmQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5o
PgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRf
dCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZy
ZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVk
IGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
I2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQordHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0
eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vs
aWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxp
bmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
CisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzdd
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9f
REFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKwordGVtcGxh
dGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19y
c2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VO
SVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJ
VCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJ
Tl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5fX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcls4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzaSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorI2VuZGlmCisKKyNlbGlm
IE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKKworaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7Cisj
ZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Q
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5QYyk7CisjZWxp
ZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
KTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpOworeworI2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SMSk7CisjZWxpZiBDUFUoTUlQUykK
KyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0
aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSByZWdzLkVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmR4KTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCisjaWYgRU5BQkxFKEpJVCkK
K2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBDUFUoQVJNKQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdo
YXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYp
CisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwg
Ildyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fz
c2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBD
LiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJl
Z3MuUjEwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQor
I2VuZGlmCisKKyNlbmRpZgorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBsYXRm
b3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2Fz
dDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9p
bnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gZnJhbWVQ
b2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisKK2lubGlu
ZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3Mp
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVn
aXN0ZXJzJj4ocmVncykpOworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK2lubGluZSB2b2lkKiBh
cmd1bWVudFBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0
dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVn
cykpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2b2lkKiBsbGludEluc3RydWN0aW9u
UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1cm4gbGxp
bnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3Mp
KTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNE
KSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCisKK2lubGluZSB2b2lkKiYgc3Rh
Y2tQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikK
KyAgICByZXR1cm4gc3RhY2tQb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7CisjZWxpZiBDUFUoWDg2
XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JzcCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JF
R19TUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7CisjZWxp
ZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKyNpZiBD
UFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQuZ3JlZ3NbUkVHX1JTUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fc3ApOworI2Vs
aWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
WzI5XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4
dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIo
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVy
biBmcmFtZVBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkK
KworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQubWNfcmJwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQXSk7Cisj
ZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxv
d2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SQlBdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX2ZwKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5n
cmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisK
KyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFu
b3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCog
ZnJhbWVQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJl
dHVybiBmcmFtZVBvaW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQp
KTsKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFj
aGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmlw
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1BDXSk7CisjZWxpZiBDUFUo
QVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX2Vscik7CisjZWxpZiBDUFUoTUlQUykKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVw
ZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3Jl
Z3NbUkVHX0VJUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUklQXSk7
CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9wYyk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQucGMpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucGMpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBn
ZXQgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxh
dGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0
IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvblBv
aW50ZXIoY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKwordGVt
cGxhdGU8dW5zaWduZWQgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIobWNvbnRleHRfdCYpOwor
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGFyZ3VtZW50
UG9pbnRlcjwxPihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19lZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5t
Y19yc2kpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjFdKTsKKyNlbGlm
IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXSk7CisjZWxpZiBDUFUoTUlQUykK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5tY19yZWdzWzVdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRURYXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SU0ldKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3IxKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5yZWdzWzFdKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzWzVd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQor
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRo
cmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwordGVtcGxhdGU8dW5zaWduZWQgTj4K
K2lubGluZSB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9jYXN0PG1jb250
ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCisjaWYgRU5BQkxFKEpJVCkKK2lubGluZSB2
b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQp
Cit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBPUyhEQVJXSU4pCisgICAg
cmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNl
bGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbNF0p
OworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQor
CisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRl
eHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKKyNlbGlmIENQVShY
ODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFy
bV9yOCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1s0XSk7CisjZWxpZiBDUFUoTUlQ
UykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNo
aW5lQ29udGV4dC5ncmVnc1sxMl0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbHNlCisjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMg
Zm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCitpbmxpbmUg
dm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNv
bnRleHQpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8
bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYKKworI2VuZGlmCisKK30K
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhy
ZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCmlu
ZGV4IGJmNzU0ZmRlYTUzZmU5NWZjMzgyMzc4ZmJkYmQyYTFiMDY5M2RiNzQuLmIwNjFlZTlkMTFj
OTU3MTFmM2RlMjY2ZGViMDhiYzYyYzhiMDI0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1Mp
ICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERB
UldJTikKICNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3QuaD4KICNlbGlmIE9TKFdJTkRPV1MpCkBA
IC02Myw2ICs2NywxMiBAQCBpbmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9y
bVRocmVhZCBwbGF0Zm9ybVRocmVhZCwgaW50IHNpZ25hbE51bWJlcgogICAgIGludCBlcnJObyA9
IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7CiAgICAgcmV0dXJuICFlcnJO
bzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCiB9CisjZWxpZiBVU0UoUFRIUkVBRFMpCitp
bmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9ybVRocmVhZCBwdGhyZWFkSUQs
IGludCBzaWduYWxOdW1iZXIpCit7CisgICAgaW50IGVyck5vID0gcHRocmVhZF9raWxsKHB0aHJl
YWRJRCwgc2lnbmFsTnVtYmVyKTsKKyAgICByZXR1cm4gIWVyck5vOyAvLyBBIDAgZXJyTm8gbWVh
bnMgc3VjY2Vzcy4KK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5kZXggZWUwN2UwNTg2ZTEyNzliNmVmNzMx
OTBjYTkxOTM1MWYzOWFlMjEwZS4uMTZiMDViZTAzOWNiNjg5ZjBmMzFjNmMyNDM0MTYxNjhiY2E3
OGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFuZ2VzLmgiCisjaW5jbHVkZSAiTWFjaGlu
ZUNvbnRleHQuaCIKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIKICNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZNLmgiCkBAIC01Niw3OSArNTcsMzEgQEAgQUxX
QVlTX0lOTElORSBWTSYgVk1UcmFwczo6dm0oKSBjb25zdAogc3RydWN0IHNpZ2FjdGlvbiBvcmln
aW5hbFNpZ3VzcjFBY3Rpb247CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lndHJhcEFjdGlv
bjsKIAotI2lmIENQVShYODZfNjQpCi0KIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQogICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIHRyYXBQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoWDg2KQogICAgICAgICAvLyBPbiBY
ODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMu
IFNvLCBkZWMgYnkgMS4KICAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4odHJhcFBDKSAtIDE7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIGFkanVzdFBDVG9Qb2lu
dFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCiAgICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5f
X3JpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFj
a1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbGlmIENQVShY
ODYpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0
X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRy
YXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VpcCkpCi0gICAg
ICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fZXNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bWNvbnRleHQtPl9fc3MuX19lYnApKQotICAgIHsKLSAgICAgICAgLy8gT24gWDg2LCBTSUdUUkFQ
IHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEu
Ci0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAx
OwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVj
dGlvbigpCi0gICAgewotICAgICAgICBtY29udGV4dC0+X19zcy5fX2VpcCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0KLSAgICAKLSAgICBtY29udGV4dF90JiBt
Y29udGV4dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAg
IHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0KLSNlbGlmIENQVShBUk02NCkgfHwgQ1BVKEFSTV9U
SFVNQjIpIHx8IENQVShBUk0pCi0gICAgCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2ln
bmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29u
dGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQt
Pl9fc3MuX19wYykpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KG1jb250ZXh0LT5fX3NzLl9fc3ApKQotI2lmIENQVShBUk02NCkKLSAgICAgICAgLCBmcmFt
ZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19mcCkpCi0j
ZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzddKSkKLSNlbGlmIENQVShBUk0pCi0gICAg
ICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fclsxMV0pKQorI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCisgICAgICAgIE1hY2hpbmVD
b250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpID0gdHJhcFBDOwogI2VuZGlmCi0g
ICAgeyB9Ci0gICAgICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3Ry
dWN0aW9uKCkgeyB9CisgICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CiAgICAgdm9p
ZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBmcmFtZVBvaW50
ZXI7CiB9OwotICAgIAotI2VuZGlmCiAKIGlubGluZSBzdGF0aWMgYm9vbCB2bUlzSW5hY3RpdmUo
Vk0mIHZtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcu
Y3BwCmluZGV4IGY5MTZjMjAzYjFlMTIzMDA3ZjM3YzhlZmYwY2IxYzEyYWVjYTBiMjEuLjJkNTk1
M2VhMzY1OTRmNjRmZGQ3YmZiNDQ2MDIzMGUxMDljODhiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJDb2RlUHJvZmlsaW5nLmgiCiAKICNpbmNsdWRlICJDb2RlUHJvZmlsZS5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3IuaD4KIAog
I2lmIEhBVkUoU0lHTkFMX0gpCkBAIC02NiwxOSArNjcsMTMgQEAgc3RhdGljIHZvaWQgc2V0UHJv
ZmlsZVRpbWVyKHVuc2lnbmVkIHVzZWMpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAj
ZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkK
LXN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQot
ewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXAp
LT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oY29udGV4dC0+X19zcy5fX3JpcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LT5fX3NzLl9fcmJwKSk7Ci19Ci0jZWxp
ZiBPUyhMSU5VWCkgJiYgQ1BVKFg4NikKKyNpZiAoT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RL
KSAmJiBDUFUoWDg2XzY0KSkgfHwgKE9TKExJTlVYKSAmJiBDUFUoWDg2KSkKIHN0YXRpYyB2b2lk
IHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKQogewogICAgIG1jb250
ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4
dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUlQXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LmdyZWdzW1JFR19FQlBdKSk7CisgICAgQ29kZVByb2Zp
bGluZzo6c2FtcGxlKAorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnRleHQpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAppbmRleCAxYWMx
YWY0ODAxN2VjZjUyMDQxNjA5MTkyNjNhYjM4NDUwNjIwMDZmLi4yNjVjNjYxNTVkMWFkYjhkYTk4
YmQ3ODk0MjAyOTI5ODNkNjEyNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJNYWNo
aW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlZNSW5zcGVjdG9yLmgiCiAjaW5jbHVkZSA8bXV0ZXg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtNzgsMTcgKzc5LDE3IEBAIGNsYXNz
IFNpZ2lsbENyYXNoQW5hbHl6ZXIgewogICAgIAogI2VuZGlmIC8vIFVTRShPU19MT0cpCiAKLSNp
ZiBDUFUoWDg2XzY0KQogc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIFNpZ25hbENvbnRleHQo
bWNvbnRleHRfdCYgbWNvbnRleHQpCiAgICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAg
ICAgICwgbWFjaGluZVBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9f
cmlwKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNv
bnRleHQtPl9fc3MuX19yc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9j
YXN0PENhbGxGcmFtZSo+KG1jb250ZXh0LT5fX3NzLl9fcmJwKSkKKyAgICAgICAgLCBtYWNoaW5l
UEMoTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCisgICAgICAg
ICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQor
ICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250
ZXh0KSkKICAgICB7IH0KIAogICAgIHZvaWQgZHVtcCgpCiAgICAgeworI2lmIENQVShYODZfNjQp
CiAjZGVmaW5lIEZPUl9FQUNIX1JFR0lTVEVSKHYpIFwKICAgICAgICAgdihyYXgpIFwKICAgICAg
ICAgdihyYngpIFwKQEAgLTExNiwyNiArMTE3LDggQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewog
ICAgICAgICBsb2coIlJlZ2lzdGVyICIgI19fcmVnICI6ICVwIiwgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4obWNvbnRleHQtPl9fc3MuX18jI19fcmVnKSk7CiAgICAgICAgIEZPUl9FQUNIX1JFR0lT
VEVSKERVTVBfUkVHSVNURVIpCiAjdW5kZWYgRk9SX0VBQ0hfUkVHSVNURVIKLSAgICB9Ci0KLSAg
ICBtY29udGV4dF90JiBtY29udGV4dDsKLSAgICB2b2lkKiBtYWNoaW5lUEM7Ci0gICAgdm9pZCog
c3RhY2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07CiAKICNlbGlmIENQVShB
Uk02NCkKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRl
eHRfdCYgbWNvbnRleHQpCi0gICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwg
bWFjaGluZVBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcGMpKQot
ICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3NwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxDYWxs
RnJhbWUqPihtY29udGV4dC0+X19zcy5fX2ZwKSkKLSAgICB7IH0KLQotICAgIHZvaWQgZHVtcCgp
Ci0gICAgewogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI4OyBpICs9
IDQpIHsKICAgICAgICAgICAgIGxvZygieCVkOiAlMDE2bGx4IHglZDogJTAxNmxseCB4JWQ6ICUw
MTZsbHggeCVkOiAlMDE2bGx4IiwKQEAgLTE0OSw2ICsxMzIsNyBAQCBzdHJ1Y3QgU2lnbmFsQ29u
dGV4dCB7CiAgICAgICAgICAgICBpLCBtY29udGV4dC0+X19zcy5fX3hbaV0sIG1jb250ZXh0LT5f
X3NzLl9fZnAsIG1jb250ZXh0LT5fX3NzLl9fbHIpOwogICAgICAgICBsb2coInNwOiAlMDE2bGx4
IHBjOiAlMDE2bGx4IGNwc3I6ICUwOHgiLAogICAgICAgICAgICAgbWNvbnRleHQtPl9fc3MuX19z
cCwgbWNvbnRleHQtPl9fc3MuX19wYywgbWNvbnRleHQtPl9fc3MuX19jcHNyKTsKKyNlbmRpZgog
ICAgIH0KIAogICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OwpAQCAtMTU3LDIwICsxNDEsNiBAQCBz
dHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKIAotI2Vs
c2UKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRf
dCYpIHsgfQotICAgIAotICAgIHZvaWQgZHVtcCgpIHsgfQotICAgIAotICAgIHZvaWQqIG1hY2hp
bmVQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwot
fTsKLSAgICAKLSNlbmRpZgotCiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdpbmFsU2lnSWxsQWN0aW9u
OwogCiBzdGF0aWMgdm9pZCBoYW5kbGVDcmFzaChpbnQgc2lnbmFsTnVtYmVyLCBzaWdpbmZvX3Qq
IGluZm8sIHZvaWQqIHVhcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0
b3IuY3BwCmluZGV4IDhiZTNjODU2MjAyMGNjNjIxZDM1ZGM0NzI3NDM4NGFmZWIyOWVkMWYuLmUz
OWFjMzI3OTRiMmFjNDQ2MmNhNTk2MjY1NDY3YWI1OTI0Y2Y3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1NldC5oIgogI2luY2x1ZGUgIkhl
YXBJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlIDxtdXRl
eD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAppbmRleCBhZWJiMTcxNWFi
MTRmNjlmNmJmNGEyYzFiMmFjYzY3ZjlkZTE5Mzk4Li5jMWM2YzIyN2QyNmI3ODEzMzAwNDY1NWRm
ODk0ZDRjMTllMDU2OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlZNLmgiCiAjaW5jbHVkZSAiV2FzbUV4
Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCkBAIC01MCw0MCArNTEsMTAg
QEAgc3RhdGljIGJvb2wgZmFzdEhhbmRsZXJJbnN0YWxsZWQgeyBmYWxzZSB9Owogc3RhdGljIFN0
YXRpY0xvY2sgY29kZUxvY2F0aW9uc0xvY2s7CiBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhh
c2hTZXQ8c3RkOjp0dXBsZTxWTSosIHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAo
dm0sIHN0YXJ0LCBlbmQpCiAKLS8vIEZJWE1FOiBDbGVhbiB1cCBtY29udGV4dF90IGhhbmRsaW5n
IGNvZGUgc2luY2UgaXQgaXMgc2NhdHRlcmVkIGluIGhlYXAvLCB0b29scy8gYW5kIHdhc20vLgot
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTE4MAotI2lmIENQ
VShYODZfNjQpCi0KLSNpZiBPUyhEQVJXSU4pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQ
UiBjb250ZXh0LT5fX3NzLl9fcmlwCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC0+
X19zcy5fX3JzaQotI2VsaWYgT1MoRlJFRUJTRCkKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVy
R1BSIGNvbnRleHQubWNfcmlwCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC5tY19y
c2kKLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJH
UFIgY29udGV4dC5ncmVnc1tSRUdfUklQXQotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRl
eHQuZ3JlZ3NbUkVHX1JTSV0KLSNlbmRpZgotCi0jZWxzZQotCi0jaWYgT1MoREFSV0lOKQotI2Rl
ZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC0+X19zcy5fX3BjCi0jZGVmaW5lIEZp
cnN0QXJndW1lbnRHUFIgY29udGV4dC0+X19zcy5fX3hbMV0KLSNlbGlmIE9TKEZSRUVCU0QpCi0j
ZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0Lm1jX2dwcmVncy5ncF9lbHIKLSNk
ZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0Lm1jX2dwcmVncy5ncF94WzFdCi0jZWxpZiBk
ZWZpbmVkKF9fR0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQu
cGMKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0LnJlZ3NbMV0KLSNlbmRpZgotCi0j
ZW5kaWYKLQogc3RhdGljIHZvaWQgdHJhcEhhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5mb190KiBz
aWdJbmZvLCB2b2lkKiB1Y29udGV4dCkKIHsKICAgICBtY29udGV4dF90JiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVjb250ZXh0KS0+dWNfbWNvbnRleHQ7Ci0gICAgdm9pZCog
ZmF1bHRpbmdJbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEluc3RydWN0aW9u
UG9pbnRlckdQUik7CisgICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IE1hY2hpbmVDb250
ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7CiAgICAgZGF0YUxvZ0xuSWYodmVyYm9z
ZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5n
SW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJKSVQgbWVtb3J5IHN0
YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4
ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkpKTsKQEAgLTEyMiw4ICs5
Myw4IEBAIHN0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2ln
SW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgIGlmICghZXhjZXB0aW9u
U3R1YikKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgc3R1YjogIiwgUmF3UG9pbnRlcihleGNlcHRp
b25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKSk7Ci0gICAgICAgICAgICAgICAgICAg
IEZpcnN0QXJndW1lbnRHUFIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oRXhjZXB0aW9uVHlwZTo6
T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwotICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlv
blBvaW50ZXJHUFIgPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihleGNlcHRpb25TdHViLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNv
bnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0KSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNjZXNzKTsKKyAgICAgICAgICAg
ICAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KSA9IGV4
Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApp
bmRleCAyYmYwNzg5OGRkMGMyODA3ZDdhNWQzNzg2MGUzZTBhNTcxN2Y2N2QyLi5hNGFhMGVmZWMx
NTE2NWRiMmNmM2Y4MzIxOGEyMDUwYjM2NTA2OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTkyMSw3ICs5
MjEsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgRU5BQkxFKEpJVCkK
KyNpZiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwgT1MoRlJFRUJTRCkpICYmIEVOQUJMRShK
SVQpCiAjZGVmaW5lIEVOQUJMRV9TSUdOQUxfQkFTRURfVk1fVFJBUFMgMQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304162</attachid>
            <date>2017-03-11 07:59:11 -0800</date>
            <delta_ts>2017-03-11 09:01:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170312005909.patch</filename>
            <type>text/plain</type>
            <size>48332</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IDIxNDRjMmVhMjc1ODY1OWMwZDdjMTc1MzBlZDllNTQ2ZGM1YjJmYWIuLjQ3NzQ3
MTU2MDc2NjIxOTNlMWM3ZTRjZDU1ODM2NDMwMGI2MjYyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVGhlIEpJVHMgc2hvdWxkIGJlIGFibGUgdG8gZW1pdCBmYXN0IFRMUyBsb2FkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlh
ZTgzOTMwYTkyNGRhLi41NDYxNGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVF
NDNGQ0UxRTY2NDE3MTAwNzdENkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEg
LyogUGxhdGZvcm1UaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRUYwNDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBU
ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9Owog
CQlGRUZENkZDNjFENUU3OTkyMDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4
RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVD
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
ODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC01MDM2LDYgKzUwMzcsNyBAQAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFy
ZUFuZFN3YXBUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENv
bXBhcmVBbmRTd2FwVGVzdC5jcHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDb21wYXJlQW5kU3dhcFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dh
cFRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAw
OEYyRjBCIC8qIEpTU3RyaW5nSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1N0cmluZ0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4
MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CkBAIC02OTM2LDYgKzY5MzgsNyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdy
aXRlQmFycmllci5oICovLAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJh
cnJpZXJJbmxpbmVzLmggKi8sCisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hp
bmVDb250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtOTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUY2MzQzNDU3NzI3NEZBRkI5MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBp
biBIZWFkZXJzICovLAorCQkJCTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0
ZTE4NWRkZjM2YTZmLi44YTZkNTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKQEAgLTQ4MSw4NyArNDgxLDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpn
ZXRSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lm
IE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNl
bGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX3IxKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24g
QXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYg
Q1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhE
QVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5J
bnRTcCk7Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsK
ICNlbGlmIFVTRShQVEhSRUFEUykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JzcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19T
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVO
QUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5hcm1fc3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsK
LSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWlu
dHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVk
KF9fR0xJQkNfXykpICYmIEVOQUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNr
QmFzZSA9IDA7CiAgICAgc2l6ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBA
QCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigp
IGNvbnN0CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERB
UldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQ
VShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7
Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX194WzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklY
MDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIx
MSk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1p
cHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4
Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVn
cy5SYnApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxp
ZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF94WzI5XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7
Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X0VCUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQucmVnc1syOV0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsK
LSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFS
V0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2lu
dGVyKHJlZ3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAg
cmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBh
bm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwy
MiBAQCB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRl
cigpIGNvbnN0CiAKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5z
dHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJ
Tl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklY
MDMKLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
LmVpcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLnJpcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2Vs
aWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3Ig
RG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNl
bGlmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuRWlwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4
NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19laXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19y
aXApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Lm1jX3BjKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNo
aW5lQ29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19SSVBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNl
bGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4
dC5wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lm
IE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19H
TElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MubWFjaGluZUNvbnRleHQpOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUg
aW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQog
I2VuZGlmCiB9CisKIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxp
bnRQQygpIGNvbnN0CiB7CiAgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhE
QVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGlj
X2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50
IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsK
LSNlbGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBY
ODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19h
c3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBD
LiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0j
ZWxpZiBDUFUoQVJNNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02
NFJlZ2lzdGVyczo6eDQsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2
KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ks
ICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
cmVncy5lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpM
TEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0v
LyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUjgpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLkVzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJ
bnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwot
I2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZS
RUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2
XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVn
c1tfUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hb
NF0pOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmFybV9yOCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0
XSk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJ
TkRPV1MpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRl
cihyZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJl
dHVybiBNYWNoaW5lQ29udGV4dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5l
Q29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZv
ciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWEx
YmQwZTQ5YjliMzY4NmJhMjhiMzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4
NzY3ZDE3OWI3N2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGlu
ZVN0YWNrTWFya2VyLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSAr
ODEsOCBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBD
KCkgY29uc3Q7CiAjZW5kaWYgLy8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAg
ICAgCi0jaWYgT1MoREFSV0lOKQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkz
ODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgICAgICAgICAgdHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEMpCi0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVf
dCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVk
ZWYgcHBjX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
KQotICAgICAgICAgICAgdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3Rl
cnM7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0gICAgICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAg
ICB0eXBlZGVmIENPTlRFWFQgUGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBP
UyhXSU5ET1dTKQorICAgICAgICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5l
Q29udGV4dDo6UGxhdGZvcm1SZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAg
ICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRf
YXR0cl90IGF0dHJpYnV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hY2hpbmVDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNo
aW5lQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMTlmOGJiODkzZjlmYWNjMmY5MGYzMGFlMDhhMjRl
YTk5MGI3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYWNoaW5lQ29udGV4dC5oCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENS
YW5nZXMuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5o
PgorLy8gVXNpbmcgc2lnbmFsLmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRf
dCBhdmFpbGFibGUgb24gRnJlZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZy
ZWVCU0QgMTEuMC1DVVJSRU5ULCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVk
IGFmdGVyIEZyZWVCU0QgMTAueCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9y
Zy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNs
dWRlIDx1Y29udGV4dC5oPgorI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgTWFjaGluZUNvbnRleHQgeworI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
I2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQordHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFg4Nl82NCkKK3R5cGVkZWYgeDg2X3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQordHlwZWRlZiBw
cGNfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCit0
eXBlZGVmIHBwY190aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KEFSTSkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vs
aWYgQ1BVKEFSTTY0KQordHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCitpbmxp
bmUgdm9pZComIHN0YWNrUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fZXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yMSk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3NwKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAz
CisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KHJlZ3MucnNwKTsKKyNlbGlmIENQVShQUEMpIHx8IENQVShQUEM2NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucjEpOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30K
KworaW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzdd
KTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVy
KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXAp
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yaXApOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9f
REFSV0lOX1VOSVgwMworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPihyZWdzLmVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5yaXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKK30KKwordGVtcGxh
dGU8c2l6ZV90IE4+Cit2b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7
CisKK3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3Jt
UmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19y
c2kpOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9feFsxXSk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VO
SVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLnJzaSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCisjaWYgRU5BQkxFKEpJ
VCkKK2lubGluZSB2b2lkKiYgbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisgICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KKyNpZiBfX0RBUldJ
Tl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VzaSk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjpyOCwgIldy
b25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVn
cy5fX3I4KTsKKyNlbGlmIENQVShBUk0pCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcls4XSk7CisjZWxpZiBDUFUoQVJNNjQpCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJl
Z3MuX194WzRdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgor
CisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYgQ1BVKFg4NikKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzaSk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yOCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorI2VuZGlmCisKKyNlbGlm
IE9TKFdJTkRPV1MpCisKK3R5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKKworaW5s
aW5lIHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYg
Q1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSByZWdzLlNwKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7Cisj
ZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERv
bnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Q
b2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5QYyk7CisjZWxp
ZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmlw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZTxzaXplX3QgTj4KK3ZvaWQqJiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
KTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlIxKTsKKyNlbGlmIENQVShNSVBTKQor
I2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRo
aXM/CisjZWxpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4o
KHVpbnRwdHJfdCYpIHJlZ3MuRWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SZHgpOworI2Vsc2UKKyNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSklUKQor
aW5saW5lIHZvaWQqJiBsbGludEluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYg
cmVncykKK3sKKyAgICAvLyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIENQVShBUk0pCisg
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3Jv
bmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgcmVncy5SOCk7CisjZWxpZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hh
dCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikK
KyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAi
V3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgcmVncy5Fc2kpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBzdGF0aWNfYXNz
ZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6cjEwLCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVn
cy5SMTApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9Cisj
ZW5kaWYKKworI2VuZGlmCisKK2lubGluZSB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0
PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworfQorCitpbmxpbmUgdm9pZCogZnJhbWVQb2lu
dGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBmcmFtZVBv
aW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworaW5saW5l
IHZvaWQqIGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykK
K3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdp
c3RlcnMmPihyZWdzKSk7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBOPgoraW5saW5lIHZvaWQqIGFy
Z3VtZW50UG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICByZXR1
cm4gYXJndW1lbnRQb2ludGVyPE4+KGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdz
KSk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZvaWQqIGxsaW50SW5zdHJ1Y3Rpb25Q
b2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBsbGlu
dEluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykp
OworfQorI2VuZGlmCisKKyNlbmRpZgorCisjaWYgT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0Qp
IHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQ
VShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkKKworaW5saW5lIHZvaWQqJiBzdGFj
a1BvaW50ZXIobWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisjaWYgT1MoREFSV0lOKQor
ICAgIHJldHVybiBzdGFja1BvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2VsaWYgT1Mo
RlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZXNwKTsKKyNlbGlmIENQVShYODZf
NjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfcnNwKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVH
X1NQXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3NwKTsKKyNlbGlm
IENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBB
cmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworI2lmIENQ
VShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
bWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5ncmVnc1tSRUdfUlNQXSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9zcCk7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0
cl90JikgbWFjaGluZUNvbnRleHQuc3ApOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3Nb
MjldKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkKiBzdGFja1BvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGlu
ZUNvbnRleHQpCit7CisgICAgcmV0dXJuIHN0YWNrUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0
X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCitpbmxpbmUgdm9pZComIGZyYW1lUG9pbnRlciht
Y29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJu
IGZyYW1lUG9pbnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQor
CisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19lYnApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5tY19yYnApOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfRlBdKTsKKyNl
bGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFsyOV0pOworI2VsaWYgQ1BVKE1J
UFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfcmVnc1szMF0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93
aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUo
WDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LmdyZWdzW1JFR19FQlBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
Z3JlZ3NbUkVHX1JCUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fZnApOworI2VsaWYg
Q1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0LnJlZ3NbMjldKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lmdy
ZWdzWzMwXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5v
dGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBm
cmFtZVBvaW50ZXIoY29uc3QgbWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisgICAgcmV0
dXJuIGZyYW1lUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkp
OworfQorCitpbmxpbmUgdm9pZComIGluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNo
aW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9p
bnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5tY19laXApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yaXAp
OworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0
Lm1jX3BjKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisj
ZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBl
bmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVn
c1tSRUdfRUlQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SSVBdKTsK
KyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3BjKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5wYyk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5wYyk7CisjZWxzZQorI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdl
dCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0
Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2b2lkKiBpbnN0cnVjdGlvblBvaW50ZXIoY29uc3Qg
bWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uUG9p
bnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5lQ29udGV4dCkpOworfQorCit0ZW1w
bGF0ZTx1bnNpZ25lZCBOPgordm9pZComIGFyZ3VtZW50UG9pbnRlcihtY29udGV4dF90Jik7CisK
K3RlbXBsYXRlPD4KK2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KG1jb250ZXh0X3Qm
IG1hY2hpbmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gYXJndW1lbnRQ
b2ludGVyPDE+KG1hY2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX2VkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1j
X3JzaSk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
Jj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19SMV0pOworI2VsaWYg
Q1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF94WzFdKTsKKyNlbGlmIENQVShNSVBTKQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0Lm1jX3JlZ3NbNV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQor
I2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNl
cXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0LmdyZWdzW1JFR19FRFhdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3Nb
UkVHX1JTSV0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fcjEpOworI2VsaWYgQ1BVKEFS
TTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LnJlZ3NbMV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbNV0p
OworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlCisj
ZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhy
ZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyNlbmRpZgorfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBOPgor
aW5saW5lIHZvaWQqIGFyZ3VtZW50UG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29u
dGV4dCkKK3sKKyAgICByZXR1cm4gYXJndW1lbnRQb2ludGVyPE4+KGNvbnN0X2Nhc3Q8bWNvbnRl
eHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZv
aWQqJiBsbGludEluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkK
K3sKKyAgICAvLyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIE9TKERBUldJTikKKyAgICBy
ZXR1cm4gbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOworI2Vs
aWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZXNpKTsKKyNlbGlmIENQ
VShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgbWFjaGluZUNvbnRleHQubWNfcjgpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdz
W19SRUdfUjhdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0XSk7
CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzEyXSk7CisjZWxzZQorI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisK
Ky8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4
dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigo
dWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTSV0pOworI2VsaWYgQ1BVKFg4
Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUjhdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJt
X3I4KTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzRdKTsKKyNlbGlmIENQVShNSVBT
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hp
bmVDb250ZXh0LmdyZWdzWzEyXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
CisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgTExJbnRQQyBm
b3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGluZSB2
b2lkKiBsbGludEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29u
dGV4dCkKK3sKKyAgICByZXR1cm4gbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxt
Y29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKyNlbmRpZgorCisjZW5kaWYKKworfQor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJl
YWQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgKaW5k
ZXggYmY3NTRmZGVhNTNmZTk1ZmMzODIzNzhmYmRiZDJhMWIwNjkzZGI3NC4uYjA2MWVlOWQxMWM5
NTcxMWYzZGUyNjZkZWIwOGJjNjJjOGIwMjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUg
PHB0aHJlYWQuaD4KICNlbmRpZgogCisjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykg
JiYgIU9TKERBUldJTikKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgorCiAjaWYgT1MoREFS
V0lOKQogI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgogI2VsaWYgT1MoV0lORE9XUykKQEAg
LTYzLDYgKzY3LDEyIEBAIGlubGluZSBib29sIHBsYXRmb3JtVGhyZWFkU2lnbmFsKFBsYXRmb3Jt
VGhyZWFkIHBsYXRmb3JtVGhyZWFkLCBpbnQgc2lnbmFsTnVtYmVyCiAgICAgaW50IGVyck5vID0g
cHRocmVhZF9raWxsKHB0aHJlYWRJRCwgc2lnbmFsTnVtYmVyKTsKICAgICByZXR1cm4gIWVyck5v
OyAvLyBBIDAgZXJyTm8gbWVhbnMgc3VjY2Vzcy4KIH0KKyNlbGlmIFVTRShQVEhSRUFEUykKK2lu
bGluZSBib29sIHBsYXRmb3JtVGhyZWFkU2lnbmFsKFBsYXRmb3JtVGhyZWFkIHB0aHJlYWRJRCwg
aW50IHNpZ25hbE51bWJlcikKK3sKKyAgICBpbnQgZXJyTm8gPSBwdGhyZWFkX2tpbGwocHRocmVh
ZElELCBzaWduYWxOdW1iZXIpOworICAgIHJldHVybiAhZXJyTm87IC8vIEEgMCBlcnJObyBtZWFu
cyBzdWNjZXNzLgorfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAppbmRleCBlZTA3ZTA1ODZlMTI3OWI2ZWY3MzE5
MGNhOTE5MzUxZjM5YWUyMTBlLi4xNmIwNWJlMDM5Y2I2ODlmMGYzMWM2YzI0MzQxNjE2OGJjYTc4
YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJIZWFw
SW5saW5lcy5oIgogI2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKKyNpbmNsdWRlICJNYWNoaW5l
Q29udGV4dC5oIgogI2luY2x1ZGUgIk1hY2hpbmVTdGFja01hcmtlci5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiVk0uaCIKQEAgLTU2LDc5ICs1NywzMSBAQCBBTFdB
WVNfSU5MSU5FIFZNJiBWTVRyYXBzOjp2bSgpIGNvbnN0CiBzdHJ1Y3Qgc2lnYWN0aW9uIG9yaWdp
bmFsU2lndXNyMUFjdGlvbjsKIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWd0cmFwQWN0aW9u
OwogCi0jaWYgQ1BVKFg4Nl82NCkKLQogc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIFNpZ25h
bENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCiAgICAgICAgIDogbWNvbnRleHQobWNvbnRl
eHQpCi0gICAgICAgICwgdHJhcFBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fcmlwKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4obWNvbnRleHQtPl9fc3MuX19yc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVy
cHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JicCkpCisgICAgICAgICwgdHJhcFBD
KE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAs
IHN0YWNrUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKG1jb250ZXh0KSkKKyAg
ICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihtY29udGV4
dCkpCiAgICAgeworI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCiAgICAgICAgIC8vIE9uIFg4
Nl82NCwgU0lHVFJBUCByZXBvcnRzIHRoZSBhZGRyZXNzIGFmdGVyIHRoZSB0cmFwcGluZyBQQy4g
U28sIGRlYyBieSAxLgogICAgICAgICB0cmFwUEMgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
Pih0cmFwUEMpIC0gMTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgYWRqdXN0UENUb1BvaW50
VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKICAgICB7Ci0gICAgICAgIG1jb250ZXh0LT5fX3NzLl9f
cmlwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRyYXBQQyk7Ci0gICAgfQotCi0gICAg
bWNvbnRleHRfdCYgbWNvbnRleHQ7Ci0gICAgdm9pZCogdHJhcFBDOwotICAgIHZvaWQqIHN0YWNr
UG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7Ci19OwotICAgIAotI2VsaWYgQ1BVKFg4
NikKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRf
dCYgbWNvbnRleHQpCi0gICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgdHJh
cFBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZWlwKSkKLSAgICAg
ICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X19lc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPiht
Y29udGV4dC0+X19zcy5fX2VicCkpCi0gICAgewotICAgICAgICAvLyBPbiBYODYsIFNJR1RSQVAg
cmVwb3J0cyB0aGUgYWRkcmVzcyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4K
LSAgICAgICAgdHJhcFBDID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIG1jb250ZXh0LT5fX3NzLl9fZWlwID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRyYXBQQyk7Ci0gICAgfQotICAgIAotICAgIG1jb250ZXh0X3QmIG1j
b250ZXh0OwotICAgIHZvaWQqIHRyYXBQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0gICAg
dm9pZCogZnJhbWVQb2ludGVyOwotfTsKLQotI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoQVJNX1RI
VU1CMikgfHwgQ1BVKEFSTSkKLSAgICAKLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBTaWdu
YWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1jb250
ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+
X19zcy5fX3BjKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4obWNvbnRleHQtPl9fc3MuX19zcCkpCi0jaWYgQ1BVKEFSTTY0KQotICAgICAgICAsIGZyYW1l
UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2ZwKSkKLSNl
bGlmIENQVShBUk1fVEhVTUIyKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9j
YXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JbN10pKQotI2VsaWYgQ1BVKEFSTSkKLSAgICAg
ICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X19yWzExXSkpCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKKyAgICAgICAgTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkgPSB0cmFwUEM7CiAjZW5kaWYKLSAg
ICB7IH0KLSAgICAgICAgCi0gICAgdm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1
Y3Rpb24oKSB7IH0KKyAgICB9CiAKICAgICBtY29udGV4dF90JiBtY29udGV4dDsKICAgICB2b2lk
KiB0cmFwUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZvaWQqIGZyYW1lUG9pbnRl
cjsKIH07Ci0gICAgCi0jZW5kaWYKIAogaW5saW5lIHN0YXRpYyBib29sIHZtSXNJbmFjdGl2ZShW
TSYgdm0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVBy
b2ZpbGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5j
cHAKaW5kZXggZjkxNmMyMDNiMWUxMjMwMDdmMzdjOGVmZjBjYjFjMTJhZWNhMGIyMS4uMmQ1OTUz
ZWEzNjU5NGY2NGZkZDdiZmI0NDYwMjMwZTEwOWM4OGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkNvZGVQcm9maWxpbmcuaCIKIAogI2luY2x1ZGUgIkNvZGVQcm9maWxlLmgiCisjaW5jbHVk
ZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWV0YUFsbG9jYXRvci5oPgogCiAj
aWYgSEFWRShTSUdOQUxfSCkKQEAgLTY2LDE5ICs2NywxMyBAQCBzdGF0aWMgdm9pZCBzZXRQcm9m
aWxlVGltZXIodW5zaWduZWQgdXNlYykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNl
bmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKSAmJiBDUFUoWDg2XzY0KQot
c3RhdGljIHZvaWQgcHJvZmlsaW5nVGltZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1YXApCi17
Ci0gICAgbWNvbnRleHRfdCBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkt
PnVjX21jb250ZXh0OwotICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZShyZWludGVycHJldF9jYXN0
PHZvaWQqPihjb250ZXh0LT5fX3NzLl9fcmlwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KGNvbnRleHQtPl9fc3MuX19yYnApKTsKLX0KLSNlbGlm
IE9TKExJTlVYKSAmJiBDUFUoWDg2KQorI2lmIChPUyhEQVJXSU4pICYmICFQTEFURk9STShHVEsp
ICYmIENQVShYODZfNjQpKSB8fCAoT1MoTElOVVgpICYmIENQVShYODYpKQogc3RhdGljIHZvaWQg
cHJvZmlsaW5nVGltZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKiB1YXApCiB7CiAgICAgbWNvbnRl
eHRfdCBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0
OwotICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZShyZWludGVycHJldF9jYXN0PHZvaWQqPihjb250
ZXh0LmdyZWdzW1JFR19FSVBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KGNvbnRleHQuZ3JlZ3NbUkVHX0VCUF0pKTsKKyAgICBDb2RlUHJvZmls
aW5nOjpzYW1wbGUoCisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIo
Y29udGV4dCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihNYWNoaW5lQ29udGV4
dDo6ZnJhbWVQb2ludGVyKGNvbnRleHQpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDFhYzFh
ZjQ4MDE3ZWNmNTIwNDE2MDkxOTI2M2FiMzg0NTA2MjAwNmYuLjI2NWM2NjE1NWQxYWRiOGRhOThi
ZDc4OTQyMDI5Mjk4M2Q2MTI3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIk1hY2hp
bmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlIDxtdXRleD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC03OCwxNyArNzksMTcgQEAgY2xhc3Mg
U2lnaWxsQ3Jhc2hBbmFseXplciB7CiAgICAgCiAjZW5kaWYgLy8gVVNFKE9TX0xPRykKIAotI2lm
IENQVShYODZfNjQpCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dCht
Y29udGV4dF90JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAg
ICAgLCBtYWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19y
aXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9fc3MuX19yYnApKQorICAgICAgICAsIG1hY2hpbmVQ
QyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAg
LCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCisg
ICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRl
eHQpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKICAgICB7CisjaWYgQ1BVKFg4Nl82NCkK
ICNkZWZpbmUgRk9SX0VBQ0hfUkVHSVNURVIodikgXAogICAgICAgICB2KHJheCkgXAogICAgICAg
ICB2KHJieCkgXApAQCAtMTE2LDI2ICsxMTcsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAg
ICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihtY29udGV4dC0+X19zcy5fXyMjX19yZWcpKTsKICAgICAgICAgRk9SX0VBQ0hfUkVHSVNU
RVIoRFVNUF9SRUdJU1RFUikKICN1bmRlZiBGT1JfRUFDSF9SRUdJU1RFUgotICAgIH0KLQotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBz
dGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKIAogI2VsaWYgQ1BVKEFS
TTY0KQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4
dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCBt
YWNoaW5lUEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19wYykpCi0g
ICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5f
X3NzLl9fc3ApKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxG
cmFtZSo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotICAgIHsgfQotCi0gICAgdm9pZCBkdW1wKCkK
LSAgICB7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjg7IGkgKz0g
NCkgewogICAgICAgICAgICAgbG9nKCJ4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAx
NmxseCB4JWQ6ICUwMTZsbHgiLApAQCAtMTQ5LDYgKzEzMiw3IEBAIHN0cnVjdCBTaWduYWxDb250
ZXh0IHsKICAgICAgICAgICAgIGksIG1jb250ZXh0LT5fX3NzLl9feFtpXSwgbWNvbnRleHQtPl9f
c3MuX19mcCwgbWNvbnRleHQtPl9fc3MuX19scik7CiAgICAgICAgIGxvZygic3A6ICUwMTZsbHgg
cGM6ICUwMTZsbHggY3BzcjogJTA4eCIsCiAgICAgICAgICAgICBtY29udGV4dC0+X19zcy5fX3Nw
LCBtY29udGV4dC0+X19zcy5fX3BjLCBtY29udGV4dC0+X19zcy5fX2Nwc3IpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CkBAIC0xNTcsMjAgKzE0MSw2IEBAIHN0
cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7CiB9OwogCi0jZWxz
ZQotCi1zdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90
JikgeyB9Ci0gICAgCi0gICAgdm9pZCBkdW1wKCkgeyB9Ci0gICAgCi0gICAgdm9pZCogbWFjaGlu
ZVBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7Ci19
OwotICAgIAotI2VuZGlmCi0KIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWdJbGxBY3Rpb247
CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUNyYXNoKGludCBzaWduYWxOdW1iZXIsIHNpZ2luZm9fdCog
aW5mbywgdm9pZCogdWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L1ZNSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5jcHAKaW5kZXggOGJlM2M4NTYyMDIwY2M2MjFkMzVkYzQ3Mjc0Mzg0YWZlYjI5ZWQxZi4uZTM5
YWMzMjc5NGIyYWM0NDYyY2E1OTYyNjU0NjdhYjU5MjRjZjc0MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiSGVh
cElubGluZXMuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgPG11dGV4
PgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IGFlYmIxNzE1YWIx
NGY2OWY2YmY0YTJjMWIyYWNjNjdmOWRlMTkzOTguLmMxYzZjMjI3ZDI2Yjc4MTMzMDA0NjU1ZGY4
OTRkNGMxOWUwNTY5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRlICJXYXNtRXhj
ZXB0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKQEAgLTUwLDQwICs1MSwxMCBA
QCBzdGF0aWMgYm9vbCBmYXN0SGFuZGxlckluc3RhbGxlZCB7IGZhbHNlIH07CiBzdGF0aWMgU3Rh
dGljTG9jayBjb2RlTG9jYXRpb25zTG9jazsKIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxzdGQ6OnR1cGxlPFZNKiwgdm9pZCosIHZvaWQqPj4+IGNvZGVMb2NhdGlvbnM7IC8vICh2
bSwgc3RhcnQsIGVuZCkKIAotLy8gRklYTUU6IENsZWFuIHVwIG1jb250ZXh0X3QgaGFuZGxpbmcg
Y29kZSBzaW5jZSBpdCBpcyBzY2F0dGVyZWQgaW4gaGVhcC8sIHRvb2xzLyBhbmQgd2FzbS8uCi0v
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTgwCi0jaWYgQ1BV
KFg4Nl82NCkKLQotI2lmIE9TKERBUldJTikKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BS
IGNvbnRleHQtPl9fc3MuX19yaXAKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0LT5f
X3NzLl9fcnNpCi0jZWxpZiBPUyhGUkVFQlNEKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJH
UFIgY29udGV4dC5tY19yaXAKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0Lm1jX3Jz
aQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQ
UiBjb250ZXh0LmdyZWdzW1JFR19SSVBdCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4
dC5ncmVnc1tSRUdfUlNJXQotI2VuZGlmCi0KLSNlbHNlCi0KLSNpZiBPUyhEQVJXSU4pCi0jZGVm
aW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0LT5fX3NzLl9fcGMKLSNkZWZpbmUgRmly
c3RBcmd1bWVudEdQUiBjb250ZXh0LT5fX3NzLl9feFsxXQotI2VsaWYgT1MoRlJFRUJTRCkKLSNk
ZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQubWNfZ3ByZWdzLmdwX2VscgotI2Rl
ZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMV0KLSNlbGlmIGRl
ZmluZWQoX19HTElCQ19fKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5w
YwotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQucmVnc1sxXQotI2VuZGlmCi0KLSNl
bmRpZgotCiBzdGF0aWMgdm9pZCB0cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNp
Z0luZm8sIHZvaWQqIHVjb250ZXh0KQogewogICAgIG1jb250ZXh0X3QmIGNvbnRleHQgPSBzdGF0
aWNfY2FzdDx1Y29udGV4dF90Kj4odWNvbnRleHQpLT51Y19tY29udGV4dDsKLSAgICB2b2lkKiBm
YXVsdGluZ0luc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oSW5zdHJ1Y3Rpb25Q
b2ludGVyR1BSKTsKKyAgICB2b2lkKiBmYXVsdGluZ0luc3RydWN0aW9uID0gTWFjaGluZUNvbnRl
eHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KTsKICAgICBkYXRhTG9nTG5JZih2ZXJib3Nl
LCAic3RhcnRpbmcgaGFuZGxlciBmb3IgZmF1bHQgYXQ6ICIsIFJhd1BvaW50ZXIoZmF1bHRpbmdJ
bnN0cnVjdGlvbikpOwogCiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIkpJVCBtZW1vcnkgc3Rh
cnQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhcnRPZkZpeGVkRXhl
Y3V0YWJsZU1lbW9yeVBvb2wpKSwgIiBlbmQ6ICIsIFJhd1BvaW50ZXIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSkpOwpAQCAtMTIyLDggKzkz
LDggQEAgc3RhdGljIHZvaWQgdHJhcEhhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5mb190KiBzaWdJ
bmZvLCB2b2lkKiB1Y29udGV4dCkKICAgICAgICAgICAgICAgICAgICAgaWYgKCFleGNlcHRpb25T
dHViKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJmb3VuZCBzdHViOiAiLCBSYXdQb2ludGVyKGV4Y2VwdGlv
blN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKTsKLSAgICAgICAgICAgICAgICAgICAg
Rmlyc3RBcmd1bWVudEdQUiA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7Ci0gICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9u
UG9pbnRlckdQUiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KGV4Y2VwdGlvblN0dWIuY29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQ29u
dGV4dDo6YXJndW1lbnRQb2ludGVyPDE+KGNvbnRleHQpID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOworICAgICAgICAgICAg
ICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpID0gZXhj
ZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmlu
ZGV4IDJiZjA3ODk4ZGQwYzI4MDdkN2E1ZDM3ODYwZTNlMGE1NzE3ZjY3ZDIuLmE0YWEwZWZlYzE1
MTY1ZGIyY2YzZjgzMjE4YTIwNTBiMzY1MDY5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtOTIxLDcgKzky
MSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgT1MoREFSV0lOKSAmJiBFTkFCTEUoSklUKQor
I2lmIChPUyhEQVJXSU4pIHx8IE9TKExJTlVYKSB8fCBPUyhGUkVFQlNEKSkgJiYgRU5BQkxFKEpJ
VCkKICNkZWZpbmUgRU5BQkxFX1NJR05BTF9CQVNFRF9WTV9UUkFQUyAxCiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304163</attachid>
            <date>2017-03-11 09:01:38 -0800</date>
            <delta_ts>2017-03-13 10:49:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170312020137.patch</filename>
            <type>text/plain</type>
            <size>48370</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDAxODQ4ZDFjMGZlNWE0OTczMWVjNDgyYTJlMTg1YzhjOGM0ODEzLi4yZGM5NmM2ZjViN2UxYjhl
NTU0NTI1OGRhOTFhMzlkMzU3MThlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNv
bT4KIAogICAgICAgICBUaGUgSklUcyBzaG91bGQgYmUgYWJsZSB0byBlbWl0IGZhc3QgVExTIGxv
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGRhOWNmYzBlYjM5MjA2NjBhNTM2MjY0YzliMmRiOTkyMWUzNGYyNmMuLmQzZTVj
OGZkNDJlZGIzY2JlMjE2NDMxODI0YTkwY2FkYzQxYThmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDMtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ11bTGludXhdIEltcGxlbWVudCBWTVRyYXAgaW4gTGludXggcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQzNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBWTVRyYXAg
bWVjaGFuaXNtIGZvciBMaW51eCBhbmQgRnJlZUJTRC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDE3LTAzLTExICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjEzNjQ1KTogSXQgbWFkZSBKU0MgdGVzdHMgc3VwZXIg
c2xvdyBhbmQgdGltZW91dCBvbiBBQXJjaDY0IExpbnV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDA5MjAwYmEyMDgwMzk4MmY5MzBkYzQ0MjNlOWFlODM5MzBhOTI0ZGEuLjU0NjE0
YWE5OTMwZWM4NWE2OTZlN2FlZTkwYzIwZGVjMmMxNWNiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNDQwLDYgKzI0NDAsNyBAQAogCQlGRUU0M0ZDRTFFNjY0MTcxMDA3N0Q2
RDEgLyogUGxhdGZvcm1UaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFRTQzRkNEMUU2NjQxNDAwMDc3RDZEMSAvKiBQbGF0Zm9ybVRocmVhZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFRjA0
MDUxMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVGMDQwNTAxQUFFNjYyRDAwQkQy
OEIwIC8qIENvbXBhcmVBbmRTd2FwVGVzdC5jcHAgKi87IH07CiAJCUZFRkQ2RkM2MUQ1RTc5OTIw
MDhGMkYwQiAvKiBKU1N0cmluZ0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFRkQ2RkM1MUQ1RTc5NzAwMDhGMkYwQiAvKiBKU1N0cmluZ0lu
bGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk5ODFFRDgyMzI4MjM0RDkxQkFFQ0NBREUgLyogTWFjaGluZUNvbnRleHQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI4ODA2RTIxMTU1RTQ3OEE5M0ZB
N0IwMiAvKiBNYWNoaW5lQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTUwMzYsNiArNTAzNyw3IEBA
CiAJCUZFRjA0MDUwMUFBRTY2MkQwMEJEMjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ29tcGFyZUFuZFN3YXBUZXN0LmNw
cDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUYwNDA1MjFBQUVDNEVEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3
YXBUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENvbXBhcmVBbmRTd2Fw
VGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0NvbXBhcmVBbmRTd2FwVGVzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyODgwNkUyMTE1NUU0NzhBOTNGQTdC
MDIgLyogTWFjaGluZUNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TWFjaGluZUNvbnRleHQuaDsgcGF0aCA9IE1hY2hpbmVDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTY5MzYsNiArNjkzOCw3
IEBACiAJCQkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAq
LywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3JpdGVCYXJyaWVyLmggKi8sCiAJ
CQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFycmllcklubGluZXMuaCAqLywK
KwkJCQkyODgwNkUyMTE1NUU0NzhBOTNGQTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05
Mzc0LDYgKzkzNzcsNyBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlh
cnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RjYzNDM0NTc3Mjc0RkFGQjkz
MzZDMzggLyogTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01h
cmtlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCmluZGV4IGYyZDhjYjEzZTUxMDEzNjAyZTJjYmY5OTU2YzRlMTg1ZGRmMzZhNmYuLjhhNmQ1
NTgxMTg2ZjUyNzgzOTFmMDlmYjA1YTcwZGRlYzY1ZGRlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtNDgxLDg3ICs0ODEs
MTIgQEAgc2l6ZV90IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyhUaHJlYWQ6
OlJlZ2lzdGVycyYgcmVnaXN0ZXJzKQogCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpS
ZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYg
X19EQVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPihyZWdzLl9fZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yc3ApOwotI2VsaWYgQ1BVKFBQQykgfHwgQ1BV
KFBQQzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcjEpOwot
I2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5f
X3NwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4ocmVncy5fX3NwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRp
ZgotCi0jZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLnJzcCk7Ci0jZWxpZiBDUFUo
UFBDKSB8fCBDUFUoUFBDNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MucjEpOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNl
bmRpZiAvLyBfX0RBUldJTl9VTklYMDMKLQotLy8gZW5kIE9TKERBUldJTikKLSNlbGlmIE9TKFdJ
TkRPV1MpCi0KLSNpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLlNwKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLkludFNwKTsKLSNlbGlmIENQVShY
ODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
RXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCh1aW50cHRyX3QpIHJlZ3MuUnNwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIHJldHVy
biBNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ3MpOwogI2VsaWYgVVNFKFBUSFJFQURT
KQogCi0jaWYgT1MoRlJFRUJTRCkgJiYgRU5BQkxFKEpJVCkKLQotI2lmIENQVShYODYpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQubWNfZXNwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcnNwKTsKLSNl
bGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1NQXSk7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3NwKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Lm1jX3JlZ3NbMjldKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNl
bmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgRU5BQkxFKEpJVCkKLQotI2lmIENQ
VShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJl
Z3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTUF0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfUlNQXSk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9z
cCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuc3ApOwotI2VsaWYgQ1BVKE1JUFMpCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGlu
ZUNvbnRleHQuZ3JlZ3NbMjldKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
LSNlbmRpZgotCisjaWYgKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgRU5B
QkxFKEpJVCkKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzLm1h
Y2hpbmVDb250ZXh0KTsKICNlbHNlCiAgICAgdm9pZCogc3RhY2tCYXNlID0gMDsKICAgICBzaXpl
X3Qgc3RhY2tTaXplID0gMDsKQEAgLTU4Niw4MiArNTExLDEwIEBAIHZvaWQqIE1hY2hpbmVUaHJl
YWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKICNpZiBFTkFCTEUo
U0FNUExJTkdfUFJPRklMRVIpCiB2b2lkKiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3Rl
cnM6OmZyYW1lUG9pbnRlcigpIGNvbnN0CiB7Ci0jaWYgT1MoREFSV0lOKQotCi0jaWYgX19EQVJX
SU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLl9fZWJwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yYnApOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3JbMTFdKTsKLSNlbGlmIENQVShBUk02NCkK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3hbMjldKTsKLSNlbHNl
Ci0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxzZSAvLyAhX19EQVJX
SU5fVU5JWDAzCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLmVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPihyZWdzLnJzcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFS
V0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUjExKTsKLSNlbGlmIENQVShNSVBT
KQotI2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVk
IHRoaXM/Ci0jZWxpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLkVicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlJicCk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQot
I2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZWJwKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQubWNfcmJwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX0ZQ
XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbMjldKTsKLSNl
bGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JlZ3NbMzBdKTsKLSNlbHNlCi0jZXJyb3IgVW5r
bm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLQot
Ly8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0
LmguCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfRUJQXSk7Ci0jZWxpZiBDUFUo
WDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSBy
ZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SQlBdKTsKLSNlbGlmIENQVShBUk0pCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNv
bnRleHQuYXJtX2ZwKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5yZWdzWzI5XSk7Ci0j
ZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1szMF0pOwotI2Vsc2UKLSNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1Mp
CisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVncyk7CisjZWxpZiBP
UyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAjZXJyb3IgTmVl
ZCBhIHdheSB0byBnZXQgdGhlIGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRo
aXMgcGxhdGZvcm0KICNlbmRpZgpAQCAtNjY5LDE3MiArNTIyLDIyIEBAIHZvaWQqIE1hY2hpbmVU
aHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2ludGVyKCkgY29uc3QKIAogdm9pZCog
TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVjdGlvblBvaW50ZXIoKSBj
b25zdAogewotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BV
KFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX2VpcCk7Ci0j
ZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
Ll9fcmlwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19wYyk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHJlZ3MuX19wYyk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotI2lmIENQVShYODYpCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuZWlwKTsKLSNlbGlmIENQVShY
ODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MucmlwKTsKLSNl
bHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZW5kaWYgLy8gX19E
QVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxpZiBPUyhXSU5ET1dTKQotCi0j
aWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5QYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBk
byB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5FaXApOwotI2Vs
aWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5SaXApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2Vu
ZGlmCi0KLSNlbGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2Vp
cCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JpcCk7Ci0jZWxpZiBDUFUoQVJN
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19QQ10pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0Lm1jX2dwcmVncy5ncF9lbHIpOwotI2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfcGMp
OwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRl
ZmluZWQoX19HTElCQ19fKQotCi0vLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24g
Z2xpYmMncyBzeXMvdWNvbnRleHQuaC4KLSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JF
R19FSVBdKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0pOwot
I2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0LnBjKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnBjKTsKLSNlbHNlCi0jZXJy
b3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhX
SU5ET1dTKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z3MpOworI2VsaWYgT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJu
IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7
CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVy
IGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKIH0KKwogdm9pZCog
TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpsbGludFBDKCkgY29uc3QKIHsKICAg
ICAvLyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFS
V0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTElu
dFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19lc2kpOwotI2VsaWYgQ1BVKFg4Nl82NCkK
LSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6cjgsICJX
cm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5fX3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQ
QyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzhdKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTTY0UmVnaXN0ZXJzOjp4NCwgIldy
b25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdz
Ll9feFs0XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQot
I2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotI2lmIENQVShYODYpCi0gICAgc3RhdGljX2Fzc2Vy
dChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIp
OwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVzaSk7Ci0jZWxpZiBD
UFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0
ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPihyZWdzLnI4KTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNl
bmRpZgotCi0jZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0j
ZWxpZiBPUyhXSU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50
OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SOCk7Ci0jZWxp
ZiBDUFUoTUlQUykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdl
IGV2ZW4gbmVlZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50
OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRXNpKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZS
ZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIxMCk7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoRlJFRUJTRCkKLQotI2lmIENQVShY
ODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQubWNfZXNpKTsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNf
cjgpOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUjhdKTsKLSNlbGlm
IENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0XSk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5tY19yZWdzWzEyXSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0
ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0KLS8vIFRoZSBmb2xs
b3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgotI2lmIENQ
VShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJl
Z3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTSV0pOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfUjhdKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3I4
KTsKLSNlbGlmIENQVShBUk02NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
KHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5yZWdzWzRdKTsKLSNlbGlmIENQVShNSVBT
KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1h
Y2hpbmVDb250ZXh0LmdyZWdzWzEyXSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1cm4g
TWFjaGluZUNvbnRleHQ6OmxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3MpOworI2VsaWYgT1Mo
RlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0
OjpsbGludEluc3RydWN0aW9uUG9pbnRlcihyZWdzLm1hY2hpbmVDb250ZXh0KTsKICNlbHNlCiAj
ZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMgZm9yIGFub3RoZXIgdGhyZWFkIG9u
IHRoaXMgcGxhdGZvcm0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuaAppbmRleCA3OTc4NDEyZmJhYTFiZDBlNDliOWIzNjg2YmEyOGIz
NTQ3NzUyOTNjLi45OWE0MjdhNDg4Y2MyOGQ2NzNjYjJhMDM2MTg3NjdkMTc5Yjc3YjlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaApAQCAt
MjEsNiArMjEsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1UaHJlYWQuaCIKICNpbmNsdWRlICJSZWdpc3RlclN0YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTgwLDI1ICs4MSw4IEBAIGNsYXNzIE1hY2hp
bmVUaHJlYWRzIHsKICAgICAgICAgICAgIHZvaWQqIGxsaW50UEMoKSBjb25zdDsKICNlbmRpZiAv
LyBFTkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCiAgICAgICAgICAgICAKLSNpZiBPUyhEQVJXSU4p
Ci0jaWYgQ1BVKFg4NikKLSAgICAgICAgICAgIHR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQ
bGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShYODZfNjQpCi0gICAgICAgICAgICB0eXBlZGVm
IHg4Nl90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFBQQykK
LSAgICAgICAgICAgIHR5cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJz
OwotI2VsaWYgQ1BVKFBQQzY0KQotICAgICAgICAgICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRl
NjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk0pCi0gICAgICAgICAgICB0eXBl
ZGVmIGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk02
NCkKLSAgICAgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1SZWdp
c3RlcnM7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLSAgICAg
ICAgICAgIAotI2VsaWYgT1MoV0lORE9XUykKLSAgICAgICAgICAgIHR5cGVkZWYgQ09OVEVYVCBQ
bGF0Zm9ybVJlZ2lzdGVyczsKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgICAg
ICAgICB1c2luZyBQbGF0Zm9ybVJlZ2lzdGVycyA9IE1hY2hpbmVDb250ZXh0OjpQbGF0Zm9ybVJl
Z2lzdGVyczsKICNlbGlmIFVTRShQVEhSRUFEUykKICAgICAgICAgICAgIHN0cnVjdCBQbGF0Zm9y
bVJlZ2lzdGVycyB7CiAgICAgICAgICAgICAgICAgcHRocmVhZF9hdHRyX3QgYXR0cmlidXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjAxOWY4YmI4OTNmOWZhY2MyZjkwZjMwYWUwOGEyNGVhOTkwYjc5ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgK
QEAgLTAsMCArMSw1ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIE9TKERBUldJTikgfHwgT1MoRlJFRUJTRCkgfHwg
ZGVmaW5lZChfX0dMSUJDX18pCisjaW5jbHVkZSA8c2lnbmFsLmg+CisvLyBVc2luZyBzaWduYWwu
aCBkaWRuJ3QgbWFrZSBtY29udGV4dF90IGFuZCB1Y29udGV4dF90IGF2YWlsYWJsZSBvbiBGcmVl
QlNELgorLy8gVGhpcyBidWcgaGFzIGJlZW4gZml4ZWQgaW4gRnJlZUJTRCAxMS4wLUNVUlJFTlQs
IHNvIHRoaXMgd29ya2Fyb3VuZCBjYW4gYmUKKy8vIHJlbW92ZWQgYWZ0ZXIgRnJlZUJTRCAxMC54
IGdvZXMgRU9MLgorLy8gaHR0cHM6Ly9idWdzLmZyZWVic2Qub3JnL2J1Z3ppbGxhL3Nob3dfYnVn
LmNnaT9pZD0yMDcwNzkKKyNpZiBPUyhGUkVFQlNEKQorI2luY2x1ZGUgPHVjb250ZXh0Lmg+Cisj
ZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBNYWNoaW5lQ29udGV4
dCB7CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorCisjaWYgT1MoREFSV0lOKQorI2lm
IENQVShYODYpCit0eXBlZGVmIGkzODZfdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7
CisjZWxpZiBDUFUoWDg2XzY0KQordHlwZWRlZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9y
bVJlZ2lzdGVyczsKKyNlbGlmIENQVShQUEMpCit0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVfdCBQ
bGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShQUEM2NCkKK3R5cGVkZWYgcHBjX3RocmVhZF9z
dGF0ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoQVJNKQordHlwZWRlZiBhcm1f
dGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoQVJNNjQpCit0eXBl
ZGVmIGFybV90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKK2lubGluZSB2b2lkKiYgc3RhY2tQb2lu
dGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIF9fREFSV0lOX1VOSVgwMworCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19l
c3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KHJlZ3MuX19yc3ApOworI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3IxKTsKKyNlbGlmIENQVShBUk1fVEhV
TUIyKSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fc3ApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzcCk7CisjZWxpZiBDUFUo
WDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yc3ApOwor
I2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQQzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4ocmVncy5yMSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisj
ZW5kaWYKKworI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCitpbmxpbmUgdm9pZComIGZy
YW1lUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBfX0RBUldJTl9VTklY
MDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLl9fZWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLl9fcmJwKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JbN10pOworI2VsaWYgQ1BVKEFSTSkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzExXSk7CisjZWxp
ZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9f
eFsyOV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNl
bHNlIC8vICFfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVzcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yc3ApOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMK
K30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ3MpCit7CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VpcCk7CisjZWxpZiBDUFUoWDg2XzY0
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JpcCk7CisjZWxp
ZiBDUFUoQVJNX1RIVU1CMikgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3BjKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93
biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisjaWYg
Q1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuZWlwKTsK
KyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihy
ZWdzLnJpcCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMworfQorCit0ZW1wbGF0ZTxzaXplX3QgTj4KK3ZvaWQq
JiBhcmd1bWVudFBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmKTsKKwordGVtcGxhdGU8PgoraW5s
aW5lIHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4oUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7
CisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2VkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JzaSk7CisjZWxpZiBDUFUoQVJN
X1RIVU1CMikgfHwgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KHJlZ3MuX19yWzFdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KHJlZ3MuX194WzFdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAhX19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5lZHgpOworI2VsaWYg
Q1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNp
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisKKyNpZiBFTkFCTEUoSklUKQoraW5saW5lIHZvaWQqJiBs
bGludEluc3RydWN0aW9uUG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyAgICAv
LyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BV
KFg4NikKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6
ZXNpLCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPihyZWdzLl9fZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChM
TEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcjgpOworI2VsaWYgQ1BV
KEFSTSkKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6
cjgsICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KHJlZ3MuX19yWzhdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBzdGF0aWNfYXNzZXJ0KExM
SW50OjpMTEludFBDID09IEFSTTY0UmVnaXN0ZXJzOjp4NCwgIldyb25nIExMSW50IFBDLiIpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbNF0pOworI2Vsc2UK
KyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJ
Tl9VTklYMDMKKyNpZiBDUFUoWDg2KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMg
PT0gWDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3Jvbmcg
TExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLnI4
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gX19EQVJXSU5fVU5JWDAzCit9CisjZW5kaWYKKworI2VsaWYgT1MoV0lORE9XUykKKwordHlw
ZWRlZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0ZXJzOworCitpbmxpbmUgdm9pZComIHN0YWNrUG9p
bnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykKK3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuU3ApOworI2VsaWYg
Q1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90
JikgcmVncy5JbnRTcCk7CisjZWxpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuRXNwKTsKKyNlbGlmIENQVShYODZfNjQpCisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5Sc3Ap
OworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK2lubGlu
ZSB2b2lkKiYgZnJhbWVQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworI2lmIENQ
VShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90Jikg
cmVncy5SMTEpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8g
d2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5FYnApOworI2Vs
aWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50
cHRyX3QmKSByZWdzLlJicCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQqJiBpbnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ3MpCit7CisjaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlBjKTsKKyNlbGlmIENQVShNSVBTKQorI2Vycm9y
IERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/Cisj
ZWxpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIHJlZ3MuRWlwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SaXApOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCit9CisKK3RlbXBsYXRlPHNpemVfdCBOPgordm9p
ZComIGFyZ3VtZW50UG9pbnRlcihQbGF0Zm9ybVJlZ2lzdGVycyYpOworCit0ZW1wbGF0ZTw+Citp
bmxpbmUgdm9pZComIGFyZ3VtZW50UG9pbnRlcjwxPihQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykK
K3sKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuUjEpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdo
YXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5F
ZHgpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSByZWdzLlJkeCk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0
ZWN0dXJlCisjZW5kaWYKK30KKworI2lmIEVOQUJMRShKSVQpCitpbmxpbmUgdm9pZComIGxsaW50
SW5zdHJ1Y3Rpb25Qb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIC8vIExM
SW50IHVzZXMgcmVnVDQgYXMgUEMuCisjaWYgQ1BVKEFSTSkKKyAgICBzdGF0aWNfYXNzZXJ0KExM
SW50OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlI4KTsK
KyNlbGlmIENQVShNSVBTKQorI2Vycm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4g
RG8gd2UgZXZlbiBuZWVkIHRoaXM/CisjZWxpZiBDUFUoWDg2KQorICAgIHN0YXRpY19hc3NlcnQo
TExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQQy4iKTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVz
aSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMg
PT0gWDg2UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlIxMCk7CisjZWxzZQorI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKK30KKyNlbmRpZgorCisjZW5kaWYKKwor
aW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVncykK
K3sKKyAgICByZXR1cm4gc3RhY2tQb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMm
PihyZWdzKSk7Cit9CisKK2lubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlcihjb25zdF9jYXN0PFBs
YXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Q
b2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBpbnN0
cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30K
KwordGVtcGxhdGU8c2l6ZV90IE4+CitpbmxpbmUgdm9pZCogYXJndW1lbnRQb2ludGVyKGNvbnN0
IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXI8
Tj4oY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKworI2lmIEVOQUJM
RShKSVQpCitpbmxpbmUgdm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVy
KGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9CisjZW5kaWYKKworI2Vu
ZGlmCisKKyNpZiBPUyhEQVJXSU4pIHx8ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJD
X18pKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0
KSB8fCBDUFUoTUlQUykpKQorCitpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIHN0YWNrUG9p
bnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisjaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5tY19lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yc3Ap
OworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfU1BdKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3Bfc3ApOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
bWNfcmVnc1syOV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlm
CisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVn
c1tSRUdfRVNQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SU1BdKTsK
KyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWlu
dHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3NwKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4
dC5zcCk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1syOV0pOworI2Vsc2UKKyNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQq
IHN0YWNrUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICBy
ZXR1cm4gc3RhY2tQb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0
KSk7Cit9CisKK2lubGluZSB2b2lkKiYgZnJhbWVQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVD
b250ZXh0KQoreworI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gZnJhbWVQb2ludGVyKG1hY2hp
bmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250
ZXh0Lm1jX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JicCk7CisjZWxpZiBD
UFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250
ZXh0Lm1jX2dwcmVncy5ncF94WzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdz
WzMwXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vs
aWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5k
cyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3Nb
UkVHX0VCUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Cisj
ZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9mcCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
cmVnc1syOV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQorI2Vycm9yIE5lZWQg
YSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlz
IHBsYXRmb3JtCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9pbnRlcihjb25zdCBt
Y29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICByZXR1cm4gZnJhbWVQb2ludGVyKGNv
bnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisKK2lubGluZSB2b2lk
KiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworI2lm
IE9TKERBUldJTikKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hpbmVDb250ZXh0
LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2Vp
cCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
Jj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JpcCk7CisjZWxpZiBDUFUoQVJNKQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0Ll9fZ3JlZ3NbX1JFR19QQ10pOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dw
cmVncy5ncF9lbHIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcGMpOworI2Vsc2UKKyNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElC
Q19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMv
dWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FSVBdKTsKKyNlbGlm
IENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0
cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29u
dGV4dC5hcm1fcGMpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LnBjKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LnBjKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNl
bmRpZgorCisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBw
b2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKwor
aW5saW5lIHZvaWQqIGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5l
Q29udGV4dCkKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8bWNv
bnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIE4+Cit2
b2lkKiYgYXJndW1lbnRQb2ludGVyKG1jb250ZXh0X3QmKTsKKwordGVtcGxhdGU8PgoraW5saW5l
IHZvaWQqJiBhcmd1bWVudFBvaW50ZXI8MT4obWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7
CisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXI8MT4obWFjaGluZUNv
bnRleHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
bWNfZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcnNpKTsKKyNlbGlmIENQVShB
Uk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1IxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
bWNfZ3ByZWdzLmdwX3hbMV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1s1XSk7
CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVm
aW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBn
bGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VE
WF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
KiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUlNJXSk7CisjZWxpZiBD
UFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0LmFybV9yMSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1sx
XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1s1XSk7CisjZWxzZQorI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRv
IGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9y
bQorI2VuZGlmCit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIE4+CitpbmxpbmUgdm9pZCogYXJndW1l
bnRQb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVy
biBhcmd1bWVudFBvaW50ZXI8Tj4oY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRl
eHQpKTsKK30KKworI2lmIEVOQUJMRShKSVQpCitpbmxpbmUgdm9pZComIGxsaW50SW5zdHJ1Y3Rp
b25Qb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIC8vIExMSW50IHVz
ZXMgcmVnVDQgYXMgUEMuCisjaWYgT1MoREFSV0lOKQorICAgIHJldHVybiBsbGludEluc3RydWN0
aW9uUG9pbnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNEKQorCisj
aWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRy
X3QmKSBtYWNoaW5lQ29udGV4dC5tY19lc2kpOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5t
Y19yOCk7CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
Jj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19SOF0pOworI2VsaWYg
Q1BVKEFSTTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF94WzRdKTsKKyNlbGlmIENQVShNSVBTKQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0Lm1jX3JlZ3NbMTJdKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUK
KyNlbmRpZgorCisjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKworLy8gVGhlIGZvbGxvd2luZyBz
ZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRVNJXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SOF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5hcm1fcjgpOworI2VsaWYgQ1BVKEFS
TTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LnJlZ3NbNF0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbMTJd
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQor
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZvciBhbm90aGVyIHRocmVhZCBv
biB0aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqIGxsaW50SW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVy
biBsbGludEluc3RydWN0aW9uUG9pbnRlcihjb25zdF9jYXN0PG1jb250ZXh0X3QmPihtYWNoaW5l
Q29udGV4dCkpOworfQorI2VuZGlmCisKKyNlbmRpZgorCit9Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaAppbmRleCBiZjc1NGZkZWE1M2ZlOTVm
YzM4MjM3OGZiZGJkMmExYjA2OTNkYjc0Li5iMDYxZWU5ZDExYzk1NzExZjNkZTI2NmRlYjA4YmM2
MmM4YjAyNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QbGF0
Zm9ybVRocmVhZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3Jt
VGhyZWFkLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2VuZGlm
CiAKKyNpZiBVU0UoUFRIUkVBRFMpICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoREFSV0lOKQorI2lu
Y2x1ZGUgPHNpZ25hbC5oPgorI2VuZGlmCisKICNpZiBPUyhEQVJXSU4pCiAjaW5jbHVkZSA8bWFj
aC90aHJlYWRfYWN0Lmg+CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtNjMsNiArNjcsMTIgQEAgaW5s
aW5lIGJvb2wgcGxhdGZvcm1UaHJlYWRTaWduYWwoUGxhdGZvcm1UaHJlYWQgcGxhdGZvcm1UaHJl
YWQsIGludCBzaWduYWxOdW1iZXIKICAgICBpbnQgZXJyTm8gPSBwdGhyZWFkX2tpbGwocHRocmVh
ZElELCBzaWduYWxOdW1iZXIpOwogICAgIHJldHVybiAhZXJyTm87IC8vIEEgMCBlcnJObyBtZWFu
cyBzdWNjZXNzLgogfQorI2VsaWYgVVNFKFBUSFJFQURTKQoraW5saW5lIGJvb2wgcGxhdGZvcm1U
aHJlYWRTaWduYWwoUGxhdGZvcm1UaHJlYWQgcHRocmVhZElELCBpbnQgc2lnbmFsTnVtYmVyKQor
eworICAgIGludCBlcnJObyA9IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51bWJlcik7
CisgICAgcmV0dXJuICFlcnJObzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCit9CiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
VHJhcHMuY3BwCmluZGV4IGVlMDdlMDU4NmUxMjc5YjZlZjczMTkwY2E5MTkzNTFmMzlhZTIxMGUu
LjE2YjA1YmUwMzljYjY4OWYwZjMxYzZjMjQzNDE2MTY4YmNhNzhhMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNVHJhcHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTExJbnRQQ1Jhbmdlcy5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTWFjaGluZVN0YWNrTWFya2VyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNp
bmNsdWRlICJWTS5oIgpAQCAtNTYsNzkgKzU3LDMxIEBAIEFMV0FZU19JTkxJTkUgVk0mIFZNVHJh
cHM6OnZtKCkgY29uc3QKIHN0cnVjdCBzaWdhY3Rpb24gb3JpZ2luYWxTaWd1c3IxQWN0aW9uOwog
c3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ3RyYXBBY3Rpb247CiAKLSNpZiBDUFUoWDg2XzY0
KQotCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90
JiBtY29udGV4dCkKICAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFw
UEMocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yaXApKQotICAgICAg
ICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5f
X3JzcCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1j
b250ZXh0LT5fX3NzLl9fcmJwKSkKKyAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNvbnRleHQ6Omlu
c3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCisgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hp
bmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIGZyYW1lUG9pbnRl
cihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250ZXh0KSkKICAgICB7CisjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICAgICAgLy8gT24gWDg2XzY0LCBTSUdUUkFQIHJlcG9y
dHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCiAgICAg
ICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHRyYXBQQykgLSAxOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgdm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rp
b24oKQogICAgIHsKLSAgICAgICAgbWNvbnRleHQtPl9fc3MuX19yaXAgPSByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odHJhcFBDKTsKLSAgICB9Ci0KLSAgICBtY29udGV4dF90JiBtY29udGV4
dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQq
IGZyYW1lUG9pbnRlcjsKLX07Ci0gICAgCi0jZWxpZiBDUFUoWDg2KQotCi1zdHJ1Y3QgU2lnbmFs
Q29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkKLSAgICAg
ICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19laXApKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX2VzcCkpCi0gICAgICAgICwg
ZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZWJw
KSkKLSAgICB7Ci0gICAgICAgIC8vIE9uIFg4NiwgU0lHVFJBUCByZXBvcnRzIHRoZSBhZGRyZXNz
IGFmdGVyIHRoZSB0cmFwcGluZyBQQy4gU28sIGRlYyBieSAxLgotICAgICAgICB0cmFwUEMgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPih0cmFwUEMpIC0gMTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBhZGp1c3RQQ1RvUG9pbnRUb1RyYXBwaW5nSW5zdHJ1Y3Rpb24oKQotICAgIHsKLSAgICAg
ICAgbWNvbnRleHQtPl9fc3MuX19laXAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odHJh
cFBDKTsKLSAgICB9Ci0gICAgCi0gICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7Ci0gICAgdm9pZCog
dHJhcFBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2b2lkKiBmcmFtZVBvaW50ZXI7
Ci19OwotCi0jZWxpZiBDUFUoQVJNNjQpIHx8IENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNKQot
ICAgIAotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRf
dCYgbWNvbnRleHQpCi0gICAgICAgIDogbWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgdHJh
cFBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcGMpKQotICAgICAg
ICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5f
X3NwKSkKLSNpZiBDUFUoQVJNNjQpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZnApKQotI2VsaWYgQ1BVKEFSTV9USFVNQjIp
Ci0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0
LT5fX3NzLl9fcls3XSkpCi0jZWxpZiBDUFUoQVJNKQotICAgICAgICAsIGZyYW1lUG9pbnRlcihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JbMTFdKSkKKyNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoWDg2KQorICAgICAgICBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Q
b2ludGVyKG1jb250ZXh0KSA9IHRyYXBQQzsKICNlbmRpZgotICAgIHsgfQotICAgICAgICAKLSAg
ICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpIHsgfQorICAgIH0K
IAogICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OwogICAgIHZvaWQqIHRyYXBQQzsKICAgICB2b2lk
KiBzdGFja1BvaW50ZXI7CiAgICAgdm9pZCogZnJhbWVQb2ludGVyOwogfTsKLSAgICAKLSNlbmRp
ZgogCiBpbmxpbmUgc3RhdGljIGJvb2wgdm1Jc0luYWN0aXZlKFZNJiB2bSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5nLmNwcAppbmRleCBmOTE2YzIwM2Ix
ZTEyMzAwN2YzN2M4ZWZmMGNiMWMxMmFlY2EwYjIxLi4yZDU5NTNlYTM2NTk0ZjY0ZmRkN2JmYjQ0
NjAyMzBlMTA5Yzg4YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQ
cm9maWxpbmcuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29kZVByb2ZpbGluZy5o
IgogCiAjaW5jbHVkZSAiQ29kZVByb2ZpbGUuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5o
IgogI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9yLmg+CiAKICNpZiBIQVZFKFNJR05BTF9IKQpA
QCAtNjYsMTkgKzY3LDEzIEBAIHN0YXRpYyB2b2lkIHNldFByb2ZpbGVUaW1lcih1bnNpZ25lZCB1
c2VjKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCiAKLSNpZiBPUyhEQVJX
SU4pICYmICFQTEFURk9STShHVEspICYmIENQVShYODZfNjQpCi1zdGF0aWMgdm9pZCBwcm9maWxp
bmdUaW1lcihpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVhcCkKLXsKLSAgICBtY29udGV4dF90IGNv
bnRleHQgPSBzdGF0aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKS0+dWNfbWNvbnRleHQ7Ci0gICAg
Q29kZVByb2ZpbGluZzo6c2FtcGxlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQtPl9f
c3MuX19yaXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZv
aWQqKj4oY29udGV4dC0+X19zcy5fX3JicCkpOwotfQotI2VsaWYgT1MoTElOVVgpICYmIENQVShY
ODYpCisjaWYgKE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkpIHx8
IChPUyhMSU5VWCkgJiYgQ1BVKFg4NikpCiBzdGF0aWMgdm9pZCBwcm9maWxpbmdUaW1lcihpbnQs
IHNpZ2luZm9fdCosIHZvaWQqIHVhcCkKIHsKICAgICBtY29udGV4dF90IGNvbnRleHQgPSBzdGF0
aWNfY2FzdDx1Y29udGV4dF90Kj4odWFwKS0+dWNfbWNvbnRleHQ7Ci0gICAgQ29kZVByb2ZpbGlu
Zzo6c2FtcGxlKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuZ3JlZ3NbUkVHX0VJUF0p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4oY29u
dGV4dC5ncmVnc1tSRUdfRUJQXSkpOworICAgIENvZGVQcm9maWxpbmc6OnNhbXBsZSgKKyAgICAg
ICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihjb250ZXh0KSwKKyAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIoY29u
dGV4dCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKaW5kZXggMWFjMWFmNDgwMTdlY2Y1MjA0MTYwOTE5
MjYzYWIzODQ1MDYyMDA2Zi4uMjY1YzY2MTU1ZDFhZGI4ZGE5OGJkNzg5NDIwMjkyOTgzZDYxMjcz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFzaEFu
YWx5emVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNs
dWRlICJWTUluc3BlY3Rvci5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KQEAgLTc4LDE3ICs3OSwxNyBAQCBjbGFzcyBTaWdpbGxDcmFzaEFuYWx5emVy
IHsKICAgICAKICNlbmRpZiAvLyBVU0UoT1NfTE9HKQogCi0jaWYgQ1BVKFg4Nl82NCkKIHN0cnVj
dCBTaWduYWxDb250ZXh0IHsKICAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0
KQogICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIG1hY2hpbmVQQyhyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3Rh
Y2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkK
LSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihtY29u
dGV4dC0+X19zcy5fX3JicCkpCisgICAgICAgICwgbWFjaGluZVBDKE1hY2hpbmVDb250ZXh0Ojpp
bnN0cnVjdGlvblBvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIHN0YWNrUG9pbnRlcihNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKG1jb250ZXh0KSkKKyAgICAgICAgLCBmcmFtZVBvaW50
ZXIoTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihtY29udGV4dCkpCiAgICAgeyB9CiAKICAg
ICB2b2lkIGR1bXAoKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KQogI2RlZmluZSBGT1JfRUFDSF9S
RUdJU1RFUih2KSBcCiAgICAgICAgIHYocmF4KSBcCiAgICAgICAgIHYocmJ4KSBcCkBAIC0xMTYs
MjYgKzExNyw4IEBAIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKICAgICAgICAgbG9nKCJSZWdpc3Rl
ciAiICNfX3JlZyAiOiAlcCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3Nz
Ll9fIyNfX3JlZykpOwogICAgICAgICBGT1JfRUFDSF9SRUdJU1RFUihEVU1QX1JFR0lTVEVSKQog
I3VuZGVmIEZPUl9FQUNIX1JFR0lTVEVSCi0gICAgfQotCi0gICAgbWNvbnRleHRfdCYgbWNvbnRl
eHQ7Ci0gICAgdm9pZCogbWFjaGluZVBDOwotICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKLSAgICB2
b2lkKiBmcmFtZVBvaW50ZXI7Ci19OwogCiAjZWxpZiBDUFUoQVJNNjQpCi0KLXN0cnVjdCBTaWdu
YWxDb250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAg
ICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIG1hY2hpbmVQQyhyZWludGVycHJl
dF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3BjKSkKLSAgICAgICAgLCBzdGFja1BvaW50
ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19zcCkpCi0gICAgICAg
ICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Q2FsbEZyYW1lKj4obWNvbnRleHQtPl9f
c3MuX19mcCkpCi0gICAgeyB9Ci0KLSAgICB2b2lkIGR1bXAoKQotICAgIHsKICAgICAgICAgaW50
IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyODsgaSArPSA0KSB7CiAgICAgICAgICAgICBs
b2coInglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IHglZDogJTAxNmxseCIs
CkBAIC0xNDksNiArMTMyLDcgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICAgICAg
aSwgbWNvbnRleHQtPl9fc3MuX194W2ldLCBtY29udGV4dC0+X19zcy5fX2ZwLCBtY29udGV4dC0+
X19zcy5fX2xyKTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxseCBwYzogJTAxNmxseCBjcHNyOiAl
MDh4IiwKICAgICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9fc3AsIG1jb250ZXh0LT5fX3NzLl9f
cGMsIG1jb250ZXh0LT5fX3NzLl9fY3Bzcik7CisjZW5kaWYKICAgICB9CiAKICAgICBtY29udGV4
dF90JiBtY29udGV4dDsKQEAgLTE1NywyMCArMTQxLDYgQEAgc3RydWN0IFNpZ25hbENvbnRleHQg
ewogICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKIH07CiAKLSNlbHNlCi0KLXN0cnVjdCBTaWduYWxD
b250ZXh0IHsKLSAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmKSB7IH0KLSAgICAKLSAgICB2
b2lkIGR1bXAoKSB7IH0KLSAgICAKLSAgICB2b2lkKiBtYWNoaW5lUEM7Ci0gICAgdm9pZCogc3Rh
Y2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0gICAgCi0jZW5kaWYKLQog
c3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ0lsbEFjdGlvbjsKIAogc3RhdGljIHZvaWQgaGFu
ZGxlQ3Jhc2goaW50IHNpZ25hbE51bWJlciwgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1YXApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcAppbmRleCA4YmUzYzg1
NjIwMjBjYzYyMWQzNWRjNDcyNzQzODRhZmViMjllZDFmLi5lMzlhYzMyNzk0YjJhYzQ0NjJjYTU5
NjI2NTQ2N2FiNTkyNGNmNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUlu
c3BlY3Rvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJDb2RlQmxvY2tTZXQuaCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgorI2luY2x1
ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0V4
cGVjdGVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZh
dWx0U2lnbmFsSGFuZGxlci5jcHAKaW5kZXggYWViYjE3MTVhYjE0ZjY5ZjZiZjRhMmMxYjJhY2M2
N2Y5ZGUxOTM5OC4uYzFjNmMyMjdkMjZiNzgxMzMwMDQ2NTVkZjg5NGQ0YzE5ZTA1NjkxYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFu
ZGxlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNp
bmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCisjaW5jbHVkZSAiTWFjaGluZUNvbnRleHQu
aCIKICNpbmNsdWRlICJWTS5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAjaW5j
bHVkZSAiV2FzbU1lbW9yeS5oIgpAQCAtNTAsNDAgKzUxLDEwIEBAIHN0YXRpYyBib29sIGZhc3RI
YW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIHN0YXRpYyBTdGF0aWNMb2NrIGNvZGVMb2NhdGlv
bnNMb2NrOwogc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxIYXNoU2V0PHN0ZDo6dHVwbGU8Vk0q
LCB2b2lkKiwgdm9pZCo+Pj4gY29kZUxvY2F0aW9uczsgLy8gKHZtLCBzdGFydCwgZW5kKQogCi0v
LyBGSVhNRTogQ2xlYW4gdXAgbWNvbnRleHRfdCBoYW5kbGluZyBjb2RlIHNpbmNlIGl0IGlzIHNj
YXR0ZXJlZCBpbiBoZWFwLywgdG9vbHMvIGFuZCB3YXNtLy4KLS8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkxODAKLSNpZiBDUFUoWDg2XzY0KQotCi0jaWYgT1Mo
REFSV0lOKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC0+X19zcy5fX3Jp
cAotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQtPl9fc3MuX19yc2kKLSNlbGlmIE9T
KEZSRUVCU0QpCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0Lm1jX3JpcAot
I2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQubWNfcnNpCi0jZWxpZiBkZWZpbmVkKF9f
R0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQuZ3JlZ3NbUkVH
X1JJUF0KLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0LmdyZWdzW1JFR19SU0ldCi0j
ZW5kaWYKLQotI2Vsc2UKLQotI2lmIE9TKERBUldJTikKLSNkZWZpbmUgSW5zdHJ1Y3Rpb25Qb2lu
dGVyR1BSIGNvbnRleHQtPl9fc3MuX19wYwotI2RlZmluZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRl
eHQtPl9fc3MuX194WzFdCi0jZWxpZiBPUyhGUkVFQlNEKQotI2RlZmluZSBJbnN0cnVjdGlvblBv
aW50ZXJHUFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfZWxyCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRH
UFIgY29udGV4dC5tY19ncHJlZ3MuZ3BfeFsxXQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0j
ZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0LnBjCi0jZGVmaW5lIEZpcnN0QXJn
dW1lbnRHUFIgY29udGV4dC5yZWdzWzFdCi0jZW5kaWYKLQotI2VuZGlmCi0KIHN0YXRpYyB2b2lk
IHRyYXBIYW5kbGVyKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRl
eHQpCiB7CiAgICAgbWNvbnRleHRfdCYgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3Qq
Pih1Y29udGV4dCktPnVjX21jb250ZXh0OwotICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24g
PSByZWludGVycHJldF9jYXN0PHZvaWQqPihJbnN0cnVjdGlvblBvaW50ZXJHUFIpOworICAgIHZv
aWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2lu
dGVyKGNvbnRleHQpOwogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyBoYW5kbGVy
IGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAKICAg
ICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiSklUIG1lbW9yeSBzdGFydDogIiwgUmF3UG9pbnRlcihy
ZWludGVycHJldF9jYXN0PHZvaWQqPihzdGFydE9mRml4ZWRFeGVjdXRhYmxlTWVtb3J5UG9vbCkp
LCAiIGVuZDogIiwgUmF3UG9pbnRlcihyZWludGVycHJldF9jYXN0PHZvaWQqPihlbmRPZkZpeGVk
RXhlY3V0YWJsZU1lbW9yeVBvb2wpKSk7CkBAIC0xMjIsOCArOTMsOCBAQCBzdGF0aWMgdm9pZCB0
cmFwSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNpZ0luZm8sIHZvaWQqIHVjb250ZXh0
KQogICAgICAgICAgICAgICAgICAgICBpZiAoIWV4Y2VwdGlvblN0dWIpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9z
ZSwgImZvdW5kIHN0dWI6ICIsIFJhd1BvaW50ZXIoZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKSkpOwotICAgICAgICAgICAgICAgICAgICBGaXJzdEFyZ3VtZW50R1BSID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVtb3J5QWNj
ZXNzKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50NjRfdD4oZXhjZXB0aW9uU3R1Yi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250ZXh0Ojphcmd1bWVudFBvaW50
ZXI8MT4oY29udGV4dCkgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihFeGNlcHRpb25UeXBlOjpP
dXRPZkJvdW5kc01lbW9yeUFjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVDb250
ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCkgPSBleGNlcHRpb25TdHViLmNvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzcygpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNDJhNWY3YzEyZjVmNDQz
NzQxYTM3YWM4YmExYmI0MzVhY2VmMmQ5Ny4uZGYwZDdmZmYxNTgxODMyNjMyNjA1NDIzNjExMzhk
ODQ5NWYwMjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MjIsNyArOTIyLDcgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKLSNpZiBPUyhEQVJXSU4pICYmIEVOQUJMRShKSVQpCisjaWYgKE9TKERBUldJTikgfHwg
T1MoTElOVVgpIHx8IE9TKEZSRUVCU0QpKSAmJiBFTkFCTEUoSklUKQogI2RlZmluZSBFTkFCTEVf
U0lHTkFMX0JBU0VEX1ZNX1RSQVBTIDEKICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304275</attachid>
            <date>2017-03-13 10:49:38 -0700</date>
            <delta_ts>2017-03-13 16:25:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169436-20170314024937.patch</filename>
            <type>text/plain</type>
            <size>49725</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZWFmYThmMDU3OWFjMzMxOWE3NWJkN2U5M2FkYzI1ZDNlY2QzNmYwLi42MmI4OGY2ZTU1OWVjMDlk
NDA0ZDRlODgxZDFjZDdiZDUwZDJjOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNy0wMy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBw
b3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5
NDM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwb3J0IFZNVHJhcCB0byBMaW51eCBwb3J0cy4KKyAgICAgICAgV2UgZXh0cmFjdCBN
YWNoaW5lQ29udGV4dCBhY2Nlc3NvcnMgZnJvbSB2YXJpb3VzIHBsYWNlcyAod2FzbS8sIGhlYXAv
IGFuZCB0b29scy8pCisgICAgICAgIGFuZCB1c2UgdGhlbSBpbiBhbGwgdGhlIEpTQyBjb2RlLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50ZXIpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omluc3RydWN0aW9u
UG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVy
czo6bGxpbnRQQyk6CisgICAgICAgICogaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL01hY2hpbmVDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNYWNo
aW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlv
blBvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lQ29udGV4dDo6YXJndW1lbnRQb2ludGVy
PDE+KToKKyAgICAgICAgKEpTQzo6TWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcik6Cisg
ICAgICAgIChKU0M6Ok1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRlcik6Cisg
ICAgICAgICogcnVudGltZS9QbGF0Zm9ybVRocmVhZC5oOgorICAgICAgICAoSlNDOjpwbGF0Zm9y
bVRocmVhZFNpZ25hbCk6CisgICAgICAgICogcnVudGltZS9WTVRyYXBzLmNwcDoKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25h
bENvbnRleHQ6OmFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
ICogdG9vbHMvQ29kZVByb2ZpbGluZy5jcHA6CisgICAgICAgIChKU0M6OnByb2ZpbGluZ1RpbWVy
KToKKyAgICAgICAgKiB0b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6U2lnbmFsQ29udGV4dDo6U2lnbmFsQ29udGV4dCk6CisgICAgICAgIChKU0M6OlNpZ25hbENv
bnRleHQ6OmR1bXApOgorICAgICAgICAqIHRvb2xzL1ZNSW5zcGVjdG9yLmNwcDoKKyAgICAgICAg
KiB3YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0
cmFwSGFuZGxlcik6CisKIDIwMTctMDMtMTMgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwu
Y29tPgogCiAgICAgICAgIFtKU0NdIEl0IHNob3VsZCBiZSBwb3NzaWJsZSBjcmVhdGUgYSBsYWJl
bCBuYW1lZCBsZXQgd2hlbiBwYXJzaW5nIFN0YXRlbWVudCBpbiBub24gc3RyaWN0IG1vZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggMTQ3ODc1ZDdjZmJmOTZmZmZiMDhlMzgyYWZkZmMyNDExNDAxYjY2MC4uNDY4ZWY1MGRhYTMx
NTMxM2FhNzA2Yzk5YWE1OTljY2NiZGY2MWQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0w
My0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXVtMaW51eF0gSW1wbGVtZW50IFZNVHJhcCBpbiBMaW51eCBwb3J0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDM2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFZNVHJhcCBtZWNoYW5p
c20gZm9yIExpbnV4IGFuZCBGcmVlQlNELgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisK
IDIwMTctMDMtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBb
V0syXSBPbmx5IHJlcG9ydCBiYWNrZ3JvdW5kIFdlYlByb2Nlc3NlcyBhcyB1bnJlc3BvbnNpdmUg
aW4gdGhlIGJhY2tncm91bmQgYWZ0ZXIgOTAgc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAwOTIwMGJhMjA4MDM5ODJmOTMwZGM0NDIzZTlhZTgzOTMwYTkyNGRhLi41NDYx
NGFhOTkzMGVjODVhNjk2ZTdhZWU5MGMyMGRlYzJjMTVjYjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQ0MCw2ICsyNDQwLDcgQEAKIAkJRkVFNDNGQ0UxRTY2NDE3MTAwNzdE
NkQxIC8qIFBsYXRmb3JtVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRUU0M0ZDRDFFNjY0MTQwMDA3N0Q2RDEgLyogUGxhdGZvcm1UaHJlYWQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUYw
NDA1MTFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRjA0MDUwMUFBRTY2MkQwMEJE
MjhCMCAvKiBDb21wYXJlQW5kU3dhcFRlc3QuY3BwICovOyB9OwogCQlGRUZENkZDNjFENUU3OTky
MDA4RjJGMEIgLyogSlNTdHJpbmdJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUZENkZDNTFENUU3OTcwMDA4RjJGMEIgLyogSlNTdHJpbmdJ
bmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOTgxRUQ4MjMyODIzNEQ5MUJBRUNDQURFIC8qIE1hY2hpbmVDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyODgwNkUyMTE1NUU0NzhBOTNG
QTdCMDIgLyogTWFjaGluZUNvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC01MDM2LDYgKzUwMzcsNyBA
QAogCQlGRUYwNDA1MDFBQUU2NjJEMDBCRDI4QjAgLyogQ29tcGFyZUFuZFN3YXBUZXN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENvbXBhcmVBbmRTd2FwVGVzdC5j
cHA7IHBhdGggPSBBUEkvdGVzdHMvQ29tcGFyZUFuZFN3YXBUZXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMDQwNTIxQUFFQzRFRDAwQkQyOEIwIC8qIENvbXBhcmVBbmRT
d2FwVGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb21wYXJlQW5kU3dh
cFRlc3QuaDsgcGF0aCA9IEFQSS90ZXN0cy9Db21wYXJlQW5kU3dhcFRlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGRDZGQzUxRDVFNzk3MDAwOEYyRjBCIC8qIEpTU3RyaW5n
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0lubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjg4MDZFMjExNTVFNDc4QTkzRkE3
QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE1hY2hpbmVDb250ZXh0Lmg7IHBhdGggPSBNYWNoaW5lQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02OTM2LDYgKzY5Mzgs
NyBAQAogCQkJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmgg
Ki8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICovLAog
CQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmggKi8s
CisJCQkJMjg4MDZFMjExNTVFNDc4QTkzRkE3QjAyIC8qIE1hY2hpbmVDb250ZXh0LmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
OTM3NCw2ICs5Mzc3LDcgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBh
dHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUY2MzQzNDU3NzI3NEZBRkI5
MzM2QzM4IC8qIE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk4MUVEODIzMjgyMzREOTFCQUVDQ0FERSAvKiBNYWNoaW5lQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tN
YXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2Vy
LmNwcAppbmRleCBmMmQ4Y2IxM2U1MTAxMzYwMmUyY2JmOTk1NmM0ZTE4NWRkZjM2YTZmLi44YTZk
NTU4MTE4NmY1Mjc4MzkxZjA5ZmIwNWE3MGRkZWM2NWRkZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKQEAgLTQ4MSw4NyArNDgx
LDEyIEBAIHNpemVfdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpnZXRSZWdpc3RlcnMoVGhyZWFk
OjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIAogdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6
UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERBUldJTikKLQotI2lm
IF9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4ocmVncy5fX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcnNwKTsKLSNlbGlmIENQVShQUEMpIHx8IENQ
VShQUEM2NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5fX3IxKTsK
LSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3Mu
X19zcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlZ3MuX19zcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5k
aWYKLQotI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkK
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2VsaWYgQ1BV
KFBQQykgfHwgQ1BVKFBQQzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihy
ZWdzLnIxKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0j
ZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCi0KLS8vIGVuZCBPUyhEQVJXSU4pCi0jZWxpZiBPUyhX
SU5ET1dTKQotCi0jaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oKHVpbnRwdHJfdCkgcmVncy5TcCk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5JbnRTcCk7Ci0jZWxpZiBDUFUo
WDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
LkVzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLlJzcCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0
ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyAgICByZXR1
cm4gTWFjaGluZUNvbnRleHQ6OnN0YWNrUG9pbnRlcihyZWdzKTsKICNlbGlmIFVTRShQVEhSRUFE
UykKIAotI2lmIE9TKEZSRUVCU0QpICYmIEVOQUJMRShKSVQpCi0KLSNpZiBDUFUoWDg2KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX2VzcCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3JzcCk7Ci0j
ZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19TUF0pOwotI2VsaWYgQ1BVKEFS
TTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF9zcCk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5tY19yZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0j
ZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIEVOQUJMRShKSVQpCi0KLSNpZiBD
UFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSBy
ZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU1BdKTsKLSNlbGlmIENQVShYODZfNjQpCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGlu
ZUNvbnRleHQuZ3JlZ3NbUkVHX1JTUF0pOwotI2VsaWYgQ1BVKEFSTSkKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1f
c3ApOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnNwKTsKLSNlbGlmIENQVShNSVBTKQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0LmdyZWdzWzI5XSk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJl
Ci0jZW5kaWYKLQorI2lmIChPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIEVO
QUJMRShKSVQpCisgICAgcmV0dXJuIE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIocmVncy5t
YWNoaW5lQ29udGV4dCk7CiAjZWxzZQogICAgIHZvaWQqIHN0YWNrQmFzZSA9IDA7CiAgICAgc2l6
ZV90IHN0YWNrU2l6ZSA9IDA7CkBAIC01ODYsODIgKzUxMSwxMCBAQCB2b2lkKiBNYWNoaW5lVGhy
ZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OnN0YWNrUG9pbnRlcigpIGNvbnN0CiAjaWYgRU5BQkxF
KFNBTVBMSU5HX1BST0ZJTEVSKQogdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0
ZXJzOjpmcmFtZVBvaW50ZXIoKSBjb25zdAogewotI2lmIE9TKERBUldJTikKLQotI2lmIF9fREFS
V0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5fX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcmJwKTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19yWzExXSk7Ci0jZWxpZiBDUFUoQVJNNjQp
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX194WzI5XSk7Ci0jZWxz
ZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2Vsc2UgLy8gIV9fREFS
V0lOX1VOSVgwMwotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ocmVncy5lc3ApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVncy5yc3ApOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0KLSNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKLQotLy8gZW5kIE9TKERB
UldJTikKLSNlbGlmIE9TKFdJTkRPV1MpCi0KLSNpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLlIxMSk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVl
ZCB0aGlzPwotI2VsaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oKHVpbnRwdHJfdCkgcmVncy5FYnApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SYnApOwotI2Vsc2UKLSNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZSRUVCU0QpCi0K
LSNpZiBDUFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0
cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2VicCk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0Lm1jX3JicCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19G
UF0pOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
PigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX2dwcmVncy5ncF94WzI5XSk7Ci0j
ZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRw
dHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yZWdzWzMwXSk7Ci0jZWxzZQotI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0K
LS8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4
dC5oLgotI2lmIENQVShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1
aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VCUF0pOwotI2VsaWYgQ1BV
KFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkg
cmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7Ci0jZWxpZiBDUFUoQVJNKQotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVD
b250ZXh0LmFybV9mcCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1syOV0pOwot
I2VsaWYgQ1BVKE1JUFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsKLSNlbHNlCi0jZXJyb3IgVW5r
bm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dT
KQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKHJlZ3MpOworI2VsaWYg
T1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCisgICAgcmV0dXJuIE1hY2hpbmVDb250
ZXh0OjpmcmFtZVBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQogI2Vycm9yIE5l
ZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0
aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTY2OSwxNzIgKzUyMiwyMiBAQCB2b2lkKiBNYWNoaW5l
VGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmZyYW1lUG9pbnRlcigpIGNvbnN0CiAKIHZvaWQq
IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5zdHJ1Y3Rpb25Qb2ludGVyKCkg
Y29uc3QKIHsKLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RBUldJTl9VTklYMDMKLQotI2lmIENQ
VShYODYpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlZ3MuX19laXApOwot
I2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5fX3JpcCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPihyZWdzLl9fcGMpOwotI2VsaWYgQ1BVKEFSTTY0KQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPihyZWdzLl9fcGMpOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0KLSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2KQot
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLmVpcCk7Ci0jZWxpZiBDUFUo
WDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLnJpcCk7Ci0j
ZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VuZGlmIC8vIF9f
REFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQotI2VsaWYgT1MoV0lORE9XUykKLQot
I2lmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MuUGMpOwotI2VsaWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuRWlwKTsKLSNl
bGlmIENQVShYODZfNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MuUmlwKTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNl
bmRpZgotCi0jZWxpZiBPUyhGUkVFQlNEKQotCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19l
aXApOwotI2VsaWYgQ1BVKFg4Nl82NCkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5tY19yaXApOwotI2VsaWYgQ1BVKEFS
TSkKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfUENdKTsKLSNlbGlmIENQVShBUk02NCkKLSAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29u
dGV4dC5tY19ncHJlZ3MuZ3BfZWxyKTsKLSNlbGlmIENQVShNSVBTKQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1jX3Bj
KTsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgotCi0jZWxpZiBk
ZWZpbmVkKF9fR0xJQkNfXykKLQotLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9u
IGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCi0jaWYgQ1BVKFg4NikKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5ncmVnc1tS
RUdfRUlQXSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19SSVBdKTsK
LSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50
cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuYXJtX3BjKTsKLSNlbGlmIENQVShBUk02NCkKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5l
Q29udGV4dC5wYyk7Ci0jZWxpZiBDUFUoTUlQUykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5wYyk7Ci0jZWxzZQotI2Vy
cm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQorI2lmIE9TKERBUldJTikgfHwgT1Mo
V0lORE9XUykKKyAgICByZXR1cm4gTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihy
ZWdzKTsKKyNlbGlmIE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJldHVy
biBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJlZ3MubWFjaGluZUNvbnRleHQp
OwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRl
ciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCiB9CisKIHZvaWQq
IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6bGxpbnRQQygpIGNvbnN0CiB7CiAg
ICAgLy8gTExJbnQgdXNlcyByZWdUNCBhcyBQQy4KLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBfX0RB
UldJTl9VTklYMDMKLQotI2lmIENQVShYODYpCi0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJ
bnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fZXNpKTsKLSNlbGlmIENQVShYODZfNjQp
Ci0gICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAi
V3JvbmcgTExJbnQgUEMuIik7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJl
Z3MuX19yOCk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50
UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExMSW50IFBDLiIpOwotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihyZWdzLl9fcls4XSk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0g
ICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBBUk02NFJlZ2lzdGVyczo6eDQsICJX
cm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVn
cy5fX3hbNF0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0K
LSNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMKLSNpZiBDUFUoWDg2KQotICAgIHN0YXRpY19hc3Nl
cnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVnaXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQQy4i
KTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVncy5lc2kpOwotI2VsaWYg
Q1BVKFg4Nl82NCkKLSAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lz
dGVyczo6cjgsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ocmVncy5yOCk7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0j
ZW5kaWYKLQotI2VuZGlmIC8vIF9fREFSV0lOX1VOSVgwMwotCi0vLyBlbmQgT1MoREFSV0lOKQot
I2VsaWYgT1MoV0lORE9XUykKLQotI2lmIENQVShBUk0pCi0gICAgc3RhdGljX2Fzc2VydChMTElu
dDo6TExJbnRQQyA9PSBBUk1SZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MuUjgpOwotI2Vs
aWYgQ1BVKE1JUFMpCi0jZXJyb3IgRG9udCBrbm93IHdoYXQgdG8gZG8gd2l0aCBtaXBzLiBEbyB3
ZSBldmVuIG5lZWQgdGhpcz8KLSNlbGlmIENQVShYODYpCi0gICAgc3RhdGljX2Fzc2VydChMTElu
dDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25nIExMSW50IFBDLiIpOwotICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLkVzaSk7Ci0j
ZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2
UmVnaXN0ZXJzOjpyMTAsICJXcm9uZyBMTEludCBQQy4iKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5SMTApOwotI2Vsc2UKLSNlcnJvciBVbmtu
b3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIE9TKEZSRUVCU0QpCi0KLSNpZiBDUFUo
WDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0Lm1jX2VzaSk7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lm1j
X3I4KTsKLSNlbGlmIENQVShBUk0pCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuX19ncmVnc1tfUkVHX1I4XSk7Ci0jZWxp
ZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRy
X3QpIHJlZ3MubWFjaGluZUNvbnRleHQubWNfZ3ByZWdzLmdwX3hbNF0pOwotI2VsaWYgQ1BVKE1J
UFMpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3Mu
bWFjaGluZUNvbnRleHQubWNfcmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotCi0vLyBUaGUgZm9s
bG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KLSNpZiBD
UFUoWDg2KQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSBy
ZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FU0ldKTsKLSNlbGlmIENQVShYODZfNjQpCi0g
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGlu
ZUNvbnRleHQuZ3JlZ3NbUkVHX1I4XSk7Ci0jZWxpZiBDUFUoQVJNKQotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmFybV9y
OCk7Ci0jZWxpZiBDUFUoQVJNNjQpCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQucmVnc1s0XSk7Ci0jZWxpZiBDUFUoTUlQ
UykKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJfdCkgcmVncy5t
YWNoaW5lQ29udGV4dC5ncmVnc1sxMl0pOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQotI2VuZGlmCi0KKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgcmV0dXJu
IE1hY2hpbmVDb250ZXh0OjpsbGludEluc3RydWN0aW9uUG9pbnRlcihyZWdzKTsKKyNlbGlmIE9T
KEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKQorICAgIHJldHVybiBNYWNoaW5lQ29udGV4
dDo6bGxpbnRJbnN0cnVjdGlvblBvaW50ZXIocmVncy5tYWNoaW5lQ29udGV4dCk7CiAjZWxzZQog
I2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBMTEludFBDIGZvciBhbm90aGVyIHRocmVhZCBv
biB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFjaGluZVN0YWNrTWFya2VyLmgKaW5kZXggNzk3ODQxMmZiYWExYmQwZTQ5YjliMzY4NmJhMjhi
MzU0Nzc1MjkzYy4uOTlhNDI3YTQ4OGNjMjhkNjczY2IyYTAzNjE4NzY3ZDE3OWI3N2I5YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAg
LTIxLDYgKzIxLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4
dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTdGF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC04MCwyNSArODEsOCBAQCBjbGFzcyBNYWNo
aW5lVGhyZWFkcyB7CiAgICAgICAgICAgICB2b2lkKiBsbGludFBDKCkgY29uc3Q7CiAjZW5kaWYg
Ly8gRU5BQkxFKFNBTVBMSU5HX1BST0ZJTEVSKQogICAgICAgICAgICAgCi0jaWYgT1MoREFSV0lO
KQotI2lmIENQVShYODYpCi0gICAgICAgICAgICB0eXBlZGVmIGkzODZfdGhyZWFkX3N0YXRlX3Qg
UGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgICAgICAgICAgdHlwZWRl
ZiB4ODZfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKLSNlbGlmIENQVShQUEMp
Ci0gICAgICAgICAgICB0eXBlZGVmIHBwY190aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVy
czsKLSNlbGlmIENQVShQUEM2NCkKLSAgICAgICAgICAgIHR5cGVkZWYgcHBjX3RocmVhZF9zdGF0
ZTY0X3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJNKQotICAgICAgICAgICAgdHlw
ZWRlZiBhcm1fdGhyZWFkX3N0YXRlX3QgUGxhdGZvcm1SZWdpc3RlcnM7Ci0jZWxpZiBDUFUoQVJN
NjQpCi0gICAgICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVn
aXN0ZXJzOwotI2Vsc2UKLSNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQotI2VuZGlmCi0gICAg
ICAgICAgICAKLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgICAgICAgICB0eXBlZGVmIENPTlRFWFQg
UGxhdGZvcm1SZWdpc3RlcnM7CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgICAg
ICAgICAgdXNpbmcgUGxhdGZvcm1SZWdpc3RlcnMgPSBNYWNoaW5lQ29udGV4dDo6UGxhdGZvcm1S
ZWdpc3RlcnM7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCiAgICAgICAgICAgICBzdHJ1Y3QgUGxhdGZv
cm1SZWdpc3RlcnMgewogICAgICAgICAgICAgICAgIHB0aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZkNGZjOWIwOTQyNGVhMTlmZjE3MDgxYzZlNDlhMTAzZmJkZmY5M2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5o
CkBAIC0wLDAgKzEsNjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIkxMSW50UENSYW5nZXMuaCIKKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKEZSRUVCU0QpIHx8
IGRlZmluZWQoX19HTElCQ19fKQorI2luY2x1ZGUgPHNpZ25hbC5oPgorLy8gVXNpbmcgc2lnbmFs
LmggZGlkbid0IG1ha2UgbWNvbnRleHRfdCBhbmQgdWNvbnRleHRfdCBhdmFpbGFibGUgb24gRnJl
ZUJTRC4KKy8vIFRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkIGluIEZyZWVCU0QgMTEuMC1DVVJSRU5U
LCBzbyB0aGlzIHdvcmthcm91bmQgY2FuIGJlCisvLyByZW1vdmVkIGFmdGVyIEZyZWVCU0QgMTAu
eCBnb2VzIEVPTC4KKy8vIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1
Zy5jZ2k/aWQ9MjA3MDc5CisjaWYgT1MoRlJFRUJTRCkKKyNpbmNsdWRlIDx1Y29udGV4dC5oPgor
I2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgTWFjaGluZUNvbnRl
eHQgeworCisjaWYgT1MoREFSV0lOKQorCisjaWYgQ1BVKFg4NikKK3R5cGVkZWYgaTM4Nl90aHJl
YWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShYODZfNjQpCit0eXBlZGVm
IHg4Nl90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFBQQykK
K3R5cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgQ1BV
KFBQQzY0KQordHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsK
KyNlbGlmIENQVShBUk0pCit0eXBlZGVmIGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lz
dGVyczsKKyNlbGlmIENQVShBUk02NCkKK3R5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxh
dGZvcm1SZWdpc3RlcnM7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5k
aWYKKworI2VsaWYgT1MoV0lORE9XUykKKwordHlwZWRlZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0
ZXJzOworCisjZW5kaWYKKworCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQoraW5saW5l
IHZvaWQqJiBzdGFja1BvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgT1Mo
REFSV0lOKQorI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yc3ApOworI2VsaWYg
Q1BVKFBQQykgfHwgQ1BVKFBQQzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
Jj4ocmVncy5fX3IxKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNKSB8fCBDUFUo
QVJNNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fc3ApOwor
I2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFf
X0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPihyZWdzLmVzcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yc3ApOworI2VsaWYgQ1BVKFBQQykgfHwgQ1BVKFBQ
QzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5yMSk7CisjZWxz
ZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VuZGlmIC8vIF9fREFS
V0lOX1VOSVgwMworCisjZWxzZSAvLyAhT1MoREFSV0lOKQorCisjaWYgQ1BVKEFSTSkKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLlNwKTsKKyNl
bGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIHJlZ3MuSW50U3ApOworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVzcCk7CisjZWxpZiBDUFUoWDg2XzY0
KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3Mu
UnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5k
aWYgLy8gT1MoREFSV0lOKQorfQorCitpbmxpbmUgdm9pZCogc3RhY2tQb2ludGVyKGNvbnN0IFBs
YXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBzdGFja1BvaW50ZXIoY29uc3Rf
Y2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30KKyNlbmRpZiAvLyBPUyhEQVJXSU4p
IHx8IE9TKFdJTkRPV1MpCisKKworI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNEKSB8fCBk
ZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJN
KSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCitpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRl
cihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0
dXJuIHN0YWNrUG9pbnRlcihtYWNoaW5lQ29udGV4dC0+X19zcyk7CisjZWxpZiBPUyhGUkVFQlNE
KQorCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29u
dGV4dC5tY19yc3ApOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dyZWdzW19SRUdfU1BdKTsK
KyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3Bfc3ApOworI2VsaWYgQ1BVKE1J
UFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFj
aGluZUNvbnRleHQubWNfcmVnc1syOV0pOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisjaWYgQ1BVKFg4NikK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5l
Q29udGV4dC5ncmVnc1tSRUdfRVNQXSk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19SU1BdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuYXJtX3NwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5zcCk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1syOV0pOwor
I2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisjZW5kaWYKK30KKwor
aW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4
dCkKK3sKKyAgICByZXR1cm4gc3RhY2tQb2ludGVyKGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1h
Y2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYgLy8gT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0Qp
IHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQ
VShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkKKworCisjaWYgT1MoREFSV0lOKSB8
fCBPUyhXSU5ET1dTKQoraW5saW5lIHZvaWQqJiBmcmFtZVBvaW50ZXIoUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ3MpCit7CisjaWYgT1MoREFSV0lOKQorCisjaWYgX19EQVJXSU5fVU5JWDAzCisKKyNp
ZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX2Vi
cCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQq
Jj4ocmVncy5fX3JicCk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yWzddKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fclsxMV0pOworI2VsaWYgQ1BVKEFS
TTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbMjldKTsK
KyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZSAvLyAh
X19EQVJXSU5fVU5JWDAzCisKKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5lc3ApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MucnNwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBB
cmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8gX19EQVJXSU5fVU5JWDAzCisKKyNlbHNl
IC8vICFPUyhEQVJXSU4pCisKKyNpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjExKTsKKyNlbGlmIENQVShNSVBTKQorI2Vy
cm9yIERvbnQga25vdyB3aGF0IHRvIGRvIHdpdGggbWlwcy4gRG8gd2UgZXZlbiBuZWVkIHRoaXM/
CisjZWxpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIHJlZ3MuRWJwKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVncy5SYnApOworI2Vsc2UKKyNlcnJv
ciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRpZiAvLyBPUyhEQVJXSU4pCit9
CisKK2lubGluZSB2b2lkKiBmcmFtZVBvaW50ZXIoY29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MpCit7CisgICAgcmV0dXJuIGZyYW1lUG9pbnRlcihjb25zdF9jYXN0PFBsYXRmb3JtUmVnaXN0
ZXJzJj4ocmVncykpOworfQorI2VuZGlmIC8vIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKwor
CisjaWYgT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKSkg
JiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwg
Q1BVKE1JUFMpKSkKK2lubGluZSB2b2lkKiYgZnJhbWVQb2ludGVyKG1jb250ZXh0X3QmIG1hY2hp
bmVDb250ZXh0KQoreworI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gZnJhbWVQb2ludGVyKG1h
Y2hpbmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0Lm1jX2VicCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JicCk7CisjZWxp
ZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19GUF0pOworI2VsaWYgQ1BVKEFSTTY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVD
b250ZXh0Lm1jX2dwcmVncy5ncF94WzI5XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19y
ZWdzWzMwXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVw
ZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3Jl
Z3NbUkVHX0VCUF0pOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUkJQXSk7
CisjZWxpZiBDUFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVp
bnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmFybV9mcCk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRl
eHQucmVnc1syOV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbMzBdKTsKKyNlbHNl
CisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZWxzZQorI2Vycm9yIE5l
ZWQgYSB3YXkgdG8gZ2V0IHRoZSBmcmFtZSBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0
aGlzIHBsYXRmb3JtCisjZW5kaWYKK30KKworaW5saW5lIHZvaWQqIGZyYW1lUG9pbnRlcihjb25z
dCBtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICByZXR1cm4gZnJhbWVQb2ludGVy
KGNvbnN0X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYgLy8g
T1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgKENQ
VShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1J
UFMpKSkKKworCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQoraW5saW5lIHZvaWQqJiBp
bnN0cnVjdGlvblBvaW50ZXIoUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisjaWYgT1MoREFS
V0lOKQorI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19laXApOworI2VsaWYgQ1BVKFg4Nl82NCkKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19yaXApOworI2VsaWYgQ1BV
KEFSTV9USFVNQjIpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKiY+KHJlZ3MuX19wYyk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJj
aGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UgLy8gIV9fREFSV0lOX1VOSVgwMworI2lmIENQVShY
ODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLmVpcCk7CisjZWxp
ZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5y
aXApOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbmRp
ZiAvLyBfX0RBUldJTl9VTklYMDMKKworI2Vsc2UgLy8gIU9TKERBUldJTikKKworI2lmIENQVShB
Uk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgcmVn
cy5QYyk7CisjZWxpZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtub3cgd2hhdCB0byBkbyB3aXRo
IG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BVKFg4NikKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSByZWdzLkVpcCk7CisjZWxpZiBD
UFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuUmlwKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRp
ZgorCisjZW5kaWYgLy8gT1MoREFSV0lOKQorfQorCitpbmxpbmUgdm9pZCogaW5zdHJ1Y3Rpb25Q
b2ludGVyKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIHJldHVybiBpbnN0
cnVjdGlvblBvaW50ZXIoY29uc3RfY2FzdDxQbGF0Zm9ybVJlZ2lzdGVycyY+KHJlZ3MpKTsKK30K
KyNlbmRpZiAvLyBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisKKworI2lmIE9TKERBUldJTikg
fHwgKChPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBD
UFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCisKK2lu
bGluZSB2b2lkKiYgaW5zdHJ1Y3Rpb25Qb2ludGVyKG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0
KQoreworI2lmIE9TKERBUldJTikKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKG1hY2hp
bmVDb250ZXh0LT5fX3NzKTsKKyNlbGlmIE9TKEZSRUVCU0QpCisKKyNpZiBDUFUoWDg2KQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250
ZXh0Lm1jX2VpcCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0Lm1jX3JpcCk7CisjZWxpZiBD
UFUoQVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYp
IG1hY2hpbmVDb250ZXh0Ll9fZ3JlZ3NbX1JFR19QQ10pOworI2VsaWYgQ1BVKEFSTTY0KQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250
ZXh0Lm1jX2dwcmVncy5ncF9lbHIpOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcGMpOwor
I2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xp
YmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19FSVBd
KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0pOworI2VsaWYgQ1BV
KEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBt
YWNoaW5lQ29udGV4dC5hcm1fcGMpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1hY2hpbmVDb250ZXh0LnBjKTsKKyNl
bGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIG1hY2hpbmVDb250ZXh0LnBjKTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRl
Y3R1cmUKKyNlbmRpZgorCisjZWxzZQorI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRoZSBpbnN0
cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlzIHBsYXRmb3JtCisjZW5k
aWYKK30KKworaW5saW5lIHZvaWQqIGluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90
JiBtYWNoaW5lQ29udGV4dCkKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0
X2Nhc3Q8bWNvbnRleHRfdCY+KG1hY2hpbmVDb250ZXh0KSk7Cit9CisjZW5kaWYgLy8gT1MoREFS
V0lOKSB8fCAoKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19HTElCQ19fKSkgJiYgKENQVShYODYp
IHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkK
KworCisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQordGVtcGxhdGU8c2l6ZV90IE4+Cit2
b2lkKiYgYXJndW1lbnRQb2ludGVyKFBsYXRmb3JtUmVnaXN0ZXJzJik7CisKK3RlbXBsYXRlPD4K
K2lubGluZSB2b2lkKiYgYXJndW1lbnRQb2ludGVyPDE+KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdz
KQoreworI2lmIE9TKERBUldJTikKKyNpZiBfX0RBUldJTl9VTklYMDMKKworI2lmIENQVShYODYp
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fZWR4KTsKKyNlbGlm
IENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9f
cnNpKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKSB8fCBDUFUoQVJNKQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3JbMV0pOworI2VsaWYgQ1BVKEFSTTY0KQorICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbMV0pOworI2Vsc2UKKyNl
cnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJTl9V
TklYMDMKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PihyZWdzLmVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqJj4ocmVncy5yc2kpOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVy
ZQorI2VuZGlmCisKKyNlbmRpZiAvLyBfX0RBUldJTl9VTklYMDMKKworI2Vsc2UgLy8gIU9TKERB
UldJTikKKworI2lmIENQVShBUk0pCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgcmVncy5SMSk7CisjZWxpZiBDUFUoTUlQUykKKyNlcnJvciBEb250IGtu
b3cgd2hhdCB0byBkbyB3aXRoIG1pcHMuIERvIHdlIGV2ZW4gbmVlZCB0aGlzPworI2VsaWYgQ1BV
KFg4NikKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBy
ZWdzLkVkeCk7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUmR4KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBB
cmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8gT1MoREFSV0lOKQorfQorCit0ZW1wbGF0
ZTxzaXplX3QgTj4KK2lubGluZSB2b2lkKiBhcmd1bWVudFBvaW50ZXIoY29uc3QgUGxhdGZvcm1S
ZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50UG9pbnRlcjxOPihjb25zdF9j
YXN0PFBsYXRmb3JtUmVnaXN0ZXJzJj4ocmVncykpOworfQorI2VuZGlmIC8vIE9TKERBUldJTikg
fHwgT1MoV0lORE9XUykKKworCisjaWYgT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0QpIHx8IGRl
ZmluZWQoX19HTElCQ19fKSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0p
IHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkKK3RlbXBsYXRlPHVuc2lnbmVkIE4+Cit2b2lk
KiYgYXJndW1lbnRQb2ludGVyKG1jb250ZXh0X3QmKTsKKwordGVtcGxhdGU8PgoraW5saW5lIHZv
aWQqJiBhcmd1bWVudFBvaW50ZXI8MT4obWNvbnRleHRfdCYgbWFjaGluZUNvbnRleHQpCit7Cisj
aWYgT1MoREFSV0lOKQorICAgIHJldHVybiBhcmd1bWVudFBvaW50ZXI8MT4obWFjaGluZUNvbnRl
eHQtPl9fc3MpOworI2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNf
ZWR4KTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcnNpKTsKKyNlbGlmIENQVShBUk0p
CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGlu
ZUNvbnRleHQuX19ncmVnc1tfUkVHX1IxXSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNf
Z3ByZWdzLmdwX3hbMV0pOworI2VsaWYgQ1BVKE1JUFMpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfcmVnc1s1XSk7Cisj
ZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5l
ZChfX0dMSUJDX18pCisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGli
YydzIHN5cy91Y29udGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VEWF0p
OworI2VsaWYgQ1BVKFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUlNJXSk7CisjZWxpZiBDUFUo
QVJNKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LmFybV9yMSk7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQucmVnc1sxXSk7
CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1
aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5ncmVnc1s1XSk7CisjZWxzZQorI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdl
dCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQor
I2VuZGlmCit9CisKK3RlbXBsYXRlPHVuc2lnbmVkIE4+CitpbmxpbmUgdm9pZCogYXJndW1lbnRQ
b2ludGVyKGNvbnN0IG1jb250ZXh0X3QmIG1hY2hpbmVDb250ZXh0KQoreworICAgIHJldHVybiBh
cmd1bWVudFBvaW50ZXI8Tj4oY29uc3RfY2FzdDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQp
KTsKK30KKyNlbmRpZiAvLyBPUyhEQVJXSU4pIHx8ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChf
X0dMSUJDX18pKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BV
KEFSTTY0KSB8fCBDUFUoTUlQUykpKQorCisjaWYgRU5BQkxFKEpJVCkKKyNpZiBPUyhEQVJXSU4p
IHx8IE9TKFdJTkRPV1MpCitpbmxpbmUgdm9pZComIGxsaW50SW5zdHJ1Y3Rpb25Qb2ludGVyKFBs
YXRmb3JtUmVnaXN0ZXJzJiByZWdzKQoreworICAgIC8vIExMSW50IHVzZXMgcmVnVDQgYXMgUEMu
CisjaWYgT1MoREFSV0lOKQorI2lmIF9fREFSV0lOX1VOSVgwMworCisjaWYgQ1BVKFg4NikKKyAg
ICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IFg4NlJlZ2lzdGVyczo6ZXNpLCAiV3Jv
bmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdz
Ll9fZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChMTEludDo6TExJ
bnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMuIik7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLl9fcjgpOworI2VsaWYgQ1BVKEFSTSkKKyAg
ICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTEludFBDID09IEFSTVJlZ2lzdGVyczo6cjgsICJXcm9u
ZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KHJlZ3Mu
X19yWzhdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBzdGF0aWNfYXNzZXJ0KExMSW50OjpMTElu
dFBDID09IEFSTTY0UmVnaXN0ZXJzOjp4NCwgIldyb25nIExMSW50IFBDLiIpOworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqJj4ocmVncy5fX3hbNF0pOworI2Vsc2UKKyNlcnJvciBV
bmtub3duIEFyY2hpdGVjdHVyZQorI2VuZGlmCisKKyNlbHNlIC8vICFfX0RBUldJTl9VTklYMDMK
KyNpZiBDUFUoWDg2KQorICAgIHN0YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gWDg2UmVn
aXN0ZXJzOjplc2ksICJXcm9uZyBMTEludCBQQy4iKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KHJlZ3MuZXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fz
c2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnI4LCAiV3JvbmcgTExJbnQgUEMu
Iik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPihyZWdzLnI4KTsKKyNlbHNl
CisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYgLy8gX19EQVJX
SU5fVU5JWDAzCisKKyNlbHNlIC8vICFPUyhEQVJXSU4pCisKKyNpZiBDUFUoQVJNKQorICAgIHN0
YXRpY19hc3NlcnQoTExJbnQ6OkxMSW50UEMgPT0gQVJNUmVnaXN0ZXJzOjpyOCwgIldyb25nIExM
SW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJf
dCYpIHJlZ3MuUjgpOworI2VsaWYgQ1BVKE1JUFMpCisjZXJyb3IgRG9udCBrbm93IHdoYXQgdG8g
ZG8gd2l0aCBtaXBzLiBEbyB3ZSBldmVuIG5lZWQgdGhpcz8KKyNlbGlmIENQVShYODYpCisgICAg
c3RhdGljX2Fzc2VydChMTEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OmVzaSwgIldyb25n
IExMSW50IFBDLiIpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRw
dHJfdCYpIHJlZ3MuRXNpKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgc3RhdGljX2Fzc2VydChM
TEludDo6TExJbnRQQyA9PSBYODZSZWdpc3RlcnM6OnIxMCwgIldyb25nIExMSW50IFBDLiIpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIHJlZ3MuUjEw
KTsKKyNlbHNlCisjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCisjZW5kaWYg
Ly8gT1MoREFSV0lOKQorfQorCitpbmxpbmUgdm9pZCogbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIo
Y29uc3QgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MpCit7CisgICAgcmV0dXJuIGxsaW50SW5zdHJ1
Y3Rpb25Qb2ludGVyKGNvbnN0X2Nhc3Q8UGxhdGZvcm1SZWdpc3RlcnMmPihyZWdzKSk7Cit9Cisj
ZW5kaWYgLy8gT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorCisKKyNpZiBPUyhEQVJXSU4pIHx8
ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pKSAmJiAoQ1BVKFg4NikgfHwgQ1BV
KFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpKQoraW5saW5l
IHZvaWQqJiBsbGludEluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4
dCkKK3sKKyAgICAvLyBMTEludCB1c2VzIHJlZ1Q0IGFzIFBDLgorI2lmIE9TKERBUldJTikKKyAg
ICByZXR1cm4gbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIobWFjaGluZUNvbnRleHQtPl9fc3MpOwor
I2VsaWYgT1MoRlJFRUJTRCkKKworI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQubWNfZXNpKTsKKyNlbGlm
IENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0
cl90JikgbWFjaGluZUNvbnRleHQubWNfcjgpOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5fX2dy
ZWdzW19SRUdfUjhdKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19ncHJlZ3MuZ3BfeFs0
XSk7CisjZWxpZiBDUFUoTUlQUykKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+
KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5tY19yZWdzWzEyXSk7CisjZWxzZQorI2Vycm9y
IFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZChfX0dMSUJDX18p
CisKKy8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29u
dGV4dC5oLgorI2lmIENQVShYODYpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCom
PigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX0VTSV0pOworI2VsaWYgQ1BV
KFg4Nl82NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKiY+KCh1aW50cHRyX3Qm
KSBtYWNoaW5lQ29udGV4dC5ncmVnc1tSRUdfUjhdKTsKKyNlbGlmIENQVShBUk0pCisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZComPigodWludHB0cl90JikgbWFjaGluZUNvbnRleHQu
YXJtX3I4KTsKKyNlbGlmIENQVShBUk02NCkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKiY+KCh1aW50cHRyX3QmKSBtYWNoaW5lQ29udGV4dC5yZWdzWzRdKTsKKyNlbGlmIENQVShN
SVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqJj4oKHVpbnRwdHJfdCYpIG1h
Y2hpbmVDb250ZXh0LmdyZWdzWzEyXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0
dXJlCisjZW5kaWYKKworI2Vsc2UKKyNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgTExJbnRQ
QyBmb3IgYW5vdGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQorI2VuZGlmCit9CisKK2lubGlu
ZSB2b2lkKiBsbGludEluc3RydWN0aW9uUG9pbnRlcihjb25zdCBtY29udGV4dF90JiBtYWNoaW5l
Q29udGV4dCkKK3sKKyAgICByZXR1cm4gbGxpbnRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3RfY2Fz
dDxtY29udGV4dF90Jj4obWFjaGluZUNvbnRleHQpKTsKK30KKyNlbmRpZiAvLyBPUyhEQVJXSU4p
IHx8ICgoT1MoRlJFRUJTRCkgfHwgZGVmaW5lZChfX0dMSUJDX18pKSAmJiAoQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKEFSTTY0KSB8fCBDUFUoTUlQUykpKQorI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9QbGF0Zm9ybVRocmVhZC5oCmluZGV4IGJmNzU0ZmRlYTUzZmU5NWZjMzgyMzc4ZmJkYmQy
YTFiMDY5M2RiNzQuLmIwNjFlZTlkMTFjOTU3MTFmM2RlMjY2ZGViMDhiYzYyYzhiMDI0YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1BsYXRmb3JtVGhyZWFkLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUGxhdGZvcm1UaHJlYWQuaApAQCAt
MjksNiArMjksMTAgQEAKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIAorI2lmIFVTRShQ
VEhSRUFEUykgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2lnbmFs
Lmg+CisjZW5kaWYKKwogI2lmIE9TKERBUldJTikKICNpbmNsdWRlIDxtYWNoL3RocmVhZF9hY3Qu
aD4KICNlbGlmIE9TKFdJTkRPV1MpCkBAIC02Myw2ICs2NywxMiBAQCBpbmxpbmUgYm9vbCBwbGF0
Zm9ybVRocmVhZFNpZ25hbChQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVhZCwgaW50IHNpZ25h
bE51bWJlcgogICAgIGludCBlcnJObyA9IHB0aHJlYWRfa2lsbChwdGhyZWFkSUQsIHNpZ25hbE51
bWJlcik7CiAgICAgcmV0dXJuICFlcnJObzsgLy8gQSAwIGVyck5vIG1lYW5zIHN1Y2Nlc3MuCiB9
CisjZWxpZiBVU0UoUFRIUkVBRFMpCitpbmxpbmUgYm9vbCBwbGF0Zm9ybVRocmVhZFNpZ25hbChQ
bGF0Zm9ybVRocmVhZCBwdGhyZWFkSUQsIGludCBzaWduYWxOdW1iZXIpCit7CisgICAgaW50IGVy
ck5vID0gcHRocmVhZF9raWxsKHB0aHJlYWRJRCwgc2lnbmFsTnVtYmVyKTsKKyAgICByZXR1cm4g
IWVyck5vOyAvLyBBIDAgZXJyTm8gbWVhbnMgc3VjY2Vzcy4KK30KICNlbmRpZgogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
VHJhcHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKaW5k
ZXggZWUwN2UwNTg2ZTEyNzliNmVmNzMxOTBjYTkxOTM1MWYzOWFlMjEwZS4uMTZiMDViZTAzOWNi
Njg5ZjBmMzFjNmMyNDM0MTYxNjhiY2E3OGExMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk1UcmFwcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1UcmFwcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25I
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJMTEludFBDUmFu
Z2VzLmgiCisjaW5jbHVkZSAiTWFjaGluZUNvbnRleHQuaCIKICNpbmNsdWRlICJNYWNoaW5lU3Rh
Y2tNYXJrZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlZNLmgi
CkBAIC01Niw3OSArNTcsMzEgQEAgQUxXQVlTX0lOTElORSBWTSYgVk1UcmFwczo6dm0oKSBjb25z
dAogc3RydWN0IHNpZ2FjdGlvbiBvcmlnaW5hbFNpZ3VzcjFBY3Rpb247CiBzdHJ1Y3Qgc2lnYWN0
aW9uIG9yaWdpbmFsU2lndHJhcEFjdGlvbjsKIAotI2lmIENQVShYODZfNjQpCi0KIHN0cnVjdCBT
aWduYWxDb250ZXh0IHsKICAgICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQog
ICAgICAgICA6IG1jb250ZXh0KG1jb250ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJl
dF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3JpcCkpCi0gICAgICAgICwgc3RhY2tQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcnNwKSkKLSAgICAg
ICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X19yYnApKQorICAgICAgICAsIHRyYXBQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2lu
dGVyKG1jb250ZXh0KSkKKyAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6OnN0
YWNrUG9pbnRlcihtY29udGV4dCkpCisgICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250
ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRleHQpKQogICAgIHsKKyNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoWDg2KQogICAgICAgICAvLyBPbiBYODZfNjQsIFNJR1RSQVAgcmVwb3J0cyB0aGUgYWRkcmVz
cyBhZnRlciB0aGUgdHJhcHBpbmcgUEMuIFNvLCBkZWMgYnkgMS4KICAgICAgICAgdHJhcFBDID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4odHJhcFBDKSAtIDE7CisjZW5kaWYKICAgICB9CiAK
ICAgICB2b2lkIGFkanVzdFBDVG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCiAgICAgewot
ICAgICAgICBtY29udGV4dC0+X19zcy5fX3JpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih0cmFwUEMpOwotICAgIH0KLQotICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OwotICAgIHZvaWQq
IHRyYXBQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0gICAgdm9pZCogZnJhbWVQb2ludGVy
OwotfTsKLSAgICAKLSNlbGlmIENQVShYODYpCi0KLXN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAg
ICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0
KG1jb250ZXh0KQotICAgICAgICAsIHRyYXBQQyhyZWludGVycHJldF9jYXN0PHZvaWQqPihtY29u
dGV4dC0+X19zcy5fX2VpcCkpCi0gICAgICAgICwgc3RhY2tQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fZXNwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIo
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19lYnApKQotICAgIHsKLSAg
ICAgICAgLy8gT24gWDg2LCBTSUdUUkFQIHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRy
YXBwaW5nIFBDLiBTbywgZGVjIGJ5IDEuCi0gICAgICAgIHRyYXBQQyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHRyYXBQQykgLSAxOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGFkanVzdFBD
VG9Qb2ludFRvVHJhcHBpbmdJbnN0cnVjdGlvbigpCi0gICAgewotICAgICAgICBtY29udGV4dC0+
X19zcy5fX2VpcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0cmFwUEMpOwotICAgIH0K
LSAgICAKLSAgICBtY29udGV4dF90JiBtY29udGV4dDsKLSAgICB2b2lkKiB0cmFwUEM7Ci0gICAg
dm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9pbnRlcjsKLX07Ci0KLSNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKEFSTV9USFVNQjIpIHx8IENQVShBUk0pCi0gICAgCi1zdHJ1Y3Qg
U2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90JiBtY29udGV4dCkK
LSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFwUEMocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19wYykpCi0gICAgICAgICwgc3RhY2tQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fc3ApKQotI2lmIENQ
VShBUk02NCkKLSAgICAgICAgLCBmcmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bWNvbnRleHQtPl9fc3MuX19mcCkpCi0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLSAgICAgICAgLCBm
cmFtZVBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yWzdd
KSkKLSNlbGlmIENQVShBUk0pCi0gICAgICAgICwgZnJhbWVQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fclsxMV0pKQorI2lmIENQVShYODZfNjQpIHx8IENQ
VShYODYpCisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIobWNvbnRl
eHQpID0gdHJhcFBDOwogI2VuZGlmCi0gICAgeyB9Ci0gICAgICAgIAotICAgIHZvaWQgYWRqdXN0
UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkgeyB9CisgICAgfQogCiAgICAgbWNvbnRl
eHRfdCYgbWNvbnRleHQ7CiAgICAgdm9pZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRl
cjsKICAgICB2b2lkKiBmcmFtZVBvaW50ZXI7CiB9OwotICAgIAotI2VuZGlmCiAKIGlubGluZSBz
dGF0aWMgYm9vbCB2bUlzSW5hY3RpdmUoVk0mIHZtKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCmluZGV4IGY5MTZjMjAzYjFlMTIzMDA3ZjM3Yzhl
ZmYwY2IxYzEyYWVjYTBiMjEuLjJkNTk1M2VhMzY1OTRmNjRmZGQ3YmZiNDQ2MDIzMGUxMDljODhi
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsaW5n
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCiAKICNpbmNsdWRl
ICJDb2RlUHJvZmlsZS5oIgorI2luY2x1ZGUgIk1hY2hpbmVDb250ZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL01ldGFBbGxvY2F0b3IuaD4KIAogI2lmIEhBVkUoU0lHTkFMX0gpCkBAIC02NiwxOSArNjcs
MTMgQEAgc3RhdGljIHZvaWQgc2V0UHJvZmlsZVRpbWVyKHVuc2lnbmVkIHVzZWMpCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYgIVBMQVRG
T1JNKEdUSykgJiYgQ1BVKFg4Nl82NCkKLXN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwg
c2lnaW5mb190Kiwgdm9pZCogdWFwKQotewotICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRp
Y19jYXN0PHVjb250ZXh0X3QqPih1YXApLT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5n
OjpzYW1wbGUocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+X19zcy5fX3JpcCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0
LT5fX3NzLl9fcmJwKSk7Ci19Ci0jZWxpZiBPUyhMSU5VWCkgJiYgQ1BVKFg4NikKKyNpZiAoT1Mo
REFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKSAmJiBDUFUoWDg2XzY0KSkgfHwgKE9TKExJTlVYKSAm
JiBDUFUoWDg2KSkKIHN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwgc2lnaW5mb190Kiwg
dm9pZCogdWFwKQogewogICAgIG1jb250ZXh0X3QgY29udGV4dCA9IHN0YXRpY19jYXN0PHVjb250
ZXh0X3QqPih1YXApLT51Y19tY29udGV4dDsKLSAgICBDb2RlUHJvZmlsaW5nOjpzYW1wbGUocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC5ncmVnc1tSRUdfRUlQXSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihjb250ZXh0LmdyZWdzW1JF
R19FQlBdKSk7CisgICAgQ29kZVByb2ZpbGluZzo6c2FtcGxlKAorICAgICAgICBNYWNoaW5lQ29u
dGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnRleHQpLAorICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQqKj4oTWFjaGluZUNvbnRleHQ6OmZyYW1lUG9pbnRlcihjb250ZXh0KSkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxD
cmFzaEFuYWx5emVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9TaWdpbGxDcmFz
aEFuYWx5emVyLmNwcAppbmRleCAxYWMxYWY0ODAxN2VjZjUyMDQxNjA5MTkyNjNhYjM4NDUwNjIw
MDZmLi4yNjVjNjYxNTVkMWFkYjhkYTk4YmQ3ODk0MjAyOTI5ODNkNjEyNzNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUgIlZNSW5zcGVj
dG9yLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpA
QCAtNzgsMTcgKzc5LDE3IEBAIGNsYXNzIFNpZ2lsbENyYXNoQW5hbHl6ZXIgewogICAgIAogI2Vu
ZGlmIC8vIFVTRShPU19MT0cpCiAKLSNpZiBDUFUoWDg2XzY0KQogc3RydWN0IFNpZ25hbENvbnRl
eHQgewogICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCiAgICAgICAgIDog
bWNvbnRleHQobWNvbnRleHQpCi0gICAgICAgICwgbWFjaGluZVBDKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KG1jb250ZXh0LT5fX3NzLl9fcmlwKSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX19yc3ApKQotICAgICAgICAsIGZy
YW1lUG9pbnRlcihyZWludGVycHJldF9jYXN0PENhbGxGcmFtZSo+KG1jb250ZXh0LT5fX3NzLl9f
cmJwKSkKKyAgICAgICAgLCBtYWNoaW5lUEMoTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9p
bnRlcihtY29udGV4dCkpCisgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0Ojpz
dGFja1BvaW50ZXIobWNvbnRleHQpKQorICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29u
dGV4dDo6ZnJhbWVQb2ludGVyKG1jb250ZXh0KSkKICAgICB7IH0KIAogICAgIHZvaWQgZHVtcCgp
CiAgICAgeworI2lmIENQVShYODZfNjQpCiAjZGVmaW5lIEZPUl9FQUNIX1JFR0lTVEVSKHYpIFwK
ICAgICAgICAgdihyYXgpIFwKICAgICAgICAgdihyYngpIFwKQEAgLTExNiwyNiArMTE3LDggQEAg
c3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICBsb2coIlJlZ2lzdGVyICIgI19fcmVnICI6
ICVwIiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX18jI19fcmVnKSk7
CiAgICAgICAgIEZPUl9FQUNIX1JFR0lTVEVSKERVTVBfUkVHSVNURVIpCiAjdW5kZWYgRk9SX0VB
Q0hfUkVHSVNURVIKLSAgICB9Ci0KLSAgICBtY29udGV4dF90JiBtY29udGV4dDsKLSAgICB2b2lk
KiBtYWNoaW5lUEM7Ci0gICAgdm9pZCogc3RhY2tQb2ludGVyOwotICAgIHZvaWQqIGZyYW1lUG9p
bnRlcjsKLX07CiAKICNlbGlmIENQVShBUk02NCkKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewot
ICAgIFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYgbWNvbnRleHQpCi0gICAgICAgIDogbWNvbnRl
eHQobWNvbnRleHQpCi0gICAgICAgICwgbWFjaGluZVBDKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KG1jb250ZXh0LT5fX3NzLl9fcGMpKQotICAgICAgICAsIHN0YWNrUG9pbnRlcihyZWludGVycHJl
dF9jYXN0PHZvaWQqPihtY29udGV4dC0+X19zcy5fX3NwKSkKLSAgICAgICAgLCBmcmFtZVBvaW50
ZXIocmVpbnRlcnByZXRfY2FzdDxDYWxsRnJhbWUqPihtY29udGV4dC0+X19zcy5fX2ZwKSkKLSAg
ICB7IH0KLQotICAgIHZvaWQgZHVtcCgpCi0gICAgewogICAgICAgICBpbnQgaTsKICAgICAgICAg
Zm9yIChpID0gMDsgaSA8IDI4OyBpICs9IDQpIHsKICAgICAgICAgICAgIGxvZygieCVkOiAlMDE2
bGx4IHglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IiwKQEAgLTE0OSw2ICsx
MzIsNyBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgICAgICBpLCBtY29udGV4dC0+
X19zcy5fX3hbaV0sIG1jb250ZXh0LT5fX3NzLl9fZnAsIG1jb250ZXh0LT5fX3NzLl9fbHIpOwog
ICAgICAgICBsb2coInNwOiAlMDE2bGx4IHBjOiAlMDE2bGx4IGNwc3I6ICUwOHgiLAogICAgICAg
ICAgICAgbWNvbnRleHQtPl9fc3MuX19zcCwgbWNvbnRleHQtPl9fc3MuX19wYywgbWNvbnRleHQt
Pl9fc3MuX19jcHNyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1jb250ZXh0X3QmIG1jb250ZXh0
OwpAQCAtMTU3LDIwICsxNDEsNiBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgdm9pZCog
ZnJhbWVQb2ludGVyOwogfTsKIAotI2Vsc2UKLQotc3RydWN0IFNpZ25hbENvbnRleHQgewotICAg
IFNpZ25hbENvbnRleHQobWNvbnRleHRfdCYpIHsgfQotICAgIAotICAgIHZvaWQgZHVtcCgpIHsg
fQotICAgIAotICAgIHZvaWQqIG1hY2hpbmVQQzsKLSAgICB2b2lkKiBzdGFja1BvaW50ZXI7Ci0g
ICAgdm9pZCogZnJhbWVQb2ludGVyOwotfTsKLSAgICAKLSNlbmRpZgotCiBzdHJ1Y3Qgc2lnYWN0
aW9uIG9yaWdpbmFsU2lnSWxsQWN0aW9uOwogCiBzdGF0aWMgdm9pZCBoYW5kbGVDcmFzaChpbnQg
c2lnbmFsTnVtYmVyLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVhcCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCmluZGV4IDhiZTNjODU2MjAyMGNjNjIxZDM1
ZGM0NzI3NDM4NGFmZWIyOWVkMWYuLmUzOWFjMzI3OTRiMmFjNDQ2MmNhNTk2MjY1NDY3YWI1OTI0
Y2Y3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9WTUluc3BlY3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1ZNSW5zcGVjdG9yLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVC
bG9ja1NldC5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFjaGluZUNv
bnRleHQuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZhdWx0U2lnbmFsSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5k
bGVyLmNwcAppbmRleCBhZWJiMTcxNWFiMTRmNjlmNmJmNGEyYzFiMmFjYzY3ZjlkZTE5Mzk4Li5j
MWM2YzIyN2QyNmI3ODEzMzAwNDY1NWRmODk0ZDRjMTllMDU2OTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1bHRTaWduYWxIYW5kbGVyLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkV4ZWN1
dGFibGVBbGxvY2F0b3IuaCIKKyNpbmNsdWRlICJNYWNoaW5lQ29udGV4dC5oIgogI2luY2x1ZGUg
IlZNLmgiCiAjaW5jbHVkZSAiV2FzbUV4Y2VwdGlvblR5cGUuaCIKICNpbmNsdWRlICJXYXNtTWVt
b3J5LmgiCkBAIC01MCw0MCArNTEsMTAgQEAgc3RhdGljIGJvb2wgZmFzdEhhbmRsZXJJbnN0YWxs
ZWQgeyBmYWxzZSB9Owogc3RhdGljIFN0YXRpY0xvY2sgY29kZUxvY2F0aW9uc0xvY2s7CiBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8c3RkOjp0dXBsZTxWTSosIHZvaWQqLCB2b2lk
Kj4+PiBjb2RlTG9jYXRpb25zOyAvLyAodm0sIHN0YXJ0LCBlbmQpCiAKLS8vIEZJWE1FOiBDbGVh
biB1cCBtY29udGV4dF90IGhhbmRsaW5nIGNvZGUgc2luY2UgaXQgaXMgc2NhdHRlcmVkIGluIGhl
YXAvLCB0b29scy8gYW5kIHdhc20vLgotLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2OTE4MAotI2lmIENQVShYODZfNjQpCi0KLSNpZiBPUyhEQVJXSU4pCi0jZGVm
aW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250ZXh0LT5fX3NzLl9fcmlwCi0jZGVmaW5lIEZp
cnN0QXJndW1lbnRHUFIgY29udGV4dC0+X19zcy5fX3JzaQotI2VsaWYgT1MoRlJFRUJTRCkKLSNk
ZWZpbmUgSW5zdHJ1Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQubWNfcmlwCi0jZGVmaW5lIEZpcnN0
QXJndW1lbnRHUFIgY29udGV4dC5tY19yc2kKLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotI2Rl
ZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4dC5ncmVnc1tSRUdfUklQXQotI2RlZmlu
ZSBGaXJzdEFyZ3VtZW50R1BSIGNvbnRleHQuZ3JlZ3NbUkVHX1JTSV0KLSNlbmRpZgotCi0jZWxz
ZQotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBJbnN0cnVjdGlvblBvaW50ZXJHUFIgY29udGV4
dC0+X19zcy5fX3BjCi0jZGVmaW5lIEZpcnN0QXJndW1lbnRHUFIgY29udGV4dC0+X19zcy5fX3hb
MV0KLSNlbGlmIE9TKEZSRUVCU0QpCi0jZGVmaW5lIEluc3RydWN0aW9uUG9pbnRlckdQUiBjb250
ZXh0Lm1jX2dwcmVncy5ncF9lbHIKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250ZXh0Lm1j
X2dwcmVncy5ncF94WzFdCi0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSNkZWZpbmUgSW5zdHJ1
Y3Rpb25Qb2ludGVyR1BSIGNvbnRleHQucGMKLSNkZWZpbmUgRmlyc3RBcmd1bWVudEdQUiBjb250
ZXh0LnJlZ3NbMV0KLSNlbmRpZgotCi0jZW5kaWYKLQogc3RhdGljIHZvaWQgdHJhcEhhbmRsZXIo
aW50IHNpZ25hbCwgc2lnaW5mb190KiBzaWdJbmZvLCB2b2lkKiB1Y29udGV4dCkKIHsKICAgICBt
Y29udGV4dF90JiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVjb250ZXh0KS0+
dWNfbWNvbnRleHQ7Ci0gICAgdm9pZCogZmF1bHRpbmdJbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KEluc3RydWN0aW9uUG9pbnRlckdQUik7CisgICAgdm9pZCogZmF1bHRpbmdJ
bnN0cnVjdGlvbiA9IE1hY2hpbmVDb250ZXh0OjppbnN0cnVjdGlvblBvaW50ZXIoY29udGV4dCk7
CiAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInN0YXJ0aW5nIGhhbmRsZXIgZm9yIGZhdWx0IGF0
OiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nSW5zdHJ1Y3Rpb24pKTsKIAogICAgIGRhdGFMb2dMbklm
KHZlcmJvc2UsICJKSVQgbWVtb3J5IHN0YXJ0OiAiLCBSYXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHN0YXJ0T2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKSksICIgZW5kOiAiLCBS
YXdQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGVuZE9mRml4ZWRFeGVjdXRhYmxlTWVt
b3J5UG9vbCkpKTsKQEAgLTEyMiw4ICs5Myw4IEBAIHN0YXRpYyB2b2lkIHRyYXBIYW5kbGVyKGlu
dCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgICAgICAg
ICAgICAgICAgIGlmICghZXhjZXB0aW9uU3R1YikKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiZm91bmQgc3R1
YjogIiwgUmF3UG9pbnRlcihleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIEZpcnN0QXJndW1lbnRHUFIgPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oRXhjZXB0aW9uVHlwZTo6T3V0T2ZCb3VuZHNNZW1vcnlBY2Nlc3MpOwotICAgICAg
ICAgICAgICAgICAgICBJbnN0cnVjdGlvblBvaW50ZXJHUFIgPSByZWludGVycHJldF9jYXN0PHVp
bnQ2NF90PihleGNlcHRpb25TdHViLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6OmFyZ3VtZW50UG9pbnRlcjwxPihjb250ZXh0
KSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KEV4Y2VwdGlvblR5cGU6Ok91dE9mQm91bmRzTWVt
b3J5QWNjZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0
aW9uUG9pbnRlcihjb250ZXh0KSA9IGV4Y2VwdGlvblN0dWIuY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0MmE1ZjdjMTJmNWY0NDM3NDFhMzdhYzhiYTFi
YjQzNWFjZWYyZDk3Li5kZjBkN2ZmZjE1ODE4MzI2MzI2MDU0MjM2MTEzOGQ4NDk1ZjAyMDM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTkyMiw3ICs5MjIsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2lmIE9T
KERBUldJTikgJiYgRU5BQkxFKEpJVCkKKyNpZiAoT1MoREFSV0lOKSB8fCBPUyhMSU5VWCkgfHwg
T1MoRlJFRUJTRCkpICYmIEVOQUJMRShKSVQpCiAjZGVmaW5lIEVOQUJMRV9TSUdOQUxfQkFTRURf
Vk1fVFJBUFMgMQogI2VuZGlmCiAK
</data>
<flag name="review"
          id="325828"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>