<?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>234333</bug_id>
          
          <creation_ts>2021-12-14 19:50:43 -0800</creation_ts>
          <short_desc>[libpas] Implement atomics in inline assembly if compiler is using ARM64</short_desc>
          <delta_ts>2021-12-15 11:47:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824223</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-14 19:50:43 -0800</bug_when>
    <thetext>[libpas] Implement atomics in inline assembly if compiler is using ARM64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824226</commentid>
    <comment_count>1</comment_count>
      <attachid>447194</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-14 19:57:11 -0800</bug_when>
    <thetext>Created attachment 447194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824231</commentid>
    <comment_count>2</comment_count>
      <attachid>447197</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-14 20:16:50 -0800</bug_when>
    <thetext>Created attachment 447197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824317</commentid>
    <comment_count>3</comment_count>
      <attachid>447222</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-15 04:36:42 -0800</bug_when>
    <thetext>Created attachment 447222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824406</commentid>
    <comment_count>4</comment_count>
      <attachid>447222</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-12-15 10:02:07 -0800</bug_when>
    <thetext>Comment on attachment 447222
Patch

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

I&apos;m not sure how much I care, but it would be nice if store_atomic was a pas_utils thing.

&gt; Source/bmalloc/libpas/src/libpas/pas_lock.h:116
&gt;  #if PAS_COMPILER(CLANG)
&gt; +#if PAS_COMPILER(CLANG_ARM64_ATOMICS_DEPENDENCY)
&gt; +    asm volatile (
&gt; +        &quot;stlrb wzr, [%x[ptr]]\t\n&quot;
&gt; +        /* outputs */  :
&gt; +        /* inputs  */  : [ptr]&quot;r&quot;(&amp;lock-&gt;lock)
&gt; +        /* clobbers */ : &quot;memory&quot;
&gt; +    );
&gt; +#else
&gt;      __c11_atomic_store((_Atomic bool*)&amp;lock-&gt;lock, false, __ATOMIC_SEQ_CST);
&gt; +#endif
&gt;  #else
&gt;      __atomic_store_n((bool*)&amp;lock-&gt;lock, false, __ATOMIC_SEQ_CST);
&gt;  #endif

I think it would be way better if this atomic store thing was factored out into pas_utils.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824442</commentid>
    <comment_count>5</comment_count>
      <attachid>447222</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-15 11:29:18 -0800</bug_when>
    <thetext>Comment on attachment 447222
Patch

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

&gt;&gt; Source/bmalloc/libpas/src/libpas/pas_lock.h:116
&gt;&gt;  #endif
&gt; 
&gt; I think it would be way better if this atomic store thing was factored out into pas_utils.h.

OK! Extracted atomic part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824455</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-15 11:46:46 -0800</bug_when>
    <thetext>Committed r287092 (245284@trunk): &lt;https://commits.webkit.org/245284@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824457</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-15 11:47:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/86535186&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447194</attachid>
            <date>2021-12-14 19:57:11 -0800</date>
            <delta_ts>2021-12-14 20:16:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234333-20211214195711.patch</filename>
            <type>text/plain</type>
            <size>23906</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZWJlMDU0OWIzZjY5OWY4
MmNkYzhlY2FiMDIzNTdlMzM0YTcxOTM2ZS4uZGJhM2IzNmMwM2M5YjVlMWZhMTZiODBiNWZhMzI5
MWQ3ZmVmNzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTEyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gSW1wbGVt
ZW50IGF0b21pY3MgaW4gaW5saW5lIGFzc2VtYmx5IGlmIGNvbXBpbGVyIGlzIHVzaW5nIEFSTTY0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJwYXMg
cmVsaWVzIG9uIGhvdyB2YWx1ZSBpcyBsb2FkZWQgc2luY2Ugd2UgYXJlIHVzaW5nIGBwYXNfZGVw
ZW5kYC4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHdlIGV4cGVjdCB0aGF0IGNvbXBhcmVfYW5kX3N3
YXBfc3Ryb25nIHJldHVybnMgYSBsb2FkZWQgdmFsdWUuCisgICAgICAgIEJ1dCBpdCBpcyBub3Qg
Z3VhcmFudGVlZDogdGhlIGNvbXBpbGVyIGNhbiByZXR1cm4gYXJndW1lbnQncyBvbGRfdmFsdWUK
KyAgICAgICAgaWYgd2UgZW5zdXJlIHRoYXQgdGhlIGxvYWRlZCB2YWx1ZSBlcXVhbHMgdG8gb2xk
X3ZhbHVlLiBJbiB0aGF0IGNhc2UsCisgICAgICAgIHBhc19kZXBlbmQncyBjaGFpbiBpcyBicm9r
ZW4gYmVjYXVzZSB3ZSBzdGFydCB1c2luZyBkaXN0aW5jdCByZWdpc3RlcnMuCisgICAgICAgIFRo
aXMgY2FuIGhhcHBlbiBpZiBhdG9taWNzIGlzIGltcGxlbWVudGVkIGFzIExML1NDIGxvb3AuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGF0b21pY3MgaW4gaW5saW5lIGFzc2VtYmx5
IGlmIHRoZSBidWlsZCBpcyBBUk02NCAobm90IEFSTTY0RSksCisgICAgICAgIHNvIHRoYXQgd2Ug
ZW5zdXJlIHRoYXQgd2UgcmV0dXJuIGxvYWRlZCB2YWx1ZSdzIHJlZ2lzdGVyIGluc3RlYWQgb2Yg
b2xkIHZhbHVlJ3Mgb25lLgorCisgICAgICAgIFRoaXMgc2lnbmlmaWNhbnRseSBpbXByb3ZlZCBj
cmFzaCByYXRlIG9mIGxpYnBhcyB0ZXN0IHN1aXRlIG9uIEFSTTY0IChvbiBBUk02NEUsIGFsbAor
ICAgICAgICB0ZXN0cyBwYXNzIGFscmVhZHkpLgorCisgICAgICAgICogbGlicGFzL3NyYy9saWJw
YXMvcGFzX2NvbmZpZ19wcmVmaXguaDoKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNf
bG9jay5oOgorICAgICAgICAocGFzX2xvY2tfdW5sb2NrKToKKyAgICAgICAgKiBsaWJwYXMvc3Jj
L2xpYnBhcy9wYXNfbG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGUuaDoKKyAgICAgICAg
KHBhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZV9maW5kKToKKyAgICAgICAgKiBs
aWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaDoKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9z
d2FwX3VpbnQ4X3dlYWspOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDhfc3Ry
b25nKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQxNl93ZWFrKToKKyAgICAg
ICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQzMl93ZWFrKToKKyAgICAgICAgKHBhc19jb21w
YXJlX2FuZF9zd2FwX3VpbnQzMl9zdHJvbmcpOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3
YXBfdWludDY0X3dlYWspOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDY0X3N0
cm9uZyk6CisgICAgICAgIChwYXNfY29tcGFyZV9hbmRfc3dhcF9ib29sX3dlYWspOgorICAgICAg
ICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfYm9vbF9zdHJvbmcpOgorICAgICAgICAocGFzX2NvbXBh
cmVfYW5kX3N3YXBfdWludHB0cl93ZWFrKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2Fw
X3VpbnRwdHJfc3Ryb25nKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl93ZWFr
KToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl9zdHJvbmcpOgorICAgICAgICAo
cGFzX2NvbXBhcmVfYW5kX3N3YXBfcGFpcl93ZWFrKToKKyAgICAgICAgKHBhc19jb21wYXJlX2Fu
ZF9zd2FwX3BhaXJfc3Ryb25nKToKKyAgICAgICAgKHBhc19hdG9taWNfbG9hZF9wYWlyKToKKyAg
ICAgICAgKHBhc19hdG9taWNfc3RvcmVfcGFpcik6CisgICAgICAgIChwYXNfY29tcGFyZV9wdHJf
b3BhcXVlKToKKwogMjAyMS0xMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBYY29kZSBidWlsZCBvZiBsaWJwYXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19jb25maWdfcHJlZml4
LmggYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfY29uZmlnX3ByZWZpeC5o
CmluZGV4IGQ4ZTg4ZDU1M2M0ZDE0Yjc3YjI3Yjg0MWY0OWIxNDUyYTU5NGQ5YmIuLmQ4ZTU2YTdl
ODAwYWMxZmNkY2Q1NTdkZDhkYWYwYWFjY2MzMzE2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19jb25maWdfcHJlZml4LmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2NvbmZpZ19wcmVmaXguaApAQCAtMzEsOCArMzEs
MTQgQEAKIAogI2lmIChkZWZpbmVkKF9fYXJtNjRfXykgJiYgZGVmaW5lZChfX0FQUExFX18pKSB8
fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtNjRlX18pCiAjZGVmaW5lIF9f
UEFTX0FSTTY0IDEKKyNpZiBkZWZpbmVkKF9fYXJtNjRlX18pCisjZGVmaW5lIF9fUEFTX0FSTTY0
RSAxCisjZWxzZQorI2RlZmluZSBfX1BBU19BUk02NEUgMAorI2VuZGlmCiAjZWxzZQogI2RlZmlu
ZSBfX1BBU19BUk02NCAwCisjZGVmaW5lIF9fUEFTX0FSTTY0RSAwCiAjZW5kaWYKIAogI2lmIChk
ZWZpbmVkKGFybSkgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKEFSTSkgfHwgZGVmaW5l
ZChfQVJNXykpICYmICFfX1BBU19BUk02NApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy9saWJwYXMvcGFzX2xvY2suaCBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGli
cGFzL3Bhc19sb2NrLmgKaW5kZXggZmQ1Mjc0Njk0NGVkODlmZmM3ZTc3ZjUwMDEyZDVlZmM1Njlj
NGM3Zi4uMTFlZDFiYTE1MWFhMjk5ODVlNTQyMTA4YTk0MDU3NTQxMGI1MWJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2xvY2suaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfbG9jay5oCkBAIC0xMDEsNyArMTAxLDE2
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXNfbG9ja191bmxvY2socGFzX2xvY2sqIGxvY2spCiB7
CiAgICAgcGFzX3JhY2VfdGVzdF93aWxsX3VubG9jayhsb2NrKTsKICNpZiBQQVNfQ09NUElMRVIo
Q0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkK
KyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAic3RscmIgd3pyLCBbJXhbcHRyXV1cdFxuIgor
ICAgICAgICAvKiBvdXRwdXRzICovICA6CisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW3B0cl0i
ciIoJmxvY2stPmxvY2spCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogIm1lbW9yeSIKKyAgICAp
OworI2Vsc2UKICAgICBfX2MxMV9hdG9taWNfc3RvcmUoKF9BdG9taWMgYm9vbCopJmxvY2stPmxv
Y2ssIGZhbHNlLCBfX0FUT01JQ19TRVFfQ1NUKTsKKyNlbmRpZgogI2Vsc2UKICAgICBfX2F0b21p
Y19zdG9yZV9uKChib29sKikmbG9jay0+bG9jaywgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNf
bG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGUuaCBiL1NvdXJjZS9ibWFsbG9jL2xpYnBh
cy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZS5oCmluZGV4
IDkzMjk3OWU1Nzc1Mzk1YjQ0YWI0ZDM4NWM3Y2MyNTJlZDEzMzZmODUuLjgyNDdiYTM0MDFlMjg2
NzZkNTFlY2M3Yzg5Y2NkOWRjOGRjODU0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZS5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9w
dHJfcHRyX2hhc2h0YWJsZS5oCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBQQVNfQUxXQVlTX0lO
TElORSB2b2lkKiBwYXNfbG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGVfZmluZCgKICAg
ICAgICAgICAgTk9URTogUGVyZiB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgZGlkIGFuIGF0b21pYyBw
YWlyIHJlYWQgb24gQXBwbGUgU2lsaWNvbi4gVGhlbiB3ZSdkCiAgICAgICAgICAgIGF2b2lkIHRo
ZSBzeW50aGV0aWMgcG9pbnRlciBjaGFzZS4gKi8KICAgICAgICAgbG9hZGVkX2tleSA9IHBhc19w
YWlyX2xvdygqZW50cnkpOwotICAgICAgICBpZiAoKGNvbnN0IHZvaWQqKWxvYWRlZF9rZXkgPT0g
a2V5KQorICAgICAgICBpZiAocGFzX2NvbXBhcmVfcHRyX29wYXF1ZShsb2FkZWRfa2V5LCAodWlu
dHB0cl90KWtleSkpCiAgICAgICAgICAgICByZXR1cm4gKHZvaWQqKXBhc19wYWlyX2hpZ2goZW50
cnlbcGFzX2RlcGVuZChsb2FkZWRfa2V5KV0pOwogCiAgICAgICAgIGlmIChsb2FkZWRfa2V5ID09
IFVJTlRQVFJfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJw
YXMvcGFzX3V0aWxzLmggYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRp
bHMuaAppbmRleCBjZDBiYTVjYjY4MDQ3MDU4MDBlNjY1ZDE3MTZkNDBhM2U1NTcwNTY1Li5iMjA2
NDdiYWU0NTEyOWQ3NDljYjg5MmIxMDZmZDFiZjE4Njg5MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaApAQCAtNzksMTIgKzc5LDE5IEBAIFBBU19C
RUdJTl9FWFRFUk5fQzsKICNkZWZpbmUgUEFTX1VOVVNFRF9QQVJBTSh2YXJpYWJsZSkgX19QQVNf
VU5VU0VEX1BBUkFNKHZhcmlhYmxlKQogCiAjZGVmaW5lIFBBU19BUk02NCBfX1BBU19BUk02NAor
I2RlZmluZSBQQVNfQVJNNjRFIF9fUEFTX0FSTTY0RQogI2RlZmluZSBQQVNfQVJNMzIgX19QQVNf
QVJNMzIKIAogI2RlZmluZSBQQVNfQVJNIF9fUEFTX0FSTQogCiAjZGVmaW5lIFBBU19SSVNDViBf
X1BBU19SSVNDVgogCisjaWYgUEFTX0FSTTY0ICYmICFQQVNfQVJNNjRFICYmICFQQVNfT1MoTUFD
KQorLyogY2xhbmcgaGFzIGEgYnVnIG9uIEFSTTY0IGF0b21pY3Mgd2hlbiBpdCBpcyBnZW5lcmF0
aW5nIG5vbi1MU0UtYXRvbWljcy4gSWYgQ1BVIGlzIEFSTTY0RSwgY2xhbmcgdXNlcyBMU0UtYXRv
bWljcy4KKyAgIEFuZCBpZiBPUyBpcyBNYWMsIHRoZW4gY2xhbmcgdXNlcyBMU0UtYXRvbWljcyB3
aGVuIGl0IGlzIEFSTTY0IHNpbmNlIGFsbCBBUk02NCBtYWNPUyBzdXBwb3J0cyBMU0UtYXRvbWlj
cy4gKi8KKyNkZWZpbmUgUEFTX0NPTVBJTEVSX0NMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5D
WSAxCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIFBBU19UWVBFT0YoYSkg
ZGVjbHR5cGUgKGEpCiAjZWxzZQpAQCAtMjMwLDU3ICsyMzcsMTAxIEBAIHN0YXRpYyBpbmxpbmUg
dWludDY0X3QgcGFzX21ha2VfbWFzazY0KHVpbnQ2NF90IG51bV9iaXRzKQogICAgIHJldHVybiAo
KHVpbnQ2NF90KTEgPDwgbnVtX2JpdHMpIC0gMTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnRwdHJfd2Vhayh1aW50cHRyX3QqIHB0ciwgdWludHB0cl90
IG9sZF92YWx1ZSwgdWludHB0cl90IG5ld192YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXNf
Y29tcGFyZV9hbmRfc3dhcF91aW50OF93ZWFrKHVpbnQ4X3QqIHB0ciwgdWludDhfdCBvbGRfdmFs
dWUsIHVpbnQ4X3QgbmV3X3ZhbHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKLSAgICBy
ZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0b21pYyB1aW50cHRy
X3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01J
Q19TRVFfQ1NUKTsKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRF
TkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1aW50MzJfdCBjb25kID0gMDsKKyAg
ICBhc20gdm9sYXRpbGUgKAorICAgICAgICAibGRheHJiICV3W3ZhbHVlXSwgWyV4W3B0cl1dXHRc
biIKKyAgICAgICAgImNtcCAld1t2YWx1ZV0sICV3W29sZF92YWx1ZV0sIHV4dGJcdFxuIgorICAg
ICAgICAiYi5uZSAxZlx0XG4iCisgICAgICAgICJzdGx4cmIgJXdbY29uZF0sICV3W25ld192YWx1
ZV0sIFsleFtwdHJdXVx0XG4iCisgICAgICAgICJjYnogJXdbY29uZF0sIDBmXHRcbiIKKyAgICAg
ICAgImIgMmZcdFxuIgorICAgICIwOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29uZF0sICMxXHRc
biIKKyAgICAgICAgImIgM2ZcdFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJleFx0XG4i
CisgICAgIjI6XHRcbiIKKyAgICAgICAgIm1vdiAleFtjb25kXSwgeHpyXHRcbiIKKyAgICAiMzpc
dFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25k
XSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW29sZF92YWx1ZV0iciIoKHVp
bnQzMl90KW9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKCh1aW50MzJfdCluZXdfdmFsdWUpLCBb
cHRyXSJyIihwdHIpCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAg
ICApOworICAgIHJldHVybiBjb25kOwogI2Vsc2UKLSAgICByZXR1cm4gX19hdG9taWNfY29tcGFy
ZV9leGNoYW5nZV9uKCh1aW50cHRyX3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVl
LCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKKyAgICByZXR1cm4gX19jMTFf
YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0b21pYyB1aW50OF90KilwdHIsICZvbGRf
dmFsdWUsIG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CiAj
ZW5kaWYKLX0KLQotc3RhdGljIGlubGluZSB1aW50cHRyX3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBf
dWludHB0cl9zdHJvbmcodWludHB0cl90KiBwdHIsIHVpbnRwdHJfdCBvbGRfdmFsdWUsIHVpbnRw
dHJfdCBuZXdfdmFsdWUpCi17Ci0jaWYgUEFTX0NPTVBJTEVSKENMQU5HKQotICAgIF9fYzExX2F0
b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50cHRyX3QqKXB0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsK
ICNlbHNlCi0gICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCh1aW50cHRyX3QqKXB0ciwg
Jm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNf
U0VRX0NTVCk7CisgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDhf
dCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIHRydWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9f
QVRPTUlDX1NFUV9DU1QpOwogI2VuZGlmCi0gICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX2Jvb2xfd2Vhayhib29sKiBwdHIs
IGJvb2wgb2xkX3ZhbHVlLCBib29sIG5ld192YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBw
YXNfY29tcGFyZV9hbmRfc3dhcF91aW50OF9zdHJvbmcodWludDhfdCogcHRyLCB1aW50OF90IG9s
ZF92YWx1ZSwgdWludDhfdCBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NPTVBJTEVSKENMQU5HKQot
ICAgIHJldHVybiBfX2MxMV9hdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIGJv
b2wqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01J
Q19TRVFfQ1NUKTsKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRF
TkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1aW50MzJfdCBjb25kID0gMDsKKyAg
ICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAgICJsZGF4cmIgJXdbdmFsdWVd
LCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3ZhbHVlXSwg
dXR4Ylx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyYiAld1tjb25k
XSwgJXdbbmV3X3ZhbHVlXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImNibnogJXdbY29uZF0s
IDBiXHRcbiIKKyAgICAgICAgImIgMmZcdFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJl
eFx0XG4iCisgICAgIjI6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFsdWVdIj0m
ciIodmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtv
bGRfdmFsdWVdInciKCh1aW50MzJfdClvbGRfdmFsdWUpLCBbbmV3X3ZhbHVlXSJ3IigodWludDMy
X3QpbmV3X3ZhbHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJj
YyIsICJtZW1vcnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CiAjZWxzZQotICAgIHJldHVy
biBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oKGJvb2wqKXB0ciwgJm9sZF92YWx1ZSwgbmV3
X3ZhbHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAg
X19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIHVpbnQ4X3QqKXB0
ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKKyAgICByZXR1cm4gb2xkX3ZhbHVlOwogI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF9ib29sX3N0cm9uZyhib29sKiBwdHIsIGJvb2wgb2xk
X3ZhbHVlLCBib29sIG5ld192YWx1ZSkKLXsKLSNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCi0gICAg
X19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIGJvb2wqKXB0ciwg
Jm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NU
KTsKICNlbHNlCi0gICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKChib29sKilwdHIsICZv
bGRfdmFsdWUsIG5ld192YWx1ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NF
UV9DU1QpOwotI2VuZGlmCisgICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCh1aW50OF90
KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9f
QVRPTUlDX1NFUV9DU1QpOwogICAgIHJldHVybiBvbGRfdmFsdWU7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF91aW50OF93ZWFrKHVpbnQ4X3QqIHB0ciwgdWlu
dDhfdCBvbGRfdmFsdWUsIHVpbnQ4X3QgbmV3X3ZhbHVlKQotewotI2lmIFBBU19DT01QSUxFUihD
TEFORykKLSAgICByZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0
b21pYyB1aW50OF90KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NT
VCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZWxzZQotICAgIHJldHVybiBfX2F0b21pY19jb21wYXJl
X2V4Y2hhbmdlX24oKHVpbnQ4X3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBf
X0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKICNlbmRpZgogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDE2X3dlYWsodWludDE2X3QqIHB0
ciwgdWludDE2X3Qgb2xkX3ZhbHVlLCB1aW50MTZfdCBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NP
TVBJTEVSKENMQU5HKQorI2lmIFBBU19DT01QSUxFUihDTEFOR19BUk02NF9BVE9NSUNTX0RFUEVO
REVOQ1kpCisgICAgdWludDMyX3QgdmFsdWUgPSAwOworICAgIHVpbnQzMl90IGNvbmQgPSAwOwor
ICAgIGFzbSB2b2xhdGlsZSAoCisgICAgICAgICJsZGF4cmggJXdbdmFsdWVdLCBbJXhbcHRyXV1c
dFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3ZhbHVlXSwgdXh0aFx0XG4iCisg
ICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyaCAld1tjb25kXSwgJXdbbmV3X3Zh
bHVlXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImNieiAld1tjb25kXSwgMGZcdFxuIgorICAg
ICAgICAiYiAyZlx0XG4iCisgICAgIjA6XHRcbiIKKyAgICAgICAgIm1vdiAleFtjb25kXSwgIzFc
dFxuIgorICAgICAgICAiYiAzZlx0XG4iCisgICAgIjE6XHRcbiIKKyAgICAgICAgImNscmV4XHRc
biIKKyAgICAiMjpcdFxuIgorICAgICAgICAibW92ICV4W2NvbmRdLCB4enJcdFxuIgorICAgICIz
Olx0XG4iCisgICAgICAgIC8qIG91dHB1dHMgKi8gIDogW3ZhbHVlXSI9JnIiKHZhbHVlKSwgW2Nv
bmRdIj0mciIoY29uZCkKKyAgICAgICAgLyogaW5wdXRzICAqLyAgOiBbb2xkX3ZhbHVlXSJyIigo
dWludDMyX3Qpb2xkX3ZhbHVlKSwgW25ld192YWx1ZV0iciIoKHVpbnQzMl90KW5ld192YWx1ZSks
IFtwdHJdInIiKHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5Igor
ICAgICk7CisgICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQxNl90KilwdHIsICZvbGRfdmFsdWUs
IG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDE2X3Qq
KXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FU
T01JQ19TRVFfQ1NUKTsKICNlbmRpZgpAQCAtMjg5LDcgKzM0MCwzMiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDE2X3dlYWsodWludDE2X3QqIHB0ciwgdWlu
dDE2X3Qgb2xkXwogc3RhdGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQz
Ml93ZWFrKHVpbnQzMl90KiBwdHIsIHVpbnQzMl90IG9sZF92YWx1ZSwgdWludDMyX3QgbmV3X3Zh
bHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdf
QVJNNjRfQVRPTUlDU19ERVBFTkRFTkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1
aW50MzJfdCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAibGRheHIgJXdb
dmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3Zh
bHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyICV3W2NvbmRd
LCAld1tuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2J6ICV3W2NvbmRdLCAw
Zlx0XG4iCisgICAgICAgICJiIDJmXHRcbiIKKyAgICAiMDpcdFxuIgorICAgICAgICAibW92ICV4
W2NvbmRdLCAjMVx0XG4iCisgICAgICAgICJiIDNmXHRcbiIKKyAgICAiMTpcdFxuIgorICAgICAg
ICAiY2xyZXhcdFxuIgorICAgICIyOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29uZF0sIHh6clx0
XG4iCisgICAgIjM6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFsdWVdIj0mciIo
dmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtvbGRf
dmFsdWVdInIiKG9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKG5ld192YWx1ZSksIFtwdHJdInIi
KHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5IgorICAgICk7Cisg
ICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNfY29tcGFyZV9l
eGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQzMl90KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1
ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYKICNlbHNlCiAg
ICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDMyX3QqKXB0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKICNlbmRpZgpAQCAtMjk4LDE3ICszNzQsNjQgQEAgc3RhdGljIGlubGluZSBib29sIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnQzMl93ZWFrKHVpbnQzMl90KiBwdHIsIHVpbnQzMl90IG9s
ZF8KIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDMyX3N0
cm9uZyh1aW50MzJfdCogcHRyLCB1aW50MzJfdCBvbGRfdmFsdWUsIHVpbnQzMl90IG5ld192YWx1
ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FS
TTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAgICB1aW50MzJfdCB2YWx1ZSA9IDA7CisgICAgdWlu
dDMyX3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxuIgorICAgICAg
ICAibGRheHIgJXdbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVl
XSwgJXdbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0
bHhyICV3W2NvbmRdLCAld1tuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2Ju
eiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0XG4iCisgICAgIjE6XHRcbiIKKyAg
ICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6
IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0
cyAgKi8gIDogW29sZF92YWx1ZV0idyIob2xkX3ZhbHVlKSwgW25ld192YWx1ZV0idyIobmV3X3Zh
bHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJjYyIsICJtZW1v
cnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CisjZWxzZQogICAgIF9fYzExX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50MzJfdCopcHRyLCAmb2xkX3ZhbHVl
LCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOworICAgIHJl
dHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNfY29tcGFyZV9leGNo
YW5nZV9uKCh1aW50MzJfdCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIGZhbHNlLCBfX0FU
T01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKLSNlbmRpZgogICAgIHJldHVybiBvbGRf
dmFsdWU7CisjZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9z
d2FwX3VpbnQ2NF93ZWFrKHVpbnQ2NF90KiBwdHIsIHVpbnQ2NF90IG9sZF92YWx1ZSwgdWludDY0
X3QgbmV3X3ZhbHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKKyNpZiBQQVNfQ09NUElM
RVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRFTkNZKQorICAgIHVpbnQ2NF90IHZhbHVlID0g
MDsKKyAgICB1aW50NjRfdCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAi
bGRheHIgJXhbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV4W3ZhbHVlXSwg
JXhbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhy
ICV3W2NvbmRdLCAleFtuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2J6ICV3
W2NvbmRdLCAwZlx0XG4iCisgICAgICAgICJiIDJmXHRcbiIKKyAgICAiMDpcdFxuIgorICAgICAg
ICAibW92ICV4W2NvbmRdLCAjMVx0XG4iCisgICAgICAgICJiIDNmXHRcbiIKKyAgICAiMTpcdFxu
IgorICAgICAgICAiY2xyZXhcdFxuIgorICAgICIyOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29u
ZF0sIHh6clx0XG4iCisgICAgIjM6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFs
dWVdIj0mciIodmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICov
ICA6IFtvbGRfdmFsdWVdInIiKG9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKG5ld192YWx1ZSks
IFtwdHJdInIiKHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5Igor
ICAgICk7CisgICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQ2NF90KilwdHIsICZvbGRfdmFsdWUs
IG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDY0X3Qq
KXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FU
T01JQ19TRVFfQ1NUKTsKICNlbmRpZgpAQCAtMzE3LDMwICs0NDAsNjMgQEAgc3RhdGljIGlubGlu
ZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF93ZWFrKHVpbnQ2NF90KiBwdHIsIHVp
bnQ2NF90IG9sZF8KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBf
dWludDY0X3N0cm9uZyh1aW50NjRfdCogcHRyLCB1aW50NjRfdCBvbGRfdmFsdWUsIHVpbnQ2NF90
IG5ld192YWx1ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVS
KENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAgICB1aW50NjRfdCB2YWx1ZSA9IDA7
CisgICAgdWludDY0X3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxu
IgorICAgICAgICAibGRheHIgJXhbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21w
ICV4W3ZhbHVlXSwgJXhbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAg
ICAgICAgInN0bHhyICV3W2NvbmRdLCAleFtuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAg
ICAgICAiY2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0XG4iCisgICAgIjE6
XHRcbiIKKyAgICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAgICAgICAvKiBvdXRw
dXRzICovICA6IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAg
IC8qIGlucHV0cyAgKi8gIDogW29sZF92YWx1ZV0iciIob2xkX3ZhbHVlKSwgW25ld192YWx1ZV0i
ciIobmV3X3ZhbHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJj
YyIsICJtZW1vcnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CisjZWxzZQogICAgIF9fYzEx
X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50NjRfdCopcHRyLCAm
b2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1Qp
OworICAgIHJldHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNfY29t
cGFyZV9leGNoYW5nZV9uKCh1aW50NjRfdCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIGZh
bHNlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKLSNlbmRpZgogICAgIHJl
dHVybiBvbGRfdmFsdWU7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSBib29sIHBhc19jb21w
YXJlX2FuZF9zd2FwX2Jvb2xfd2Vhayhib29sKiBwdHIsIGJvb2wgb2xkX3ZhbHVlLCBib29sIG5l
d192YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDhfd2Vhaygo
dWludDhfdCopcHRyLCBvbGRfdmFsdWUgPyAxIDogMCwgbmV3X3ZhbHVlID8gMSA6IDApOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfYm9vbF9zdHJvbmcoYm9v
bCogcHRyLCBib29sIG9sZF92YWx1ZSwgYm9vbCBuZXdfdmFsdWUpCit7CisgICAgcmV0dXJuIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnQ4X3N0cm9uZygodWludDhfdCopcHRyLCBvbGRfdmFsdWUg
PyAxIDogMCwgbmV3X3ZhbHVlID8gMSA6IDApOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgcGFz
X2NvbXBhcmVfYW5kX3N3YXBfdWludHB0cl93ZWFrKHVpbnRwdHJfdCogcHRyLCB1aW50cHRyX3Qg
b2xkX3ZhbHVlLCB1aW50cHRyX3QgbmV3X3ZhbHVlKQoreworICAgIHJldHVybiBwYXNfY29tcGFy
ZV9hbmRfc3dhcF91aW50NjRfd2VhaygodWludDY0X3QqKXB0ciwgKHVpbnQ2NF90KW9sZF92YWx1
ZSwgKHVpbnQ2NF90KW5ld192YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludHB0cl90IHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnRwdHJfc3Ryb25nKHVpbnRwdHJfdCogcHRyLCB1aW50cHRy
X3Qgb2xkX3ZhbHVlLCB1aW50cHRyX3QgbmV3X3ZhbHVlKQoreworICAgIHJldHVybiAodWludHB0
cl90KXBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF9zdHJvbmcoKHVpbnQ2NF90KilwdHIsICh1
aW50NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfcHRyX3dlYWsodm9pZCogcHRyLCBjb25zdCB2
b2lkKiBvbGRfdmFsdWUsIGNvbnN0IHZvaWQqIG5ld192YWx1ZSkKIHsKLSNpZiBQQVNfQ09NUElM
RVIoQ0xBTkcpCi0gICAgcmV0dXJuIF9fYzExX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWso
KGNvbnN0IHZvaWQqIF9BdG9taWMgKilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgX19BVE9N
SUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZWxzZQotICAgIHJldHVybiBfX2F0b21p
Y19jb21wYXJlX2V4Y2hhbmdlX24oKGNvbnN0IHZvaWQqKilwdHIsICZvbGRfdmFsdWUsIG5ld192
YWx1ZSwgdHJ1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZW5kaWYK
KyAgICByZXR1cm4gcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDY0X3dlYWsoKHVpbnQ2NF90Kilw
dHIsICh1aW50NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQqIHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl9zdHJvbmcodm9pZCogcHRy
LCBjb25zdCB2b2lkKiBvbGRfdmFsdWUsIGNvbnN0IHZvaWQqIG5ld192YWx1ZSkKIHsKLSNpZiBQ
QVNfQ09NUElMRVIoQ0xBTkcpCi0gICAgX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ry
b25nKChjb25zdCB2b2lkKiBfQXRvbWljICopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9f
QVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOwotI2Vsc2UKLSAgICBfX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX24oKGNvbnN0IHZvaWQqKilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1
ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICh2b2lkKikodWludHB0cl90KW9sZF92YWx1ZTsKKyAgICByZXR1cm4gKHZvaWQq
KXBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF9zdHJvbmcoKHVpbnQ2NF90KilwdHIsICh1aW50
NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiAjZGVmaW5lIHBhc19j
b21waWxlcl9mZW5jZSBfX3Bhc19jb21waWxlcl9mZW5jZQpAQCAtMzcyLDYgKzUyOCw3IEBAIHN0
YXRpYyBQQVNfQUxXQVlTX0lOTElORSB1aW50cHRyX3QgcGFzX29wYXF1ZSh1aW50cHRyX3QgdmFs
dWUpCiB9CiAKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisKIHN0cnVjdCBwYXNfcGFpcjsKIHR5
cGVkZWYgc3RydWN0IHBhc19wYWlyIHBhc19wYWlyOwogCkBAIC00MjMsNyArNTgwLDQwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF9wYWlyX3dlYWsodm9pZCogcmF3
X3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzX3BhaXIgb2xkX3ZhbHVlLCBwYXNfcGFpciBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NPTVBJ
TEVSKENMQU5HKQorI2lmIFBBU19DT01QSUxFUihDTEFOR19BUk02NF9BVE9NSUNTX0RFUEVOREVO
Q1kpCisgICAgdWludHB0cl90IGxvdyA9IDA7CisgICAgdWludHB0cl90IGhpZ2ggPSAwOworICAg
IHVpbnRwdHJfdCBvbGRfbG93ID0gcGFzX3BhaXJfbG93KG9sZF92YWx1ZSk7CisgICAgdWludHB0
cl90IG9sZF9oaWdoID0gcGFzX3BhaXJfaGlnaChvbGRfdmFsdWUpOworICAgIHVpbnRwdHJfdCBu
ZXdfbG93ID0gcGFzX3BhaXJfbG93KG5ld192YWx1ZSk7CisgICAgdWludHB0cl90IG5ld19oaWdo
ID0gcGFzX3BhaXJfaGlnaChuZXdfdmFsdWUpOworICAgIHVpbnRwdHJfdCBjb25kID0gMDsKKyAg
ICB1aW50cHRyX3QgdGVtcCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAgICAgImxkYXhw
ICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiZW9yICV4W2NvbmRd
LCAleFtoaWdoXSwgJXhbb2xkX2hpZ2hdXHRcbiIKKyAgICAgICAgImVvciAleFt0ZW1wXSwgJXhb
bG93XSwgJXhbb2xkX2xvd11cdFxuIgorICAgICAgICAib3JyICV4W2NvbmRdLCAleFt0ZW1wXSwg
JXhbY29uZF1cdFxuIgorICAgICAgICAiY2JueiAleFtjb25kXSwgMWZcdFxuIgorICAgICAgICAi
c3RseHAgJXdbY29uZF0sICV4W25ld19sb3ddLCAleFtuZXdfaGlnaF0sIFsleFtwdHJdXVx0XG4i
CisgICAgICAgICJjYnogJXdbY29uZF0sIDBmXHRcbiIKKyAgICAgICAgImIgMmZcdFxuIgorICAg
ICIwOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29uZF0sICMxXHRcbiIKKyAgICAgICAgImIgM2Zc
dFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJleFx0XG4iCisgICAgIjI6XHRcbiIKKyAg
ICAgICAgIm1vdiAleFtjb25kXSwgeHpyXHRcbiIKKyAgICAiMzpcdFxuIgorICAgICAgICAvKiBv
dXRwdXRzICovICA6IFtsb3ddIj0mciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCksIFtjb25kXSI9
JnIiKGNvbmQpLCBbdGVtcF0iPSZyIih0ZW1wKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtv
bGRfbG93XSJyIihvbGRfbG93KSwgW29sZF9oaWdoXSJyIihvbGRfaGlnaCksIFtuZXdfbG93XSJy
IihuZXdfbG93KSwgW25ld19oaWdoXSJyIihuZXdfaGlnaCksIFtwdHJdInIiKHJhd19wdHIpCisg
ICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAgICApOworICAgIHJldHVy
biBjb25kOworI2Vsc2UKICAgICByZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vf
d2VhaygoX0F0b21pYyBwYXNfcGFpciopcmF3X3B0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBf
X0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKKyNlbmRpZgogI2Vsc2UKICAgICBy
ZXR1cm4gX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKChwYXNfcGFpciopcmF3X3B0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKICNlbmRpZgpAQCAtNDMzLDE3ICs2MjMsNjMgQEAgc3RhdGljIGlubGluZSBwYXNfcGFp
ciBwYXNfY29tcGFyZV9hbmRfc3dhcF9wYWlyX3N0cm9uZyh2b2lkKiByYXdfcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNfcGFp
ciBvbGRfdmFsdWUsIHBhc19wYWlyIG5ld192YWx1ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xB
TkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAg
ICB1aW50cHRyX3QgbG93ID0gMDsKKyAgICB1aW50cHRyX3QgaGlnaCA9IDA7CisgICAgdWludHB0
cl90IG9sZF9sb3cgPSBwYXNfcGFpcl9sb3cob2xkX3ZhbHVlKTsKKyAgICB1aW50cHRyX3Qgb2xk
X2hpZ2ggPSBwYXNfcGFpcl9oaWdoKG9sZF92YWx1ZSk7CisgICAgdWludHB0cl90IG5ld19sb3cg
PSBwYXNfcGFpcl9sb3cobmV3X3ZhbHVlKTsKKyAgICB1aW50cHRyX3QgbmV3X2hpZ2ggPSBwYXNf
cGFpcl9oaWdoKG5ld192YWx1ZSk7CisgICAgdWludHB0cl90IGNvbmQgPSAwOworICAgIHVpbnRw
dHJfdCB0ZW1wID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAg
ICJsZGF4cCAleFtsb3ddLCAleFtoaWdoXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImVvciAl
eFtjb25kXSwgJXhbaGlnaF0sICV4W29sZF9oaWdoXVx0XG4iCisgICAgICAgICJlb3IgJXhbdGVt
cF0sICV4W2xvd10sICV4W29sZF9sb3ddXHRcbiIKKyAgICAgICAgIm9yciAleFtjb25kXSwgJXhb
dGVtcF0sICV4W2NvbmRdXHRcbiIKKyAgICAgICAgImNibnogJXhbY29uZF0sIDFmXHRcbiIKKyAg
ICAgICAgInN0bHhwICV3W2NvbmRdLCAleFtuZXdfbG93XSwgJXhbbmV3X2hpZ2hdLCBbJXhbcHRy
XV1cdFxuIgorICAgICAgICAiY2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0
XG4iCisgICAgIjE6XHRcbiIKKyAgICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAg
ICAgICAvKiBvdXRwdXRzICovICA6IFtsb3ddIj0mciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCks
IFtjb25kXSI9JnIiKGNvbmQpLCBbdGVtcF0iPSZyIih0ZW1wKQorICAgICAgICAvKiBpbnB1dHMg
ICovICA6IFtvbGRfbG93XSJyIihvbGRfbG93KSwgW29sZF9oaWdoXSJyIihvbGRfaGlnaCksIFtu
ZXdfbG93XSJyIihuZXdfbG93KSwgW25ld19oaWdoXSJyIihuZXdfaGlnaCksIFtwdHJdInIiKHJh
d19wdHIpCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAgICApOwor
ICAgIHJldHVybiBwYXNfcGFpcl9jcmVhdGUobG93LCBoaWdoKTsKKyNlbHNlCiAgICAgX19jMTFf
YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIHBhc19wYWlyKilyYXdfcHRy
LCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9D
U1QpOworICAgIHJldHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV9uKChwYXNfcGFpciopcmF3X3B0ciwgJm9sZF92YWx1ZSwgbmV3X3Zh
bHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZW5kaWYK
ICAgICByZXR1cm4gb2xkX3ZhbHVlOworI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgcGFzX3Bh
aXIgcGFzX2F0b21pY19sb2FkX3BhaXIodm9pZCogcmF3X3B0cikKIHsKICNpZiBQQVNfQ09NUElM
RVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5D
WSkKKyAgICB1aW50cHRyX3QgbG93ID0gMDsKKyAgICB1aW50cHRyX3QgaGlnaCA9IDA7CisgICAg
dWludDMyX3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxuIgorICAg
ICAgICAibGR4cCAleFtsb3ddLCAleFtoaWdoXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgInN0
eHAgJXdbY29uZF0sICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAi
Y2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtsb3ddIj0m
ciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAgIC8q
IGlucHV0cyAgKi8gIDogW3B0cl0iciIocmF3X3B0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8g
OiAiY2MiLCAibWVtb3J5IgorICAgICk7CisgICAgcmV0dXJuIHBhc19wYWlyX2NyZWF0ZShsb3cs
IGhpZ2gpOworI2Vsc2UKICAgICByZXR1cm4gX19jMTFfYXRvbWljX2xvYWQoKF9BdG9taWMgcGFz
X3BhaXIqKXJhd19wdHIsIF9fQVRPTUlDX1JFTEFYRUQpOworI2VuZGlmCiAjZWxzZQogICAgIHJl
dHVybiBfX2F0b21pY19sb2FkX24oKHBhc19wYWlyKilyYXdfcHRyLCBfX0FUT01JQ19SRUxBWEVE
KTsKICNlbmRpZgpAQCAtNDUyLDEyICs2ODgsNDggQEAgc3RhdGljIGlubGluZSBwYXNfcGFpciBw
YXNfYXRvbWljX2xvYWRfcGFpcih2b2lkKiByYXdfcHRyKQogc3RhdGljIGlubGluZSB2b2lkIHBh
c19hdG9taWNfc3RvcmVfcGFpcih2b2lkKiByYXdfcHRyLCBwYXNfcGFpciB2YWx1ZSkKIHsKICNp
ZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01J
Q1NfREVQRU5ERU5DWSkKKyAgICB1aW50cHRyX3QgbG93ID0gcGFzX3BhaXJfbG93KHZhbHVlKTsK
KyAgICB1aW50cHRyX3QgaGlnaCA9IHBhc19wYWlyX2hpZ2godmFsdWUpOworICAgIHVpbnRwdHJf
dCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAgICJs
ZGF4cCB4enIsICV4W2NvbmRdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAic3RseHAgJXdbY29u
ZF0sICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2JueiAld1tj
b25kXSwgMGJcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtjb25kXSI9JnIiKGNvbmQp
CisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW2xvd10iciIobG93KSwgW2hpZ2hdInIiKGhpZ2gp
LCBbcHRyXSJyIihyYXdfcHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJjYyIsICJtZW1v
cnkiCisgICAgKTsKKyNlbHNlCiAgICAgX19jMTFfYXRvbWljX3N0b3JlKChfQXRvbWljIHBhc19w
YWlyKilyYXdfcHRyLCB2YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYKICNlbHNlCiAg
ICAgX19hdG9taWNfc3RvcmVfbigocGFzX3BhaXIqKXJhd19wdHIsIHZhbHVlLCBfX0FUT01JQ19T
RVFfQ1NUKTsKICNlbmRpZgogfQogCitzdGF0aWMgUEFTX0FMV0FZU19JTkxJTkUgYm9vbCBwYXNf
Y29tcGFyZV9wdHJfb3BhcXVlKHVpbnRwdHJfdCBhLCB1aW50cHRyX3QgYikKK3sKKyNpZiBQQVNf
Q09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0FSTTY0CisgICAgdWludDMyX3QgY29uZCA9IDA7Cisg
ICAgYXNtIHZvbGF0aWxlICgKKyAgICAgICAgImNtcCAleFthXSwgJXhbYl1cdFxuIgorICAgICAg
ICAiY3NldCAld1tjb25kXSwgZXFcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtjb25k
XSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW2FdInIiKGEpLCBbYl0iciIo
YikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5IgorICAgICk7CisgICAg
cmV0dXJuIGNvbmQ7CisjZWxzZQorICAgIHJldHVybiBhID09IGI7CisjZW5kaWYKKyNlbHNlCisg
ICAgcmV0dXJuIGEgPT0gYjsKKyNlbmRpZgorfQorCiAjZGVmaW5lIFBBU19NSU4oYSwgYikgKHsg
XAogICAgICAgICBQQVNfVFlQRU9GKGEpIF90bXBfYSA9IChhKTsgXAogICAgICAgICBQQVNfVFlQ
RU9GKGIpIF90bXBfYiA9IChiKTsgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447197</attachid>
            <date>2021-12-14 20:16:50 -0800</date>
            <delta_ts>2021-12-15 04:36:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234333-20211214201649.patch</filename>
            <type>text/plain</type>
            <size>23906</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZWJlMDU0OWIzZjY5OWY4
MmNkYzhlY2FiMDIzNTdlMzM0YTcxOTM2ZS4uZGJhM2IzNmMwM2M5YjVlMWZhMTZiODBiNWZhMzI5
MWQ3ZmVmNzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTEyLTE0ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gSW1wbGVt
ZW50IGF0b21pY3MgaW4gaW5saW5lIGFzc2VtYmx5IGlmIGNvbXBpbGVyIGlzIHVzaW5nIEFSTTY0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJwYXMg
cmVsaWVzIG9uIGhvdyB2YWx1ZSBpcyBsb2FkZWQgc2luY2Ugd2UgYXJlIHVzaW5nIGBwYXNfZGVw
ZW5kYC4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHdlIGV4cGVjdCB0aGF0IGNvbXBhcmVfYW5kX3N3
YXBfc3Ryb25nIHJldHVybnMgYSBsb2FkZWQgdmFsdWUuCisgICAgICAgIEJ1dCBpdCBpcyBub3Qg
Z3VhcmFudGVlZDogdGhlIGNvbXBpbGVyIGNhbiByZXR1cm4gYXJndW1lbnQncyBvbGRfdmFsdWUK
KyAgICAgICAgaWYgd2UgZW5zdXJlIHRoYXQgdGhlIGxvYWRlZCB2YWx1ZSBlcXVhbHMgdG8gb2xk
X3ZhbHVlLiBJbiB0aGF0IGNhc2UsCisgICAgICAgIHBhc19kZXBlbmQncyBjaGFpbiBpcyBicm9r
ZW4gYmVjYXVzZSB3ZSBzdGFydCB1c2luZyBkaXN0aW5jdCByZWdpc3RlcnMuCisgICAgICAgIFRo
aXMgY2FuIGhhcHBlbiBpZiBhdG9taWNzIGlzIGltcGxlbWVudGVkIGFzIExML1NDIGxvb3AuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGF0b21pY3MgaW4gaW5saW5lIGFzc2VtYmx5
IGlmIHRoZSBidWlsZCBpcyBBUk02NCAobm90IEFSTTY0RSksCisgICAgICAgIHNvIHRoYXQgd2Ug
ZW5zdXJlIHRoYXQgd2UgcmV0dXJuIGxvYWRlZCB2YWx1ZSdzIHJlZ2lzdGVyIGluc3RlYWQgb2Yg
b2xkIHZhbHVlJ3Mgb25lLgorCisgICAgICAgIFRoaXMgc2lnbmlmaWNhbnRseSBpbXByb3ZlZCBj
cmFzaCByYXRlIG9mIGxpYnBhcyB0ZXN0IHN1aXRlIG9uIEFSTTY0IChvbiBBUk02NEUsIGFsbAor
ICAgICAgICB0ZXN0cyBwYXNzIGFscmVhZHkpLgorCisgICAgICAgICogbGlicGFzL3NyYy9saWJw
YXMvcGFzX2NvbmZpZ19wcmVmaXguaDoKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNf
bG9jay5oOgorICAgICAgICAocGFzX2xvY2tfdW5sb2NrKToKKyAgICAgICAgKiBsaWJwYXMvc3Jj
L2xpYnBhcy9wYXNfbG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGUuaDoKKyAgICAgICAg
KHBhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZV9maW5kKToKKyAgICAgICAgKiBs
aWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaDoKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9z
d2FwX3VpbnQ4X3dlYWspOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDhfc3Ry
b25nKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQxNl93ZWFrKToKKyAgICAg
ICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQzMl93ZWFrKToKKyAgICAgICAgKHBhc19jb21w
YXJlX2FuZF9zd2FwX3VpbnQzMl9zdHJvbmcpOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3
YXBfdWludDY0X3dlYWspOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDY0X3N0
cm9uZyk6CisgICAgICAgIChwYXNfY29tcGFyZV9hbmRfc3dhcF9ib29sX3dlYWspOgorICAgICAg
ICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfYm9vbF9zdHJvbmcpOgorICAgICAgICAocGFzX2NvbXBh
cmVfYW5kX3N3YXBfdWludHB0cl93ZWFrKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2Fw
X3VpbnRwdHJfc3Ryb25nKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl93ZWFr
KToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl9zdHJvbmcpOgorICAgICAgICAo
cGFzX2NvbXBhcmVfYW5kX3N3YXBfcGFpcl93ZWFrKToKKyAgICAgICAgKHBhc19jb21wYXJlX2Fu
ZF9zd2FwX3BhaXJfc3Ryb25nKToKKyAgICAgICAgKHBhc19hdG9taWNfbG9hZF9wYWlyKToKKyAg
ICAgICAgKHBhc19hdG9taWNfc3RvcmVfcGFpcik6CisgICAgICAgIChwYXNfY29tcGFyZV9wdHJf
b3BhcXVlKToKKwogMjAyMS0xMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBYY29kZSBidWlsZCBvZiBsaWJwYXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19jb25maWdfcHJlZml4
LmggYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfY29uZmlnX3ByZWZpeC5o
CmluZGV4IGQ4ZTg4ZDU1M2M0ZDE0Yjc3YjI3Yjg0MWY0OWIxNDUyYTU5NGQ5YmIuLmQ4ZTU2YTdl
ODAwYWMxZmNkY2Q1NTdkZDhkYWYwYWFjY2MzMzE2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19jb25maWdfcHJlZml4LmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2NvbmZpZ19wcmVmaXguaApAQCAtMzEsOCArMzEs
MTQgQEAKIAogI2lmIChkZWZpbmVkKF9fYXJtNjRfXykgJiYgZGVmaW5lZChfX0FQUExFX18pKSB8
fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtNjRlX18pCiAjZGVmaW5lIF9f
UEFTX0FSTTY0IDEKKyNpZiBkZWZpbmVkKF9fYXJtNjRlX18pCisjZGVmaW5lIF9fUEFTX0FSTTY0
RSAxCisjZWxzZQorI2RlZmluZSBfX1BBU19BUk02NEUgMAorI2VuZGlmCiAjZWxzZQogI2RlZmlu
ZSBfX1BBU19BUk02NCAwCisjZGVmaW5lIF9fUEFTX0FSTTY0RSAwCiAjZW5kaWYKIAogI2lmIChk
ZWZpbmVkKGFybSkgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKEFSTSkgfHwgZGVmaW5l
ZChfQVJNXykpICYmICFfX1BBU19BUk02NApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy9saWJwYXMvcGFzX2xvY2suaCBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGli
cGFzL3Bhc19sb2NrLmgKaW5kZXggZmQ1Mjc0Njk0NGVkODlmZmM3ZTc3ZjUwMDEyZDVlZmM1Njlj
NGM3Zi4uMTFlZDFiYTE1MWFhMjk5ODVlNTQyMTA4YTk0MDU3NTQxMGI1MWJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2xvY2suaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfbG9jay5oCkBAIC0xMDEsNyArMTAxLDE2
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXNfbG9ja191bmxvY2socGFzX2xvY2sqIGxvY2spCiB7
CiAgICAgcGFzX3JhY2VfdGVzdF93aWxsX3VubG9jayhsb2NrKTsKICNpZiBQQVNfQ09NUElMRVIo
Q0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkK
KyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAic3RscmIgd3pyLCBbJXhbcHRyXV1cdFxuIgor
ICAgICAgICAvKiBvdXRwdXRzICovICA6CisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW3B0cl0i
ciIoJmxvY2stPmxvY2spCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogIm1lbW9yeSIKKyAgICAp
OworI2Vsc2UKICAgICBfX2MxMV9hdG9taWNfc3RvcmUoKF9BdG9taWMgYm9vbCopJmxvY2stPmxv
Y2ssIGZhbHNlLCBfX0FUT01JQ19TRVFfQ1NUKTsKKyNlbmRpZgogI2Vsc2UKICAgICBfX2F0b21p
Y19zdG9yZV9uKChib29sKikmbG9jay0+bG9jaywgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNf
bG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGUuaCBiL1NvdXJjZS9ibWFsbG9jL2xpYnBh
cy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZS5oCmluZGV4
IDkzMjk3OWU1Nzc1Mzk1YjQ0YWI0ZDM4NWM3Y2MyNTJlZDEzMzZmODUuLjgyNDdiYTM0MDFlMjg2
NzZkNTFlY2M3Yzg5Y2NkOWRjOGRjODU0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZS5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9w
dHJfcHRyX2hhc2h0YWJsZS5oCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBQQVNfQUxXQVlTX0lO
TElORSB2b2lkKiBwYXNfbG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGVfZmluZCgKICAg
ICAgICAgICAgTk9URTogUGVyZiB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgZGlkIGFuIGF0b21pYyBw
YWlyIHJlYWQgb24gQXBwbGUgU2lsaWNvbi4gVGhlbiB3ZSdkCiAgICAgICAgICAgIGF2b2lkIHRo
ZSBzeW50aGV0aWMgcG9pbnRlciBjaGFzZS4gKi8KICAgICAgICAgbG9hZGVkX2tleSA9IHBhc19w
YWlyX2xvdygqZW50cnkpOwotICAgICAgICBpZiAoKGNvbnN0IHZvaWQqKWxvYWRlZF9rZXkgPT0g
a2V5KQorICAgICAgICBpZiAocGFzX2NvbXBhcmVfcHRyX29wYXF1ZShsb2FkZWRfa2V5LCAodWlu
dHB0cl90KWtleSkpCiAgICAgICAgICAgICByZXR1cm4gKHZvaWQqKXBhc19wYWlyX2hpZ2goZW50
cnlbcGFzX2RlcGVuZChsb2FkZWRfa2V5KV0pOwogCiAgICAgICAgIGlmIChsb2FkZWRfa2V5ID09
IFVJTlRQVFJfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJw
YXMvcGFzX3V0aWxzLmggYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRp
bHMuaAppbmRleCBjZDBiYTVjYjY4MDQ3MDU4MDBlNjY1ZDE3MTZkNDBhM2U1NTcwNTY1Li45NGJm
ODA5YzRjYjg5YzA4NTRiMTFmYzc1YTFjZjFmMWY2NDY2MzEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaApAQCAtNzksMTIgKzc5LDE5IEBAIFBBU19C
RUdJTl9FWFRFUk5fQzsKICNkZWZpbmUgUEFTX1VOVVNFRF9QQVJBTSh2YXJpYWJsZSkgX19QQVNf
VU5VU0VEX1BBUkFNKHZhcmlhYmxlKQogCiAjZGVmaW5lIFBBU19BUk02NCBfX1BBU19BUk02NAor
I2RlZmluZSBQQVNfQVJNNjRFIF9fUEFTX0FSTTY0RQogI2RlZmluZSBQQVNfQVJNMzIgX19QQVNf
QVJNMzIKIAogI2RlZmluZSBQQVNfQVJNIF9fUEFTX0FSTQogCiAjZGVmaW5lIFBBU19SSVNDViBf
X1BBU19SSVNDVgogCisjaWYgUEFTX0FSTTY0ICYmICFQQVNfQVJNNjRFICYmICFQQVNfT1MoTUFD
KQorLyogY2xhbmcgaGFzIGEgYnVnIG9uIEFSTTY0IGF0b21pY3Mgd2hlbiBpdCBpcyBnZW5lcmF0
aW5nIG5vbi1MU0UtYXRvbWljcy4gSWYgQ1BVIGlzIEFSTTY0RSwgY2xhbmcgdXNlcyBMU0UtYXRv
bWljcy4KKyAgIEFuZCBpZiBPUyBpcyBNYWMsIHRoZW4gY2xhbmcgdXNlcyBMU0UtYXRvbWljcyB3
aGVuIGl0IGlzIEFSTTY0IHNpbmNlIGFsbCBBUk02NCBtYWNPUyBzdXBwb3J0cyBMU0UtYXRvbWlj
cy4gKi8KKyNkZWZpbmUgUEFTX0NPTVBJTEVSX0NMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5D
WSAxCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIFBBU19UWVBFT0YoYSkg
ZGVjbHR5cGUgKGEpCiAjZWxzZQpAQCAtMjMwLDU3ICsyMzcsMTAxIEBAIHN0YXRpYyBpbmxpbmUg
dWludDY0X3QgcGFzX21ha2VfbWFzazY0KHVpbnQ2NF90IG51bV9iaXRzKQogICAgIHJldHVybiAo
KHVpbnQ2NF90KTEgPDwgbnVtX2JpdHMpIC0gMTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnRwdHJfd2Vhayh1aW50cHRyX3QqIHB0ciwgdWludHB0cl90
IG9sZF92YWx1ZSwgdWludHB0cl90IG5ld192YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXNf
Y29tcGFyZV9hbmRfc3dhcF91aW50OF93ZWFrKHVpbnQ4X3QqIHB0ciwgdWludDhfdCBvbGRfdmFs
dWUsIHVpbnQ4X3QgbmV3X3ZhbHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKLSAgICBy
ZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0b21pYyB1aW50cHRy
X3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01J
Q19TRVFfQ1NUKTsKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRF
TkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1aW50MzJfdCBjb25kID0gMDsKKyAg
ICBhc20gdm9sYXRpbGUgKAorICAgICAgICAibGRheHJiICV3W3ZhbHVlXSwgWyV4W3B0cl1dXHRc
biIKKyAgICAgICAgImNtcCAld1t2YWx1ZV0sICV3W29sZF92YWx1ZV0sIHV4dGJcdFxuIgorICAg
ICAgICAiYi5uZSAxZlx0XG4iCisgICAgICAgICJzdGx4cmIgJXdbY29uZF0sICV3W25ld192YWx1
ZV0sIFsleFtwdHJdXVx0XG4iCisgICAgICAgICJjYnogJXdbY29uZF0sIDBmXHRcbiIKKyAgICAg
ICAgImIgMmZcdFxuIgorICAgICIwOlx0XG4iCisgICAgICAgICJtb3YgJXdbY29uZF0sICMxXHRc
biIKKyAgICAgICAgImIgM2ZcdFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJleFx0XG4i
CisgICAgIjI6XHRcbiIKKyAgICAgICAgIm1vdiAld1tjb25kXSwgd3pyXHRcbiIKKyAgICAiMzpc
dFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25k
XSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW29sZF92YWx1ZV0iciIoKHVp
bnQzMl90KW9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKCh1aW50MzJfdCluZXdfdmFsdWUpLCBb
cHRyXSJyIihwdHIpCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAg
ICApOworICAgIHJldHVybiBjb25kOwogI2Vsc2UKLSAgICByZXR1cm4gX19hdG9taWNfY29tcGFy
ZV9leGNoYW5nZV9uKCh1aW50cHRyX3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVl
LCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKKyAgICByZXR1cm4gX19jMTFf
YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0b21pYyB1aW50OF90KilwdHIsICZvbGRf
dmFsdWUsIG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CiAj
ZW5kaWYKLX0KLQotc3RhdGljIGlubGluZSB1aW50cHRyX3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBf
dWludHB0cl9zdHJvbmcodWludHB0cl90KiBwdHIsIHVpbnRwdHJfdCBvbGRfdmFsdWUsIHVpbnRw
dHJfdCBuZXdfdmFsdWUpCi17Ci0jaWYgUEFTX0NPTVBJTEVSKENMQU5HKQotICAgIF9fYzExX2F0
b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50cHRyX3QqKXB0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsK
ICNlbHNlCi0gICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCh1aW50cHRyX3QqKXB0ciwg
Jm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNf
U0VRX0NTVCk7CisgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDhf
dCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIHRydWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9f
QVRPTUlDX1NFUV9DU1QpOwogI2VuZGlmCi0gICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX2Jvb2xfd2Vhayhib29sKiBwdHIs
IGJvb2wgb2xkX3ZhbHVlLCBib29sIG5ld192YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBw
YXNfY29tcGFyZV9hbmRfc3dhcF91aW50OF9zdHJvbmcodWludDhfdCogcHRyLCB1aW50OF90IG9s
ZF92YWx1ZSwgdWludDhfdCBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NPTVBJTEVSKENMQU5HKQot
ICAgIHJldHVybiBfX2MxMV9hdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIGJv
b2wqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01J
Q19TRVFfQ1NUKTsKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRF
TkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1aW50MzJfdCBjb25kID0gMDsKKyAg
ICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAgICJsZGF4cmIgJXdbdmFsdWVd
LCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3ZhbHVlXSwg
dXR4Ylx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyYiAld1tjb25k
XSwgJXdbbmV3X3ZhbHVlXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImNibnogJXdbY29uZF0s
IDBiXHRcbiIKKyAgICAgICAgImIgMmZcdFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJl
eFx0XG4iCisgICAgIjI6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFsdWVdIj0m
ciIodmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtv
bGRfdmFsdWVdInIiKCh1aW50MzJfdClvbGRfdmFsdWUpLCBbbmV3X3ZhbHVlXSJyIigodWludDMy
X3QpbmV3X3ZhbHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJj
YyIsICJtZW1vcnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CiAjZWxzZQotICAgIHJldHVy
biBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oKGJvb2wqKXB0ciwgJm9sZF92YWx1ZSwgbmV3
X3ZhbHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAg
X19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIHVpbnQ4X3QqKXB0
ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKKyAgICByZXR1cm4gb2xkX3ZhbHVlOwogI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF9ib29sX3N0cm9uZyhib29sKiBwdHIsIGJvb2wgb2xk
X3ZhbHVlLCBib29sIG5ld192YWx1ZSkKLXsKLSNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCi0gICAg
X19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIGJvb2wqKXB0ciwg
Jm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NU
KTsKICNlbHNlCi0gICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKChib29sKilwdHIsICZv
bGRfdmFsdWUsIG5ld192YWx1ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NF
UV9DU1QpOwotI2VuZGlmCisgICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCh1aW50OF90
KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9f
QVRPTUlDX1NFUV9DU1QpOwogICAgIHJldHVybiBvbGRfdmFsdWU7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF91aW50OF93ZWFrKHVpbnQ4X3QqIHB0ciwgdWlu
dDhfdCBvbGRfdmFsdWUsIHVpbnQ4X3QgbmV3X3ZhbHVlKQotewotI2lmIFBBU19DT01QSUxFUihD
TEFORykKLSAgICByZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0
b21pYyB1aW50OF90KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NT
VCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZWxzZQotICAgIHJldHVybiBfX2F0b21pY19jb21wYXJl
X2V4Y2hhbmdlX24oKHVpbnQ4X3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBf
X0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKICNlbmRpZgogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDE2X3dlYWsodWludDE2X3QqIHB0
ciwgdWludDE2X3Qgb2xkX3ZhbHVlLCB1aW50MTZfdCBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NP
TVBJTEVSKENMQU5HKQorI2lmIFBBU19DT01QSUxFUihDTEFOR19BUk02NF9BVE9NSUNTX0RFUEVO
REVOQ1kpCisgICAgdWludDMyX3QgdmFsdWUgPSAwOworICAgIHVpbnQzMl90IGNvbmQgPSAwOwor
ICAgIGFzbSB2b2xhdGlsZSAoCisgICAgICAgICJsZGF4cmggJXdbdmFsdWVdLCBbJXhbcHRyXV1c
dFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3ZhbHVlXSwgdXh0aFx0XG4iCisg
ICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyaCAld1tjb25kXSwgJXdbbmV3X3Zh
bHVlXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImNieiAld1tjb25kXSwgMGZcdFxuIgorICAg
ICAgICAiYiAyZlx0XG4iCisgICAgIjA6XHRcbiIKKyAgICAgICAgIm1vdiAld1tjb25kXSwgIzFc
dFxuIgorICAgICAgICAiYiAzZlx0XG4iCisgICAgIjE6XHRcbiIKKyAgICAgICAgImNscmV4XHRc
biIKKyAgICAiMjpcdFxuIgorICAgICAgICAibW92ICV3W2NvbmRdLCB3enJcdFxuIgorICAgICIz
Olx0XG4iCisgICAgICAgIC8qIG91dHB1dHMgKi8gIDogW3ZhbHVlXSI9JnIiKHZhbHVlKSwgW2Nv
bmRdIj0mciIoY29uZCkKKyAgICAgICAgLyogaW5wdXRzICAqLyAgOiBbb2xkX3ZhbHVlXSJyIigo
dWludDMyX3Qpb2xkX3ZhbHVlKSwgW25ld192YWx1ZV0iciIoKHVpbnQzMl90KW5ld192YWx1ZSks
IFtwdHJdInIiKHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5Igor
ICAgICk7CisgICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQxNl90KilwdHIsICZvbGRfdmFsdWUs
IG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDE2X3Qq
KXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FU
T01JQ19TRVFfQ1NUKTsKICNlbmRpZgpAQCAtMjg5LDcgKzM0MCwzMiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDE2X3dlYWsodWludDE2X3QqIHB0ciwgdWlu
dDE2X3Qgb2xkXwogc3RhdGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQz
Ml93ZWFrKHVpbnQzMl90KiBwdHIsIHVpbnQzMl90IG9sZF92YWx1ZSwgdWludDMyX3QgbmV3X3Zh
bHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdf
QVJNNjRfQVRPTUlDU19ERVBFTkRFTkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1
aW50MzJfdCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAibGRheHIgJXdb
dmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3Zh
bHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyICV3W2NvbmRd
LCAld1tuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2J6ICV3W2NvbmRdLCAw
Zlx0XG4iCisgICAgICAgICJiIDJmXHRcbiIKKyAgICAiMDpcdFxuIgorICAgICAgICAibW92ICV3
W2NvbmRdLCAjMVx0XG4iCisgICAgICAgICJiIDNmXHRcbiIKKyAgICAiMTpcdFxuIgorICAgICAg
ICAiY2xyZXhcdFxuIgorICAgICIyOlx0XG4iCisgICAgICAgICJtb3YgJXdbY29uZF0sIHd6clx0
XG4iCisgICAgIjM6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFsdWVdIj0mciIo
dmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtvbGRf
dmFsdWVdInIiKG9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKG5ld192YWx1ZSksIFtwdHJdInIi
KHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5IgorICAgICk7Cisg
ICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNfY29tcGFyZV9l
eGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQzMl90KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1
ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYKICNlbHNlCiAg
ICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDMyX3QqKXB0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKICNlbmRpZgpAQCAtMjk4LDE3ICszNzQsNjQgQEAgc3RhdGljIGlubGluZSBib29sIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnQzMl93ZWFrKHVpbnQzMl90KiBwdHIsIHVpbnQzMl90IG9s
ZF8KIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDMyX3N0
cm9uZyh1aW50MzJfdCogcHRyLCB1aW50MzJfdCBvbGRfdmFsdWUsIHVpbnQzMl90IG5ld192YWx1
ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FS
TTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAgICB1aW50MzJfdCB2YWx1ZSA9IDA7CisgICAgdWlu
dDMyX3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxuIgorICAgICAg
ICAibGRheHIgJXdbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVl
XSwgJXdbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0
bHhyICV3W2NvbmRdLCAld1tuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2Ju
eiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0XG4iCisgICAgIjE6XHRcbiIKKyAg
ICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6
IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0
cyAgKi8gIDogW29sZF92YWx1ZV0iciIob2xkX3ZhbHVlKSwgW25ld192YWx1ZV0iciIobmV3X3Zh
bHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJjYyIsICJtZW1v
cnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CisjZWxzZQogICAgIF9fYzExX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50MzJfdCopcHRyLCAmb2xkX3ZhbHVl
LCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOworICAgIHJl
dHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNfY29tcGFyZV9leGNo
YW5nZV9uKCh1aW50MzJfdCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIGZhbHNlLCBfX0FU
T01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKLSNlbmRpZgogICAgIHJldHVybiBvbGRf
dmFsdWU7CisjZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9z
d2FwX3VpbnQ2NF93ZWFrKHVpbnQ2NF90KiBwdHIsIHVpbnQ2NF90IG9sZF92YWx1ZSwgdWludDY0
X3QgbmV3X3ZhbHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKKyNpZiBQQVNfQ09NUElM
RVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRFTkNZKQorICAgIHVpbnQ2NF90IHZhbHVlID0g
MDsKKyAgICB1aW50NjRfdCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAi
bGRheHIgJXhbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV4W3ZhbHVlXSwg
JXhbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhy
ICV3W2NvbmRdLCAleFtuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2J6ICV3
W2NvbmRdLCAwZlx0XG4iCisgICAgICAgICJiIDJmXHRcbiIKKyAgICAiMDpcdFxuIgorICAgICAg
ICAibW92ICV4W2NvbmRdLCAjMVx0XG4iCisgICAgICAgICJiIDNmXHRcbiIKKyAgICAiMTpcdFxu
IgorICAgICAgICAiY2xyZXhcdFxuIgorICAgICIyOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29u
ZF0sIHh6clx0XG4iCisgICAgIjM6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFs
dWVdIj0mciIodmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICov
ICA6IFtvbGRfdmFsdWVdInIiKG9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKG5ld192YWx1ZSks
IFtwdHJdInIiKHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5Igor
ICAgICk7CisgICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQ2NF90KilwdHIsICZvbGRfdmFsdWUs
IG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDY0X3Qq
KXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FU
T01JQ19TRVFfQ1NUKTsKICNlbmRpZgpAQCAtMzE3LDMwICs0NDAsNjMgQEAgc3RhdGljIGlubGlu
ZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF93ZWFrKHVpbnQ2NF90KiBwdHIsIHVp
bnQ2NF90IG9sZF8KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBf
dWludDY0X3N0cm9uZyh1aW50NjRfdCogcHRyLCB1aW50NjRfdCBvbGRfdmFsdWUsIHVpbnQ2NF90
IG5ld192YWx1ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVS
KENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAgICB1aW50NjRfdCB2YWx1ZSA9IDA7
CisgICAgdWludDY0X3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxu
IgorICAgICAgICAibGRheHIgJXhbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21w
ICV4W3ZhbHVlXSwgJXhbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAg
ICAgICAgInN0bHhyICV3W2NvbmRdLCAleFtuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAg
ICAgICAiY2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0XG4iCisgICAgIjE6
XHRcbiIKKyAgICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAgICAgICAvKiBvdXRw
dXRzICovICA6IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAg
IC8qIGlucHV0cyAgKi8gIDogW29sZF92YWx1ZV0iciIob2xkX3ZhbHVlKSwgW25ld192YWx1ZV0i
ciIobmV3X3ZhbHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJj
YyIsICJtZW1vcnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CisjZWxzZQogICAgIF9fYzEx
X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50NjRfdCopcHRyLCAm
b2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1Qp
OworICAgIHJldHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNfY29t
cGFyZV9leGNoYW5nZV9uKCh1aW50NjRfdCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIGZh
bHNlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKLSNlbmRpZgogICAgIHJl
dHVybiBvbGRfdmFsdWU7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSBib29sIHBhc19jb21w
YXJlX2FuZF9zd2FwX2Jvb2xfd2Vhayhib29sKiBwdHIsIGJvb2wgb2xkX3ZhbHVlLCBib29sIG5l
d192YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDhfd2Vhaygo
dWludDhfdCopcHRyLCBvbGRfdmFsdWUgPyAxIDogMCwgbmV3X3ZhbHVlID8gMSA6IDApOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfYm9vbF9zdHJvbmcoYm9v
bCogcHRyLCBib29sIG9sZF92YWx1ZSwgYm9vbCBuZXdfdmFsdWUpCit7CisgICAgcmV0dXJuIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnQ4X3N0cm9uZygodWludDhfdCopcHRyLCBvbGRfdmFsdWUg
PyAxIDogMCwgbmV3X3ZhbHVlID8gMSA6IDApOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgcGFz
X2NvbXBhcmVfYW5kX3N3YXBfdWludHB0cl93ZWFrKHVpbnRwdHJfdCogcHRyLCB1aW50cHRyX3Qg
b2xkX3ZhbHVlLCB1aW50cHRyX3QgbmV3X3ZhbHVlKQoreworICAgIHJldHVybiBwYXNfY29tcGFy
ZV9hbmRfc3dhcF91aW50NjRfd2VhaygodWludDY0X3QqKXB0ciwgKHVpbnQ2NF90KW9sZF92YWx1
ZSwgKHVpbnQ2NF90KW5ld192YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludHB0cl90IHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnRwdHJfc3Ryb25nKHVpbnRwdHJfdCogcHRyLCB1aW50cHRy
X3Qgb2xkX3ZhbHVlLCB1aW50cHRyX3QgbmV3X3ZhbHVlKQoreworICAgIHJldHVybiAodWludHB0
cl90KXBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF9zdHJvbmcoKHVpbnQ2NF90KilwdHIsICh1
aW50NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfcHRyX3dlYWsodm9pZCogcHRyLCBjb25zdCB2
b2lkKiBvbGRfdmFsdWUsIGNvbnN0IHZvaWQqIG5ld192YWx1ZSkKIHsKLSNpZiBQQVNfQ09NUElM
RVIoQ0xBTkcpCi0gICAgcmV0dXJuIF9fYzExX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWso
KGNvbnN0IHZvaWQqIF9BdG9taWMgKilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgX19BVE9N
SUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZWxzZQotICAgIHJldHVybiBfX2F0b21p
Y19jb21wYXJlX2V4Y2hhbmdlX24oKGNvbnN0IHZvaWQqKilwdHIsICZvbGRfdmFsdWUsIG5ld192
YWx1ZSwgdHJ1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZW5kaWYK
KyAgICByZXR1cm4gcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDY0X3dlYWsoKHVpbnQ2NF90Kilw
dHIsICh1aW50NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQqIHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl9zdHJvbmcodm9pZCogcHRy
LCBjb25zdCB2b2lkKiBvbGRfdmFsdWUsIGNvbnN0IHZvaWQqIG5ld192YWx1ZSkKIHsKLSNpZiBQ
QVNfQ09NUElMRVIoQ0xBTkcpCi0gICAgX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ry
b25nKChjb25zdCB2b2lkKiBfQXRvbWljICopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9f
QVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOwotI2Vsc2UKLSAgICBfX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX24oKGNvbnN0IHZvaWQqKilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1
ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICh2b2lkKikodWludHB0cl90KW9sZF92YWx1ZTsKKyAgICByZXR1cm4gKHZvaWQq
KXBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF9zdHJvbmcoKHVpbnQ2NF90KilwdHIsICh1aW50
NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiAjZGVmaW5lIHBhc19j
b21waWxlcl9mZW5jZSBfX3Bhc19jb21waWxlcl9mZW5jZQpAQCAtMzcyLDYgKzUyOCw3IEBAIHN0
YXRpYyBQQVNfQUxXQVlTX0lOTElORSB1aW50cHRyX3QgcGFzX29wYXF1ZSh1aW50cHRyX3QgdmFs
dWUpCiB9CiAKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisKIHN0cnVjdCBwYXNfcGFpcjsKIHR5
cGVkZWYgc3RydWN0IHBhc19wYWlyIHBhc19wYWlyOwogCkBAIC00MjMsNyArNTgwLDQwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF9wYWlyX3dlYWsodm9pZCogcmF3
X3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzX3BhaXIgb2xkX3ZhbHVlLCBwYXNfcGFpciBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NPTVBJ
TEVSKENMQU5HKQorI2lmIFBBU19DT01QSUxFUihDTEFOR19BUk02NF9BVE9NSUNTX0RFUEVOREVO
Q1kpCisgICAgdWludHB0cl90IGxvdyA9IDA7CisgICAgdWludHB0cl90IGhpZ2ggPSAwOworICAg
IHVpbnRwdHJfdCBvbGRfbG93ID0gcGFzX3BhaXJfbG93KG9sZF92YWx1ZSk7CisgICAgdWludHB0
cl90IG9sZF9oaWdoID0gcGFzX3BhaXJfaGlnaChvbGRfdmFsdWUpOworICAgIHVpbnRwdHJfdCBu
ZXdfbG93ID0gcGFzX3BhaXJfbG93KG5ld192YWx1ZSk7CisgICAgdWludHB0cl90IG5ld19oaWdo
ID0gcGFzX3BhaXJfaGlnaChuZXdfdmFsdWUpOworICAgIHVpbnRwdHJfdCBjb25kID0gMDsKKyAg
ICB1aW50cHRyX3QgdGVtcCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAgICAgImxkYXhw
ICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiZW9yICV4W2NvbmRd
LCAleFtoaWdoXSwgJXhbb2xkX2hpZ2hdXHRcbiIKKyAgICAgICAgImVvciAleFt0ZW1wXSwgJXhb
bG93XSwgJXhbb2xkX2xvd11cdFxuIgorICAgICAgICAib3JyICV4W2NvbmRdLCAleFt0ZW1wXSwg
JXhbY29uZF1cdFxuIgorICAgICAgICAiY2JueiAleFtjb25kXSwgMWZcdFxuIgorICAgICAgICAi
c3RseHAgJXdbY29uZF0sICV4W25ld19sb3ddLCAleFtuZXdfaGlnaF0sIFsleFtwdHJdXVx0XG4i
CisgICAgICAgICJjYnogJXdbY29uZF0sIDBmXHRcbiIKKyAgICAgICAgImIgMmZcdFxuIgorICAg
ICIwOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29uZF0sICMxXHRcbiIKKyAgICAgICAgImIgM2Zc
dFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJleFx0XG4iCisgICAgIjI6XHRcbiIKKyAg
ICAgICAgIm1vdiAleFtjb25kXSwgeHpyXHRcbiIKKyAgICAiMzpcdFxuIgorICAgICAgICAvKiBv
dXRwdXRzICovICA6IFtsb3ddIj0mciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCksIFtjb25kXSI9
JnIiKGNvbmQpLCBbdGVtcF0iPSZyIih0ZW1wKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtv
bGRfbG93XSJyIihvbGRfbG93KSwgW29sZF9oaWdoXSJyIihvbGRfaGlnaCksIFtuZXdfbG93XSJy
IihuZXdfbG93KSwgW25ld19oaWdoXSJyIihuZXdfaGlnaCksIFtwdHJdInIiKHJhd19wdHIpCisg
ICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAgICApOworICAgIHJldHVy
biBjb25kOworI2Vsc2UKICAgICByZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vf
d2VhaygoX0F0b21pYyBwYXNfcGFpciopcmF3X3B0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBf
X0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKKyNlbmRpZgogI2Vsc2UKICAgICBy
ZXR1cm4gX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKChwYXNfcGFpciopcmF3X3B0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKICNlbmRpZgpAQCAtNDMzLDE3ICs2MjMsNjMgQEAgc3RhdGljIGlubGluZSBwYXNfcGFp
ciBwYXNfY29tcGFyZV9hbmRfc3dhcF9wYWlyX3N0cm9uZyh2b2lkKiByYXdfcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNfcGFp
ciBvbGRfdmFsdWUsIHBhc19wYWlyIG5ld192YWx1ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xB
TkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAg
ICB1aW50cHRyX3QgbG93ID0gMDsKKyAgICB1aW50cHRyX3QgaGlnaCA9IDA7CisgICAgdWludHB0
cl90IG9sZF9sb3cgPSBwYXNfcGFpcl9sb3cob2xkX3ZhbHVlKTsKKyAgICB1aW50cHRyX3Qgb2xk
X2hpZ2ggPSBwYXNfcGFpcl9oaWdoKG9sZF92YWx1ZSk7CisgICAgdWludHB0cl90IG5ld19sb3cg
PSBwYXNfcGFpcl9sb3cobmV3X3ZhbHVlKTsKKyAgICB1aW50cHRyX3QgbmV3X2hpZ2ggPSBwYXNf
cGFpcl9oaWdoKG5ld192YWx1ZSk7CisgICAgdWludHB0cl90IGNvbmQgPSAwOworICAgIHVpbnRw
dHJfdCB0ZW1wID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAg
ICJsZGF4cCAleFtsb3ddLCAleFtoaWdoXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImVvciAl
eFtjb25kXSwgJXhbaGlnaF0sICV4W29sZF9oaWdoXVx0XG4iCisgICAgICAgICJlb3IgJXhbdGVt
cF0sICV4W2xvd10sICV4W29sZF9sb3ddXHRcbiIKKyAgICAgICAgIm9yciAleFtjb25kXSwgJXhb
dGVtcF0sICV4W2NvbmRdXHRcbiIKKyAgICAgICAgImNibnogJXhbY29uZF0sIDFmXHRcbiIKKyAg
ICAgICAgInN0bHhwICV3W2NvbmRdLCAleFtuZXdfbG93XSwgJXhbbmV3X2hpZ2hdLCBbJXhbcHRy
XV1cdFxuIgorICAgICAgICAiY2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0
XG4iCisgICAgIjE6XHRcbiIKKyAgICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAg
ICAgICAvKiBvdXRwdXRzICovICA6IFtsb3ddIj0mciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCks
IFtjb25kXSI9JnIiKGNvbmQpLCBbdGVtcF0iPSZyIih0ZW1wKQorICAgICAgICAvKiBpbnB1dHMg
ICovICA6IFtvbGRfbG93XSJyIihvbGRfbG93KSwgW29sZF9oaWdoXSJyIihvbGRfaGlnaCksIFtu
ZXdfbG93XSJyIihuZXdfbG93KSwgW25ld19oaWdoXSJyIihuZXdfaGlnaCksIFtwdHJdInIiKHJh
d19wdHIpCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAgICApOwor
ICAgIHJldHVybiBwYXNfcGFpcl9jcmVhdGUobG93LCBoaWdoKTsKKyNlbHNlCiAgICAgX19jMTFf
YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIHBhc19wYWlyKilyYXdfcHRy
LCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9D
U1QpOworICAgIHJldHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV9uKChwYXNfcGFpciopcmF3X3B0ciwgJm9sZF92YWx1ZSwgbmV3X3Zh
bHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZW5kaWYK
ICAgICByZXR1cm4gb2xkX3ZhbHVlOworI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgcGFzX3Bh
aXIgcGFzX2F0b21pY19sb2FkX3BhaXIodm9pZCogcmF3X3B0cikKIHsKICNpZiBQQVNfQ09NUElM
RVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5D
WSkKKyAgICB1aW50cHRyX3QgbG93ID0gMDsKKyAgICB1aW50cHRyX3QgaGlnaCA9IDA7CisgICAg
dWludDMyX3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxuIgorICAg
ICAgICAibGR4cCAleFtsb3ddLCAleFtoaWdoXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgInN0
eHAgJXdbY29uZF0sICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAi
Y2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtsb3ddIj0m
ciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAgIC8q
IGlucHV0cyAgKi8gIDogW3B0cl0iciIocmF3X3B0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8g
OiAiY2MiLCAibWVtb3J5IgorICAgICk7CisgICAgcmV0dXJuIHBhc19wYWlyX2NyZWF0ZShsb3cs
IGhpZ2gpOworI2Vsc2UKICAgICByZXR1cm4gX19jMTFfYXRvbWljX2xvYWQoKF9BdG9taWMgcGFz
X3BhaXIqKXJhd19wdHIsIF9fQVRPTUlDX1JFTEFYRUQpOworI2VuZGlmCiAjZWxzZQogICAgIHJl
dHVybiBfX2F0b21pY19sb2FkX24oKHBhc19wYWlyKilyYXdfcHRyLCBfX0FUT01JQ19SRUxBWEVE
KTsKICNlbmRpZgpAQCAtNDUyLDEyICs2ODgsNDggQEAgc3RhdGljIGlubGluZSBwYXNfcGFpciBw
YXNfYXRvbWljX2xvYWRfcGFpcih2b2lkKiByYXdfcHRyKQogc3RhdGljIGlubGluZSB2b2lkIHBh
c19hdG9taWNfc3RvcmVfcGFpcih2b2lkKiByYXdfcHRyLCBwYXNfcGFpciB2YWx1ZSkKIHsKICNp
ZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01J
Q1NfREVQRU5ERU5DWSkKKyAgICB1aW50cHRyX3QgbG93ID0gcGFzX3BhaXJfbG93KHZhbHVlKTsK
KyAgICB1aW50cHRyX3QgaGlnaCA9IHBhc19wYWlyX2hpZ2godmFsdWUpOworICAgIHVpbnRwdHJf
dCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAgICJs
ZGF4cCB4enIsICV4W2NvbmRdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAic3RseHAgJXdbY29u
ZF0sICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2JueiAld1tj
b25kXSwgMGJcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtjb25kXSI9JnIiKGNvbmQp
CisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW2xvd10iciIobG93KSwgW2hpZ2hdInIiKGhpZ2gp
LCBbcHRyXSJyIihyYXdfcHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJjYyIsICJtZW1v
cnkiCisgICAgKTsKKyNlbHNlCiAgICAgX19jMTFfYXRvbWljX3N0b3JlKChfQXRvbWljIHBhc19w
YWlyKilyYXdfcHRyLCB2YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYKICNlbHNlCiAg
ICAgX19hdG9taWNfc3RvcmVfbigocGFzX3BhaXIqKXJhd19wdHIsIHZhbHVlLCBfX0FUT01JQ19T
RVFfQ1NUKTsKICNlbmRpZgogfQogCitzdGF0aWMgUEFTX0FMV0FZU19JTkxJTkUgYm9vbCBwYXNf
Y29tcGFyZV9wdHJfb3BhcXVlKHVpbnRwdHJfdCBhLCB1aW50cHRyX3QgYikKK3sKKyNpZiBQQVNf
Q09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0FSTTY0CisgICAgdWludDMyX3QgY29uZCA9IDA7Cisg
ICAgYXNtIHZvbGF0aWxlICgKKyAgICAgICAgImNtcCAleFthXSwgJXhbYl1cdFxuIgorICAgICAg
ICAiY3NldCAld1tjb25kXSwgZXFcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtjb25k
XSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW2FdInIiKGEpLCBbYl0iciIo
YikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5IgorICAgICk7CisgICAg
cmV0dXJuIGNvbmQ7CisjZWxzZQorICAgIHJldHVybiBhID09IGI7CisjZW5kaWYKKyNlbHNlCisg
ICAgcmV0dXJuIGEgPT0gYjsKKyNlbmRpZgorfQorCiAjZGVmaW5lIFBBU19NSU4oYSwgYikgKHsg
XAogICAgICAgICBQQVNfVFlQRU9GKGEpIF90bXBfYSA9IChhKTsgXAogICAgICAgICBQQVNfVFlQ
RU9GKGIpIF90bXBfYiA9IChiKTsgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447222</attachid>
            <date>2021-12-15 04:36:42 -0800</date>
            <delta_ts>2021-12-15 10:02:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234333-20211215043641.patch</filename>
            <type>text/plain</type>
            <size>23906</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggZWJlMDU0OWIzZjY5OWY4
MmNkYzhlY2FiMDIzNTdlMzM0YTcxOTM2ZS4uMjIwYTA2ZWI3YTNlN2JiZTJkNDU2MDllYzdmZTBj
YWJlMTAxOTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIxLTEyLTE1ICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gSW1wbGVt
ZW50IGF0b21pY3MgaW4gaW5saW5lIGFzc2VtYmx5IGlmIGNvbXBpbGVyIGlzIHVzaW5nIEFSTTY0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQzMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBsaWJwYXMg
cmVsaWVzIG9uIGhvdyB2YWx1ZSBpcyBsb2FkZWQgc2luY2Ugd2UgYXJlIHVzaW5nIGBwYXNfZGVw
ZW5kYC4KKyAgICAgICAgRm9yIGV4YW1wbGUsIHdlIGV4cGVjdCB0aGF0IGNvbXBhcmVfYW5kX3N3
YXBfc3Ryb25nIHJldHVybnMgYSBsb2FkZWQgdmFsdWUuCisgICAgICAgIEJ1dCBpdCBpcyBub3Qg
Z3VhcmFudGVlZDogdGhlIGNvbXBpbGVyIGNhbiByZXR1cm4gYXJndW1lbnQncyBvbGRfdmFsdWUK
KyAgICAgICAgaWYgd2UgZW5zdXJlIHRoYXQgdGhlIGxvYWRlZCB2YWx1ZSBlcXVhbHMgdG8gb2xk
X3ZhbHVlLiBJbiB0aGF0IGNhc2UsCisgICAgICAgIHBhc19kZXBlbmQncyBjaGFpbiBpcyBicm9r
ZW4gYmVjYXVzZSB3ZSBzdGFydCB1c2luZyBkaXN0aW5jdCByZWdpc3RlcnMuCisgICAgICAgIFRo
aXMgY2FuIGhhcHBlbiBpZiBhdG9taWNzIGlzIGltcGxlbWVudGVkIGFzIExML1NDIGxvb3AuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGF0b21pY3MgaW4gaW5saW5lIGFzc2VtYmx5
IGlmIHRoZSBidWlsZCBpcyBBUk02NCAobm90IEFSTTY0RSksCisgICAgICAgIHNvIHRoYXQgd2Ug
ZW5zdXJlIHRoYXQgd2UgcmV0dXJuIGxvYWRlZCB2YWx1ZSdzIHJlZ2lzdGVyIGluc3RlYWQgb2Yg
b2xkIHZhbHVlJ3Mgb25lLgorCisgICAgICAgIFRoaXMgc2lnbmlmaWNhbnRseSBpbXByb3ZlZCBj
cmFzaCByYXRlIG9mIGxpYnBhcyB0ZXN0IHN1aXRlIG9uIEFSTTY0IChvbiBBUk02NEUsIGFsbAor
ICAgICAgICB0ZXN0cyBwYXNzIGFscmVhZHkpLgorCisgICAgICAgICogbGlicGFzL3NyYy9saWJw
YXMvcGFzX2NvbmZpZ19wcmVmaXguaDoKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNf
bG9jay5oOgorICAgICAgICAocGFzX2xvY2tfdW5sb2NrKToKKyAgICAgICAgKiBsaWJwYXMvc3Jj
L2xpYnBhcy9wYXNfbG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGUuaDoKKyAgICAgICAg
KHBhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZV9maW5kKToKKyAgICAgICAgKiBs
aWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaDoKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9z
d2FwX3VpbnQ4X3dlYWspOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDhfc3Ry
b25nKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQxNl93ZWFrKToKKyAgICAg
ICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQzMl93ZWFrKToKKyAgICAgICAgKHBhc19jb21w
YXJlX2FuZF9zd2FwX3VpbnQzMl9zdHJvbmcpOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3
YXBfdWludDY0X3dlYWspOgorICAgICAgICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDY0X3N0
cm9uZyk6CisgICAgICAgIChwYXNfY29tcGFyZV9hbmRfc3dhcF9ib29sX3dlYWspOgorICAgICAg
ICAocGFzX2NvbXBhcmVfYW5kX3N3YXBfYm9vbF9zdHJvbmcpOgorICAgICAgICAocGFzX2NvbXBh
cmVfYW5kX3N3YXBfdWludHB0cl93ZWFrKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2Fw
X3VpbnRwdHJfc3Ryb25nKToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl93ZWFr
KToKKyAgICAgICAgKHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl9zdHJvbmcpOgorICAgICAgICAo
cGFzX2NvbXBhcmVfYW5kX3N3YXBfcGFpcl93ZWFrKToKKyAgICAgICAgKHBhc19jb21wYXJlX2Fu
ZF9zd2FwX3BhaXJfc3Ryb25nKToKKyAgICAgICAgKHBhc19hdG9taWNfbG9hZF9wYWlyKToKKyAg
ICAgICAgKHBhc19hdG9taWNfc3RvcmVfcGFpcik6CisgICAgICAgIChwYXNfY29tcGFyZV9wdHJf
b3BhcXVlKToKKwogMjAyMS0xMi0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBYY29kZSBidWlsZCBvZiBsaWJwYXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19jb25maWdfcHJlZml4
LmggYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfY29uZmlnX3ByZWZpeC5o
CmluZGV4IGQ4ZTg4ZDU1M2M0ZDE0Yjc3YjI3Yjg0MWY0OWIxNDUyYTU5NGQ5YmIuLmQ4ZTU2YTdl
ODAwYWMxZmNkY2Q1NTdkZDhkYWYwYWFjY2MzMzE2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19jb25maWdfcHJlZml4LmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2NvbmZpZ19wcmVmaXguaApAQCAtMzEsOCArMzEs
MTQgQEAKIAogI2lmIChkZWZpbmVkKF9fYXJtNjRfXykgJiYgZGVmaW5lZChfX0FQUExFX18pKSB8
fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtNjRlX18pCiAjZGVmaW5lIF9f
UEFTX0FSTTY0IDEKKyNpZiBkZWZpbmVkKF9fYXJtNjRlX18pCisjZGVmaW5lIF9fUEFTX0FSTTY0
RSAxCisjZWxzZQorI2RlZmluZSBfX1BBU19BUk02NEUgMAorI2VuZGlmCiAjZWxzZQogI2RlZmlu
ZSBfX1BBU19BUk02NCAwCisjZGVmaW5lIF9fUEFTX0FSTTY0RSAwCiAjZW5kaWYKIAogI2lmIChk
ZWZpbmVkKGFybSkgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKEFSTSkgfHwgZGVmaW5l
ZChfQVJNXykpICYmICFfX1BBU19BUk02NApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy9saWJwYXMvcGFzX2xvY2suaCBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGli
cGFzL3Bhc19sb2NrLmgKaW5kZXggZmQ1Mjc0Njk0NGVkODlmZmM3ZTc3ZjUwMDEyZDVlZmM1Njlj
NGM3Zi4uMTFlZDFiYTE1MWFhMjk5ODVlNTQyMTA4YTk0MDU3NTQxMGI1MWJiOCAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2xvY2suaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfbG9jay5oCkBAIC0xMDEsNyArMTAxLDE2
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwYXNfbG9ja191bmxvY2socGFzX2xvY2sqIGxvY2spCiB7
CiAgICAgcGFzX3JhY2VfdGVzdF93aWxsX3VubG9jayhsb2NrKTsKICNpZiBQQVNfQ09NUElMRVIo
Q0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkK
KyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAic3RscmIgd3pyLCBbJXhbcHRyXV1cdFxuIgor
ICAgICAgICAvKiBvdXRwdXRzICovICA6CisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW3B0cl0i
ciIoJmxvY2stPmxvY2spCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogIm1lbW9yeSIKKyAgICAp
OworI2Vsc2UKICAgICBfX2MxMV9hdG9taWNfc3RvcmUoKF9BdG9taWMgYm9vbCopJmxvY2stPmxv
Y2ssIGZhbHNlLCBfX0FUT01JQ19TRVFfQ1NUKTsKKyNlbmRpZgogI2Vsc2UKICAgICBfX2F0b21p
Y19zdG9yZV9uKChib29sKikmbG9jay0+bG9jaywgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNf
bG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGUuaCBiL1NvdXJjZS9ibWFsbG9jL2xpYnBh
cy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZS5oCmluZGV4
IDkzMjk3OWU1Nzc1Mzk1YjQ0YWI0ZDM4NWM3Y2MyNTJlZDEzMzZmODUuLjgyNDdiYTM0MDFlMjg2
NzZkNTFlY2M3Yzg5Y2NkOWRjOGRjODU0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9wdHJfcHRyX2hhc2h0YWJsZS5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19sb2NrX2ZyZWVfcmVhZF9w
dHJfcHRyX2hhc2h0YWJsZS5oCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyBQQVNfQUxXQVlTX0lO
TElORSB2b2lkKiBwYXNfbG9ja19mcmVlX3JlYWRfcHRyX3B0cl9oYXNodGFibGVfZmluZCgKICAg
ICAgICAgICAgTk9URTogUGVyZiB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgZGlkIGFuIGF0b21pYyBw
YWlyIHJlYWQgb24gQXBwbGUgU2lsaWNvbi4gVGhlbiB3ZSdkCiAgICAgICAgICAgIGF2b2lkIHRo
ZSBzeW50aGV0aWMgcG9pbnRlciBjaGFzZS4gKi8KICAgICAgICAgbG9hZGVkX2tleSA9IHBhc19w
YWlyX2xvdygqZW50cnkpOwotICAgICAgICBpZiAoKGNvbnN0IHZvaWQqKWxvYWRlZF9rZXkgPT0g
a2V5KQorICAgICAgICBpZiAocGFzX2NvbXBhcmVfcHRyX29wYXF1ZShsb2FkZWRfa2V5LCAodWlu
dHB0cl90KWtleSkpCiAgICAgICAgICAgICByZXR1cm4gKHZvaWQqKXBhc19wYWlyX2hpZ2goZW50
cnlbcGFzX2RlcGVuZChsb2FkZWRfa2V5KV0pOwogCiAgICAgICAgIGlmIChsb2FkZWRfa2V5ID09
IFVJTlRQVFJfTUFYKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJw
YXMvcGFzX3V0aWxzLmggYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRp
bHMuaAppbmRleCBjZDBiYTVjYjY4MDQ3MDU4MDBlNjY1ZDE3MTZkNDBhM2U1NTcwNTY1Li41MjM5
YzdmZTMzYWNkMmUyZGQzNjI5N2NlYjc3YTk3OTMyNjVhOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdXRpbHMuaApAQCAtNzksMTIgKzc5LDE5IEBAIFBBU19C
RUdJTl9FWFRFUk5fQzsKICNkZWZpbmUgUEFTX1VOVVNFRF9QQVJBTSh2YXJpYWJsZSkgX19QQVNf
VU5VU0VEX1BBUkFNKHZhcmlhYmxlKQogCiAjZGVmaW5lIFBBU19BUk02NCBfX1BBU19BUk02NAor
I2RlZmluZSBQQVNfQVJNNjRFIF9fUEFTX0FSTTY0RQogI2RlZmluZSBQQVNfQVJNMzIgX19QQVNf
QVJNMzIKIAogI2RlZmluZSBQQVNfQVJNIF9fUEFTX0FSTQogCiAjZGVmaW5lIFBBU19SSVNDViBf
X1BBU19SSVNDVgogCisjaWYgUEFTX0FSTTY0ICYmICFQQVNfQVJNNjRFICYmICFQQVNfT1MoTUFD
KQorLyogY2xhbmcgaGFzIGEgYnVnIG9uIEFSTTY0IGF0b21pY3Mgd2hlbiBpdCBpcyBnZW5lcmF0
aW5nIG5vbi1MU0UtYXRvbWljcy4gSWYgQ1BVIGlzIEFSTTY0RSwgY2xhbmcgdXNlcyBMU0UtYXRv
bWljcy4KKyAgIEFuZCBpZiBPUyBpcyBNYWMsIHRoZW4gY2xhbmcgdXNlcyBMU0UtYXRvbWljcyB3
aGVuIGl0IGlzIEFSTTY0IHNpbmNlIGFsbCBBUk02NCBtYWNPUyBzdXBwb3J0cyBMU0UtYXRvbWlj
cy4gKi8KKyNkZWZpbmUgUEFTX0NPTVBJTEVSX0NMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5D
WSAxCisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiAjZGVmaW5lIFBBU19UWVBFT0YoYSkg
ZGVjbHR5cGUgKGEpCiAjZWxzZQpAQCAtMjMwLDU3ICsyMzcsMTAxIEBAIHN0YXRpYyBpbmxpbmUg
dWludDY0X3QgcGFzX21ha2VfbWFzazY0KHVpbnQ2NF90IG51bV9iaXRzKQogICAgIHJldHVybiAo
KHVpbnQ2NF90KTEgPDwgbnVtX2JpdHMpIC0gMTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnRwdHJfd2Vhayh1aW50cHRyX3QqIHB0ciwgdWludHB0cl90
IG9sZF92YWx1ZSwgdWludHB0cl90IG5ld192YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXNf
Y29tcGFyZV9hbmRfc3dhcF91aW50OF93ZWFrKHVpbnQ4X3QqIHB0ciwgdWludDhfdCBvbGRfdmFs
dWUsIHVpbnQ4X3QgbmV3X3ZhbHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKLSAgICBy
ZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0b21pYyB1aW50cHRy
X3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01J
Q19TRVFfQ1NUKTsKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRF
TkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1aW50MzJfdCBjb25kID0gMDsKKyAg
ICBhc20gdm9sYXRpbGUgKAorICAgICAgICAibGRheHJiICV3W3ZhbHVlXSwgWyV4W3B0cl1dXHRc
biIKKyAgICAgICAgImNtcCAld1t2YWx1ZV0sICV3W29sZF92YWx1ZV0sIHV4dGJcdFxuIgorICAg
ICAgICAiYi5uZSAxZlx0XG4iCisgICAgICAgICJzdGx4cmIgJXdbY29uZF0sICV3W25ld192YWx1
ZV0sIFsleFtwdHJdXVx0XG4iCisgICAgICAgICJjYnogJXdbY29uZF0sIDBmXHRcbiIKKyAgICAg
ICAgImIgMmZcdFxuIgorICAgICIwOlx0XG4iCisgICAgICAgICJtb3YgJXdbY29uZF0sICMxXHRc
biIKKyAgICAgICAgImIgM2ZcdFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJleFx0XG4i
CisgICAgIjI6XHRcbiIKKyAgICAgICAgIm1vdiAld1tjb25kXSwgd3pyXHRcbiIKKyAgICAiMzpc
dFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25k
XSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW29sZF92YWx1ZV0iciIoKHVp
bnQzMl90KW9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKCh1aW50MzJfdCluZXdfdmFsdWUpLCBb
cHRyXSJyIihwdHIpCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAg
ICApOworICAgIHJldHVybiBjb25kOwogI2Vsc2UKLSAgICByZXR1cm4gX19hdG9taWNfY29tcGFy
ZV9leGNoYW5nZV9uKCh1aW50cHRyX3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVl
LCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKKyAgICByZXR1cm4gX19jMTFf
YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0b21pYyB1aW50OF90KilwdHIsICZvbGRf
dmFsdWUsIG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CiAj
ZW5kaWYKLX0KLQotc3RhdGljIGlubGluZSB1aW50cHRyX3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBf
dWludHB0cl9zdHJvbmcodWludHB0cl90KiBwdHIsIHVpbnRwdHJfdCBvbGRfdmFsdWUsIHVpbnRw
dHJfdCBuZXdfdmFsdWUpCi17Ci0jaWYgUEFTX0NPTVBJTEVSKENMQU5HKQotICAgIF9fYzExX2F0
b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50cHRyX3QqKXB0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsK
ICNlbHNlCi0gICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCh1aW50cHRyX3QqKXB0ciwg
Jm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNf
U0VRX0NTVCk7CisgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDhf
dCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIHRydWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9f
QVRPTUlDX1NFUV9DU1QpOwogI2VuZGlmCi0gICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIAotc3Rh
dGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX2Jvb2xfd2Vhayhib29sKiBwdHIs
IGJvb2wgb2xkX3ZhbHVlLCBib29sIG5ld192YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBw
YXNfY29tcGFyZV9hbmRfc3dhcF91aW50OF9zdHJvbmcodWludDhfdCogcHRyLCB1aW50OF90IG9s
ZF92YWx1ZSwgdWludDhfdCBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NPTVBJTEVSKENMQU5HKQot
ICAgIHJldHVybiBfX2MxMV9hdG9taWNfY29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIGJv
b2wqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01J
Q19TRVFfQ1NUKTsKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRF
TkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1aW50MzJfdCBjb25kID0gMDsKKyAg
ICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAgICJsZGF4cmIgJXdbdmFsdWVd
LCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3ZhbHVlXSwg
dXh0Ylx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyYiAld1tjb25k
XSwgJXdbbmV3X3ZhbHVlXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImNibnogJXdbY29uZF0s
IDBiXHRcbiIKKyAgICAgICAgImIgMmZcdFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJl
eFx0XG4iCisgICAgIjI6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFsdWVdIj0m
ciIodmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtv
bGRfdmFsdWVdInIiKCh1aW50MzJfdClvbGRfdmFsdWUpLCBbbmV3X3ZhbHVlXSJyIigodWludDMy
X3QpbmV3X3ZhbHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJj
YyIsICJtZW1vcnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CiAjZWxzZQotICAgIHJldHVy
biBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oKGJvb2wqKXB0ciwgJm9sZF92YWx1ZSwgbmV3
X3ZhbHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAg
X19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIHVpbnQ4X3QqKXB0
ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKKyAgICByZXR1cm4gb2xkX3ZhbHVlOwogI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF9ib29sX3N0cm9uZyhib29sKiBwdHIsIGJvb2wgb2xk
X3ZhbHVlLCBib29sIG5ld192YWx1ZSkKLXsKLSNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCi0gICAg
X19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIGJvb2wqKXB0ciwg
Jm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NU
KTsKICNlbHNlCi0gICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKChib29sKilwdHIsICZv
bGRfdmFsdWUsIG5ld192YWx1ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NF
UV9DU1QpOwotI2VuZGlmCisgICAgX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKCh1aW50OF90
KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9f
QVRPTUlDX1NFUV9DU1QpOwogICAgIHJldHVybiBvbGRfdmFsdWU7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF91aW50OF93ZWFrKHVpbnQ4X3QqIHB0ciwgdWlu
dDhfdCBvbGRfdmFsdWUsIHVpbnQ4X3QgbmV3X3ZhbHVlKQotewotI2lmIFBBU19DT01QSUxFUihD
TEFORykKLSAgICByZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfd2VhaygoX0F0
b21pYyB1aW50OF90KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NT
VCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZWxzZQotICAgIHJldHVybiBfX2F0b21pY19jb21wYXJl
X2V4Y2hhbmdlX24oKHVpbnQ4X3QqKXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBf
X0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKICNlbmRpZgogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDE2X3dlYWsodWludDE2X3QqIHB0
ciwgdWludDE2X3Qgb2xkX3ZhbHVlLCB1aW50MTZfdCBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NP
TVBJTEVSKENMQU5HKQorI2lmIFBBU19DT01QSUxFUihDTEFOR19BUk02NF9BVE9NSUNTX0RFUEVO
REVOQ1kpCisgICAgdWludDMyX3QgdmFsdWUgPSAwOworICAgIHVpbnQzMl90IGNvbmQgPSAwOwor
ICAgIGFzbSB2b2xhdGlsZSAoCisgICAgICAgICJsZGF4cmggJXdbdmFsdWVdLCBbJXhbcHRyXV1c
dFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3ZhbHVlXSwgdXh0aFx0XG4iCisg
ICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyaCAld1tjb25kXSwgJXdbbmV3X3Zh
bHVlXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImNieiAld1tjb25kXSwgMGZcdFxuIgorICAg
ICAgICAiYiAyZlx0XG4iCisgICAgIjA6XHRcbiIKKyAgICAgICAgIm1vdiAld1tjb25kXSwgIzFc
dFxuIgorICAgICAgICAiYiAzZlx0XG4iCisgICAgIjE6XHRcbiIKKyAgICAgICAgImNscmV4XHRc
biIKKyAgICAiMjpcdFxuIgorICAgICAgICAibW92ICV3W2NvbmRdLCB3enJcdFxuIgorICAgICIz
Olx0XG4iCisgICAgICAgIC8qIG91dHB1dHMgKi8gIDogW3ZhbHVlXSI9JnIiKHZhbHVlKSwgW2Nv
bmRdIj0mciIoY29uZCkKKyAgICAgICAgLyogaW5wdXRzICAqLyAgOiBbb2xkX3ZhbHVlXSJyIigo
dWludDMyX3Qpb2xkX3ZhbHVlKSwgW25ld192YWx1ZV0iciIoKHVpbnQzMl90KW5ld192YWx1ZSks
IFtwdHJdInIiKHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5Igor
ICAgICk7CisgICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQxNl90KilwdHIsICZvbGRfdmFsdWUs
IG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDE2X3Qq
KXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FU
T01JQ19TRVFfQ1NUKTsKICNlbmRpZgpAQCAtMjg5LDcgKzM0MCwzMiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDE2X3dlYWsodWludDE2X3QqIHB0ciwgdWlu
dDE2X3Qgb2xkXwogc3RhdGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQz
Ml93ZWFrKHVpbnQzMl90KiBwdHIsIHVpbnQzMl90IG9sZF92YWx1ZSwgdWludDMyX3QgbmV3X3Zh
bHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKKyNpZiBQQVNfQ09NUElMRVIoQ0xBTkdf
QVJNNjRfQVRPTUlDU19ERVBFTkRFTkNZKQorICAgIHVpbnQzMl90IHZhbHVlID0gMDsKKyAgICB1
aW50MzJfdCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAibGRheHIgJXdb
dmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVlXSwgJXdbb2xkX3Zh
bHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhyICV3W2NvbmRd
LCAld1tuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2J6ICV3W2NvbmRdLCAw
Zlx0XG4iCisgICAgICAgICJiIDJmXHRcbiIKKyAgICAiMDpcdFxuIgorICAgICAgICAibW92ICV3
W2NvbmRdLCAjMVx0XG4iCisgICAgICAgICJiIDNmXHRcbiIKKyAgICAiMTpcdFxuIgorICAgICAg
ICAiY2xyZXhcdFxuIgorICAgICIyOlx0XG4iCisgICAgICAgICJtb3YgJXdbY29uZF0sIHd6clx0
XG4iCisgICAgIjM6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFsdWVdIj0mciIo
dmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtvbGRf
dmFsdWVdInIiKG9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKG5ld192YWx1ZSksIFtwdHJdInIi
KHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5IgorICAgICk7Cisg
ICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNfY29tcGFyZV9l
eGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQzMl90KilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1
ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYKICNlbHNlCiAg
ICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDMyX3QqKXB0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKICNlbmRpZgpAQCAtMjk4LDE3ICszNzQsNjQgQEAgc3RhdGljIGlubGluZSBib29sIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnQzMl93ZWFrKHVpbnQzMl90KiBwdHIsIHVpbnQzMl90IG9s
ZF8KIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDMyX3N0
cm9uZyh1aW50MzJfdCogcHRyLCB1aW50MzJfdCBvbGRfdmFsdWUsIHVpbnQzMl90IG5ld192YWx1
ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FS
TTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAgICB1aW50MzJfdCB2YWx1ZSA9IDA7CisgICAgdWlu
dDMyX3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxuIgorICAgICAg
ICAibGRheHIgJXdbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV3W3ZhbHVl
XSwgJXdbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0
bHhyICV3W2NvbmRdLCAld1tuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2Ju
eiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0XG4iCisgICAgIjE6XHRcbiIKKyAg
ICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6
IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0
cyAgKi8gIDogW29sZF92YWx1ZV0iciIob2xkX3ZhbHVlKSwgW25ld192YWx1ZV0iciIobmV3X3Zh
bHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJjYyIsICJtZW1v
cnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CisjZWxzZQogICAgIF9fYzExX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50MzJfdCopcHRyLCAmb2xkX3ZhbHVl
LCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOworICAgIHJl
dHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNfY29tcGFyZV9leGNo
YW5nZV9uKCh1aW50MzJfdCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIGZhbHNlLCBfX0FU
T01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKLSNlbmRpZgogICAgIHJldHVybiBvbGRf
dmFsdWU7CisjZW5kaWYKIH0KIAogc3RhdGljIGlubGluZSBib29sIHBhc19jb21wYXJlX2FuZF9z
d2FwX3VpbnQ2NF93ZWFrKHVpbnQ2NF90KiBwdHIsIHVpbnQ2NF90IG9sZF92YWx1ZSwgdWludDY0
X3QgbmV3X3ZhbHVlKQogewogI2lmIFBBU19DT01QSUxFUihDTEFORykKKyNpZiBQQVNfQ09NUElM
RVIoQ0xBTkdfQVJNNjRfQVRPTUlDU19ERVBFTkRFTkNZKQorICAgIHVpbnQ2NF90IHZhbHVlID0g
MDsKKyAgICB1aW50NjRfdCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICAgICAi
bGRheHIgJXhbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21wICV4W3ZhbHVlXSwg
JXhbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAgICAgICAgInN0bHhy
ICV3W2NvbmRdLCAleFtuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2J6ICV3
W2NvbmRdLCAwZlx0XG4iCisgICAgICAgICJiIDJmXHRcbiIKKyAgICAiMDpcdFxuIgorICAgICAg
ICAibW92ICV4W2NvbmRdLCAjMVx0XG4iCisgICAgICAgICJiIDNmXHRcbiIKKyAgICAiMTpcdFxu
IgorICAgICAgICAiY2xyZXhcdFxuIgorICAgICIyOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29u
ZF0sIHh6clx0XG4iCisgICAgIjM6XHRcbiIKKyAgICAgICAgLyogb3V0cHV0cyAqLyAgOiBbdmFs
dWVdIj0mciIodmFsdWUpLCBbY29uZF0iPSZyIihjb25kKQorICAgICAgICAvKiBpbnB1dHMgICov
ICA6IFtvbGRfdmFsdWVdInIiKG9sZF92YWx1ZSksIFtuZXdfdmFsdWVdInIiKG5ld192YWx1ZSks
IFtwdHJdInIiKHB0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5Igor
ICAgICk7CisgICAgcmV0dXJuIGNvbmQ7CisjZWxzZQogICAgIHJldHVybiBfX2MxMV9hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV93ZWFrKChfQXRvbWljIHVpbnQ2NF90KilwdHIsICZvbGRfdmFsdWUs
IG5ld192YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYK
ICNlbHNlCiAgICAgcmV0dXJuIF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigodWludDY0X3Qq
KXB0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FU
T01JQ19TRVFfQ1NUKTsKICNlbmRpZgpAQCAtMzE3LDMwICs0NDAsNjMgQEAgc3RhdGljIGlubGlu
ZSBib29sIHBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF93ZWFrKHVpbnQ2NF90KiBwdHIsIHVp
bnQ2NF90IG9sZF8KIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgcGFzX2NvbXBhcmVfYW5kX3N3YXBf
dWludDY0X3N0cm9uZyh1aW50NjRfdCogcHRyLCB1aW50NjRfdCBvbGRfdmFsdWUsIHVpbnQ2NF90
IG5ld192YWx1ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVS
KENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAgICB1aW50NjRfdCB2YWx1ZSA9IDA7
CisgICAgdWludDY0X3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxu
IgorICAgICAgICAibGRheHIgJXhbdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY21w
ICV4W3ZhbHVlXSwgJXhbb2xkX3ZhbHVlXVx0XG4iCisgICAgICAgICJiLm5lIDFmXHRcbiIKKyAg
ICAgICAgInN0bHhyICV3W2NvbmRdLCAleFtuZXdfdmFsdWVdLCBbJXhbcHRyXV1cdFxuIgorICAg
ICAgICAiY2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0XG4iCisgICAgIjE6
XHRcbiIKKyAgICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAgICAgICAvKiBvdXRw
dXRzICovICA6IFt2YWx1ZV0iPSZyIih2YWx1ZSksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAg
IC8qIGlucHV0cyAgKi8gIDogW29sZF92YWx1ZV0iciIob2xkX3ZhbHVlKSwgW25ld192YWx1ZV0i
ciIobmV3X3ZhbHVlKSwgW3B0cl0iciIocHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJj
YyIsICJtZW1vcnkiCisgICAgKTsKKyAgICByZXR1cm4gdmFsdWU7CisjZWxzZQogICAgIF9fYzEx
X2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3N0cm9uZygoX0F0b21pYyB1aW50NjRfdCopcHRyLCAm
b2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1Qp
OworICAgIHJldHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNfY29t
cGFyZV9leGNoYW5nZV9uKCh1aW50NjRfdCopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIGZh
bHNlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKLSNlbmRpZgogICAgIHJl
dHVybiBvbGRfdmFsdWU7CisjZW5kaWYKK30KKworc3RhdGljIGlubGluZSBib29sIHBhc19jb21w
YXJlX2FuZF9zd2FwX2Jvb2xfd2Vhayhib29sKiBwdHIsIGJvb2wgb2xkX3ZhbHVlLCBib29sIG5l
d192YWx1ZSkKK3sKKyAgICByZXR1cm4gcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDhfd2Vhaygo
dWludDhfdCopcHRyLCBvbGRfdmFsdWUgPyAxIDogMCwgbmV3X3ZhbHVlID8gMSA6IDApOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfYm9vbF9zdHJvbmcoYm9v
bCogcHRyLCBib29sIG9sZF92YWx1ZSwgYm9vbCBuZXdfdmFsdWUpCit7CisgICAgcmV0dXJuIHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnQ4X3N0cm9uZygodWludDhfdCopcHRyLCBvbGRfdmFsdWUg
PyAxIDogMCwgbmV3X3ZhbHVlID8gMSA6IDApOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgcGFz
X2NvbXBhcmVfYW5kX3N3YXBfdWludHB0cl93ZWFrKHVpbnRwdHJfdCogcHRyLCB1aW50cHRyX3Qg
b2xkX3ZhbHVlLCB1aW50cHRyX3QgbmV3X3ZhbHVlKQoreworICAgIHJldHVybiBwYXNfY29tcGFy
ZV9hbmRfc3dhcF91aW50NjRfd2VhaygodWludDY0X3QqKXB0ciwgKHVpbnQ2NF90KW9sZF92YWx1
ZSwgKHVpbnQ2NF90KW5ld192YWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludHB0cl90IHBh
c19jb21wYXJlX2FuZF9zd2FwX3VpbnRwdHJfc3Ryb25nKHVpbnRwdHJfdCogcHRyLCB1aW50cHRy
X3Qgb2xkX3ZhbHVlLCB1aW50cHRyX3QgbmV3X3ZhbHVlKQoreworICAgIHJldHVybiAodWludHB0
cl90KXBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF9zdHJvbmcoKHVpbnQ2NF90KilwdHIsICh1
aW50NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgcGFzX2NvbXBhcmVfYW5kX3N3YXBfcHRyX3dlYWsodm9pZCogcHRyLCBjb25zdCB2
b2lkKiBvbGRfdmFsdWUsIGNvbnN0IHZvaWQqIG5ld192YWx1ZSkKIHsKLSNpZiBQQVNfQ09NUElM
RVIoQ0xBTkcpCi0gICAgcmV0dXJuIF9fYzExX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX3dlYWso
KGNvbnN0IHZvaWQqIF9BdG9taWMgKilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1ZSwgX19BVE9N
SUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZWxzZQotICAgIHJldHVybiBfX2F0b21p
Y19jb21wYXJlX2V4Y2hhbmdlX24oKGNvbnN0IHZvaWQqKilwdHIsICZvbGRfdmFsdWUsIG5ld192
YWx1ZSwgdHJ1ZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZW5kaWYK
KyAgICByZXR1cm4gcGFzX2NvbXBhcmVfYW5kX3N3YXBfdWludDY0X3dlYWsoKHVpbnQ2NF90Kilw
dHIsICh1aW50NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiBzdGF0
aWMgaW5saW5lIHZvaWQqIHBhc19jb21wYXJlX2FuZF9zd2FwX3B0cl9zdHJvbmcodm9pZCogcHRy
LCBjb25zdCB2b2lkKiBvbGRfdmFsdWUsIGNvbnN0IHZvaWQqIG5ld192YWx1ZSkKIHsKLSNpZiBQ
QVNfQ09NUElMRVIoQ0xBTkcpCi0gICAgX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ry
b25nKChjb25zdCB2b2lkKiBfQXRvbWljICopcHRyLCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9f
QVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOwotI2Vsc2UKLSAgICBfX2F0b21pY19j
b21wYXJlX2V4Y2hhbmdlX24oKGNvbnN0IHZvaWQqKilwdHIsICZvbGRfdmFsdWUsIG5ld192YWx1
ZSwgZmFsc2UsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9DU1QpOwotI2VuZGlmCi0g
ICAgcmV0dXJuICh2b2lkKikodWludHB0cl90KW9sZF92YWx1ZTsKKyAgICByZXR1cm4gKHZvaWQq
KXBhc19jb21wYXJlX2FuZF9zd2FwX3VpbnQ2NF9zdHJvbmcoKHVpbnQ2NF90KilwdHIsICh1aW50
NjRfdClvbGRfdmFsdWUsICh1aW50NjRfdCluZXdfdmFsdWUpOwogfQogCiAjZGVmaW5lIHBhc19j
b21waWxlcl9mZW5jZSBfX3Bhc19jb21waWxlcl9mZW5jZQpAQCAtMzcyLDYgKzUyOCw3IEBAIHN0
YXRpYyBQQVNfQUxXQVlTX0lOTElORSB1aW50cHRyX3QgcGFzX29wYXF1ZSh1aW50cHRyX3QgdmFs
dWUpCiB9CiAKICNpZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisKIHN0cnVjdCBwYXNfcGFpcjsKIHR5
cGVkZWYgc3RydWN0IHBhc19wYWlyIHBhc19wYWlyOwogCkBAIC00MjMsNyArNTgwLDQwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBwYXNfY29tcGFyZV9hbmRfc3dhcF9wYWlyX3dlYWsodm9pZCogcmF3
X3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzX3BhaXIgb2xkX3ZhbHVlLCBwYXNfcGFpciBuZXdfdmFsdWUpCiB7CiAjaWYgUEFTX0NPTVBJ
TEVSKENMQU5HKQorI2lmIFBBU19DT01QSUxFUihDTEFOR19BUk02NF9BVE9NSUNTX0RFUEVOREVO
Q1kpCisgICAgdWludHB0cl90IGxvdyA9IDA7CisgICAgdWludHB0cl90IGhpZ2ggPSAwOworICAg
IHVpbnRwdHJfdCBvbGRfbG93ID0gcGFzX3BhaXJfbG93KG9sZF92YWx1ZSk7CisgICAgdWludHB0
cl90IG9sZF9oaWdoID0gcGFzX3BhaXJfaGlnaChvbGRfdmFsdWUpOworICAgIHVpbnRwdHJfdCBu
ZXdfbG93ID0gcGFzX3BhaXJfbG93KG5ld192YWx1ZSk7CisgICAgdWludHB0cl90IG5ld19oaWdo
ID0gcGFzX3BhaXJfaGlnaChuZXdfdmFsdWUpOworICAgIHVpbnRwdHJfdCBjb25kID0gMDsKKyAg
ICB1aW50cHRyX3QgdGVtcCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAgICAgImxkYXhw
ICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiZW9yICV4W2NvbmRd
LCAleFtoaWdoXSwgJXhbb2xkX2hpZ2hdXHRcbiIKKyAgICAgICAgImVvciAleFt0ZW1wXSwgJXhb
bG93XSwgJXhbb2xkX2xvd11cdFxuIgorICAgICAgICAib3JyICV4W2NvbmRdLCAleFt0ZW1wXSwg
JXhbY29uZF1cdFxuIgorICAgICAgICAiY2JueiAleFtjb25kXSwgMWZcdFxuIgorICAgICAgICAi
c3RseHAgJXdbY29uZF0sICV4W25ld19sb3ddLCAleFtuZXdfaGlnaF0sIFsleFtwdHJdXVx0XG4i
CisgICAgICAgICJjYnogJXdbY29uZF0sIDBmXHRcbiIKKyAgICAgICAgImIgMmZcdFxuIgorICAg
ICIwOlx0XG4iCisgICAgICAgICJtb3YgJXhbY29uZF0sICMxXHRcbiIKKyAgICAgICAgImIgM2Zc
dFxuIgorICAgICIxOlx0XG4iCisgICAgICAgICJjbHJleFx0XG4iCisgICAgIjI6XHRcbiIKKyAg
ICAgICAgIm1vdiAleFtjb25kXSwgeHpyXHRcbiIKKyAgICAiMzpcdFxuIgorICAgICAgICAvKiBv
dXRwdXRzICovICA6IFtsb3ddIj0mciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCksIFtjb25kXSI9
JnIiKGNvbmQpLCBbdGVtcF0iPSZyIih0ZW1wKQorICAgICAgICAvKiBpbnB1dHMgICovICA6IFtv
bGRfbG93XSJyIihvbGRfbG93KSwgW29sZF9oaWdoXSJyIihvbGRfaGlnaCksIFtuZXdfbG93XSJy
IihuZXdfbG93KSwgW25ld19oaWdoXSJyIihuZXdfaGlnaCksIFtwdHJdInIiKHJhd19wdHIpCisg
ICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAgICApOworICAgIHJldHVy
biBjb25kOworI2Vsc2UKICAgICByZXR1cm4gX19jMTFfYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vf
d2VhaygoX0F0b21pYyBwYXNfcGFpciopcmF3X3B0ciwgJm9sZF92YWx1ZSwgbmV3X3ZhbHVlLCBf
X0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFfQ1NUKTsKKyNlbmRpZgogI2Vsc2UKICAgICBy
ZXR1cm4gX19hdG9taWNfY29tcGFyZV9leGNoYW5nZV9uKChwYXNfcGFpciopcmF3X3B0ciwgJm9s
ZF92YWx1ZSwgbmV3X3ZhbHVlLCB0cnVlLCBfX0FUT01JQ19TRVFfQ1NULCBfX0FUT01JQ19TRVFf
Q1NUKTsKICNlbmRpZgpAQCAtNDMzLDE3ICs2MjMsNjMgQEAgc3RhdGljIGlubGluZSBwYXNfcGFp
ciBwYXNfY29tcGFyZV9hbmRfc3dhcF9wYWlyX3N0cm9uZyh2b2lkKiByYXdfcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNfcGFp
ciBvbGRfdmFsdWUsIHBhc19wYWlyIG5ld192YWx1ZSkKIHsKICNpZiBQQVNfQ09NUElMRVIoQ0xB
TkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5DWSkKKyAg
ICB1aW50cHRyX3QgbG93ID0gMDsKKyAgICB1aW50cHRyX3QgaGlnaCA9IDA7CisgICAgdWludHB0
cl90IG9sZF9sb3cgPSBwYXNfcGFpcl9sb3cob2xkX3ZhbHVlKTsKKyAgICB1aW50cHRyX3Qgb2xk
X2hpZ2ggPSBwYXNfcGFpcl9oaWdoKG9sZF92YWx1ZSk7CisgICAgdWludHB0cl90IG5ld19sb3cg
PSBwYXNfcGFpcl9sb3cobmV3X3ZhbHVlKTsKKyAgICB1aW50cHRyX3QgbmV3X2hpZ2ggPSBwYXNf
cGFpcl9oaWdoKG5ld192YWx1ZSk7CisgICAgdWludHB0cl90IGNvbmQgPSAwOworICAgIHVpbnRw
dHJfdCB0ZW1wID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAg
ICJsZGF4cCAleFtsb3ddLCAleFtoaWdoXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgImVvciAl
eFtjb25kXSwgJXhbaGlnaF0sICV4W29sZF9oaWdoXVx0XG4iCisgICAgICAgICJlb3IgJXhbdGVt
cF0sICV4W2xvd10sICV4W29sZF9sb3ddXHRcbiIKKyAgICAgICAgIm9yciAleFtjb25kXSwgJXhb
dGVtcF0sICV4W2NvbmRdXHRcbiIKKyAgICAgICAgImNibnogJXhbY29uZF0sIDFmXHRcbiIKKyAg
ICAgICAgInN0bHhwICV3W2NvbmRdLCAleFtuZXdfbG93XSwgJXhbbmV3X2hpZ2hdLCBbJXhbcHRy
XV1cdFxuIgorICAgICAgICAiY2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAiYiAyZlx0
XG4iCisgICAgIjE6XHRcbiIKKyAgICAgICAgImNscmV4XHRcbiIKKyAgICAiMjpcdFxuIgorICAg
ICAgICAvKiBvdXRwdXRzICovICA6IFtsb3ddIj0mciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCks
IFtjb25kXSI9JnIiKGNvbmQpLCBbdGVtcF0iPSZyIih0ZW1wKQorICAgICAgICAvKiBpbnB1dHMg
ICovICA6IFtvbGRfbG93XSJyIihvbGRfbG93KSwgW29sZF9oaWdoXSJyIihvbGRfaGlnaCksIFtu
ZXdfbG93XSJyIihuZXdfbG93KSwgW25ld19oaWdoXSJyIihuZXdfaGlnaCksIFtwdHJdInIiKHJh
d19wdHIpCisgICAgICAgIC8qIGNsb2JiZXJzICovIDogImNjIiwgIm1lbW9yeSIKKyAgICApOwor
ICAgIHJldHVybiBwYXNfcGFpcl9jcmVhdGUobG93LCBoaWdoKTsKKyNlbHNlCiAgICAgX19jMTFf
YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKChfQXRvbWljIHBhc19wYWlyKilyYXdfcHRy
LCAmb2xkX3ZhbHVlLCBuZXdfdmFsdWUsIF9fQVRPTUlDX1NFUV9DU1QsIF9fQVRPTUlDX1NFUV9D
U1QpOworICAgIHJldHVybiBvbGRfdmFsdWU7CisjZW5kaWYKICNlbHNlCiAgICAgX19hdG9taWNf
Y29tcGFyZV9leGNoYW5nZV9uKChwYXNfcGFpciopcmF3X3B0ciwgJm9sZF92YWx1ZSwgbmV3X3Zh
bHVlLCBmYWxzZSwgX19BVE9NSUNfU0VRX0NTVCwgX19BVE9NSUNfU0VRX0NTVCk7Ci0jZW5kaWYK
ICAgICByZXR1cm4gb2xkX3ZhbHVlOworI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgcGFzX3Bh
aXIgcGFzX2F0b21pY19sb2FkX3BhaXIodm9pZCogcmF3X3B0cikKIHsKICNpZiBQQVNfQ09NUElM
RVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01JQ1NfREVQRU5ERU5D
WSkKKyAgICB1aW50cHRyX3QgbG93ID0gMDsKKyAgICB1aW50cHRyX3QgaGlnaCA9IDA7CisgICAg
dWludDMyX3QgY29uZCA9IDA7CisgICAgYXNtIHZvbGF0aWxlICgKKyAgICAiMDpcdFxuIgorICAg
ICAgICAibGR4cCAleFtsb3ddLCAleFtoaWdoXSwgWyV4W3B0cl1dXHRcbiIKKyAgICAgICAgInN0
eHAgJXdbY29uZF0sICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAi
Y2JueiAld1tjb25kXSwgMGJcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtsb3ddIj0m
ciIobG93KSwgW2hpZ2hdIj0mciIoaGlnaCksIFtjb25kXSI9JnIiKGNvbmQpCisgICAgICAgIC8q
IGlucHV0cyAgKi8gIDogW3B0cl0iciIocmF3X3B0cikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8g
OiAiY2MiLCAibWVtb3J5IgorICAgICk7CisgICAgcmV0dXJuIHBhc19wYWlyX2NyZWF0ZShsb3cs
IGhpZ2gpOworI2Vsc2UKICAgICByZXR1cm4gX19jMTFfYXRvbWljX2xvYWQoKF9BdG9taWMgcGFz
X3BhaXIqKXJhd19wdHIsIF9fQVRPTUlDX1JFTEFYRUQpOworI2VuZGlmCiAjZWxzZQogICAgIHJl
dHVybiBfX2F0b21pY19sb2FkX24oKHBhc19wYWlyKilyYXdfcHRyLCBfX0FUT01JQ19SRUxBWEVE
KTsKICNlbmRpZgpAQCAtNDUyLDEyICs2ODgsNDggQEAgc3RhdGljIGlubGluZSBwYXNfcGFpciBw
YXNfYXRvbWljX2xvYWRfcGFpcih2b2lkKiByYXdfcHRyKQogc3RhdGljIGlubGluZSB2b2lkIHBh
c19hdG9taWNfc3RvcmVfcGFpcih2b2lkKiByYXdfcHRyLCBwYXNfcGFpciB2YWx1ZSkKIHsKICNp
ZiBQQVNfQ09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0NPTVBJTEVSKENMQU5HX0FSTTY0X0FUT01J
Q1NfREVQRU5ERU5DWSkKKyAgICB1aW50cHRyX3QgbG93ID0gcGFzX3BhaXJfbG93KHZhbHVlKTsK
KyAgICB1aW50cHRyX3QgaGlnaCA9IHBhc19wYWlyX2hpZ2godmFsdWUpOworICAgIHVpbnRwdHJf
dCBjb25kID0gMDsKKyAgICBhc20gdm9sYXRpbGUgKAorICAgICIwOlx0XG4iCisgICAgICAgICJs
ZGF4cCB4enIsICV4W2NvbmRdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAic3RseHAgJXdbY29u
ZF0sICV4W2xvd10sICV4W2hpZ2hdLCBbJXhbcHRyXV1cdFxuIgorICAgICAgICAiY2JueiAld1tj
b25kXSwgMGJcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtjb25kXSI9JnIiKGNvbmQp
CisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW2xvd10iciIobG93KSwgW2hpZ2hdInIiKGhpZ2gp
LCBbcHRyXSJyIihyYXdfcHRyKQorICAgICAgICAvKiBjbG9iYmVycyAqLyA6ICJjYyIsICJtZW1v
cnkiCisgICAgKTsKKyNlbHNlCiAgICAgX19jMTFfYXRvbWljX3N0b3JlKChfQXRvbWljIHBhc19w
YWlyKilyYXdfcHRyLCB2YWx1ZSwgX19BVE9NSUNfU0VRX0NTVCk7CisjZW5kaWYKICNlbHNlCiAg
ICAgX19hdG9taWNfc3RvcmVfbigocGFzX3BhaXIqKXJhd19wdHIsIHZhbHVlLCBfX0FUT01JQ19T
RVFfQ1NUKTsKICNlbmRpZgogfQogCitzdGF0aWMgUEFTX0FMV0FZU19JTkxJTkUgYm9vbCBwYXNf
Y29tcGFyZV9wdHJfb3BhcXVlKHVpbnRwdHJfdCBhLCB1aW50cHRyX3QgYikKK3sKKyNpZiBQQVNf
Q09NUElMRVIoQ0xBTkcpCisjaWYgUEFTX0FSTTY0CisgICAgdWludDMyX3QgY29uZCA9IDA7Cisg
ICAgYXNtIHZvbGF0aWxlICgKKyAgICAgICAgImNtcCAleFthXSwgJXhbYl1cdFxuIgorICAgICAg
ICAiY3NldCAld1tjb25kXSwgZXFcdFxuIgorICAgICAgICAvKiBvdXRwdXRzICovICA6IFtjb25k
XSI9JnIiKGNvbmQpCisgICAgICAgIC8qIGlucHV0cyAgKi8gIDogW2FdInIiKGEpLCBbYl0iciIo
YikKKyAgICAgICAgLyogY2xvYmJlcnMgKi8gOiAiY2MiLCAibWVtb3J5IgorICAgICk7CisgICAg
cmV0dXJuIGNvbmQ7CisjZWxzZQorICAgIHJldHVybiBhID09IGI7CisjZW5kaWYKKyNlbHNlCisg
ICAgcmV0dXJuIGEgPT0gYjsKKyNlbmRpZgorfQorCiAjZGVmaW5lIFBBU19NSU4oYSwgYikgKHsg
XAogICAgICAgICBQQVNfVFlQRU9GKGEpIF90bXBfYSA9IChhKTsgXAogICAgICAgICBQQVNfVFlQ
RU9GKGIpIF90bXBfYiA9IChiKTsgXAo=
</data>
<flag name="review"
          id="472792"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>