<?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>126790</bug_id>
          
          <creation_ts>2014-01-10 16:24:05 -0800</creation_ts>
          <short_desc>CStack: Fix 64-bit C Loop LLINT</short_desc>
          <delta_ts>2014-01-13 20:49:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966667</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-10 16:24:05 -0800</bug_when>
    <thetext>Patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966712</commentid>
    <comment_count>1</comment_count>
      <attachid>220913</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-10 17:56:33 -0800</bug_when>
    <thetext>Created attachment 220913
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967542</commentid>
    <comment_count>2</comment_count>
      <attachid>220913</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-01-13 16:39:08 -0800</bug_when>
    <thetext>Comment on attachment 220913
the patch.

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

r=me

&gt; Source/JavaScriptCore/llint/LLIntOpcode.h:48
&gt; +    macro(llint_synthesized_label_1, 1) \
&gt; +    macro(llint_synthesized_label_2, 1) \
&gt; +    macro(llint_synthesized_label_3, 1) \
&gt; +    macro(llint_synthesized_label_4, 1) \
&gt; +    macro(llint_synthesized_label_5, 1) \
&gt; +    macro(llint_synthesized_label_6, 1) \
&gt; +    macro(llint_synthesized_label_7, 1) \

Let&apos;s call these &quot;llint_cloop_did_return_from_js_N&quot;.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:93
&gt; +#if 0

Let&apos;s give this a name, like ENABLE_OPCODE_TRACING.

&gt; Source/JavaScriptCore/offlineasm/asm.rb:48
&gt; +        @numSynthesizedGlobalLabels = 0

Let&apos;s call this &quot;didReturnFromJSLabelCounter&quot;, and move into cloop.rb&apos;s Instruction class, using @@ syntax for a per-class variable.

&gt; Source/JavaScriptCore/offlineasm/asm.rb:228
&gt; +    def numSynthesizedGlobalLabels()
&gt; +        @numSynthesizedGlobalLabels
&gt; +    end
&gt; +    def incNumSynthesizedGlobalLabels()
&gt; +        @numSynthesizedGlobalLabels += 1
&gt; +    end

See above renames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967560</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 17:05:08 -0800</bug_when>
    <thetext>Thanks for the review.  The feedback has been applied.  Landed in r161927 on the jsCStack branch: &lt;http://trac.webkit.org/r161927&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967562</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 17:06:41 -0800</bug_when>
    <thetext>*** Bug 126392 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967565</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 17:10:07 -0800</bug_when>
    <thetext>*** Bug 126007 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967575</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 17:26:36 -0800</bug_when>
    <thetext>*** Bug 126191 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967639</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-01-13 20:49:53 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Thanks for the review.  The feedback has been applied.  Landed in r161927 on the jsCStack branch: &lt;http://trac.webkit.org/r161927&gt;.

The merge had a conflict that went uncaught by svn. This resulted in a redundant push of lr and a redundant pop of cfr, and this breaks the C loop runs (as well as ARMv7 and other similar architectures).  This is now fixed in r161942: &lt;http://trac.webkit.org/r161942&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220913</attachid>
            <date>2014-01-10 17:56:33 -0800</date>
            <delta_ts>2014-01-13 16:39:08 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-126790.patch</filename>
            <type>text/plain</type>
            <size>43933</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYxNzAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMCBA
QAorMjAxNC0wMS0xMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q1N0YWNrOiBGaXggNjQtYml0IEMgTG9vcCBMTElOVC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjc5MC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxLiBGaXhlZCBtaXNjZWxsYW5lb3VzIGJ1Z3MgcmVs
ZXZhbnQgZm9yIHRoZSBDIExvb3AgTExJTlQgKGRldGFpbHMgYmVsb3cpLgorCisgICAgICAgIDIu
IFNpbXBsaWZpZWQgQ0xvb3A6OmV4ZWN1dGUoKSBieSBtYWtpbmcgaXQgbW9yZSBlbXVsYXRlIENQ
VSBjYWxscyBhcyB3ZWxsLgorICAgICAgICAgICBUaGlzIGlzIGRvbmUgYnkgYXV0b21hdGljYWxs
eSBzeW50aGVzaXppbmcgYW4gb3Bjb2RlIGxhYmVsIGF0IHRoZSByZXR1cm4KKyAgICAgICAgICAg
cG9pbnQgYWZ0ZXIgdGhlIGNhbGwgdG8gSlMgY29kZS4gVGhlICJsciIgcmVnaXN0ZXIgKG5hbWVk
IGFmdGVyIHRoZSBBUk0KKyAgICAgICAgICAgbGluayByZWdpc3Rlcikgd2lsbCBiZSBzZXQgdG8g
dGhhdCByZXR1cm4gb3Bjb2RlIGxhYmVsIGJlZm9yZSB0aGUgY2FsbC4KKyAgICAgICAgICAgVGhl
IGNhbGwgaXRzZWxmIGlzIGltcGxlbWVudGVkIGFzIGFuIG9wY29kZSBkaXNwYXRjaC4KKworICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6Cisg
ICAgICAgIC0gRml4ZWQgdHlwbzogTExJTlRfQ0xPT1AgPT0+IExMSU5UX0NfTE9PUC4KKyAgICAg
ICAgKiBpbnRlcnByZXRlci9KU1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6Z2F0
aGVyQ29uc2VydmF0aXZlUm9vdHMpOgorICAgICAgICAtIFByZXZpb3VzbHksIHdlIHdlcmUgZGVj
bGFyaW5nIGEgc3BhbiBmcm9tIGJhc2VPZlN0YWNrKCkgdG8gdG9wT2ZTdGFjaygpLgorICAgICAg
ICAgIGJhc2VPZlN0YWNrKCkgcG9pbnRzIHRvIHRoZSBoaWdoZXN0IHNsb3QgaW4gdGhlIHN0YWNr
LgorICAgICAgICAgIHRvcE9mU3RhY2soKSBwb2ludHMgdG8gdGhlIHdvcmQgYmVsb3cgdGhlIGxv
d2VzdCBzbG90IGluIHRoZSBzdGFjay4KKyAgICAgICAgICBUaGUgQ29uc2VydmF0aXZlUm9vdHMg
Y2xhc3Mgd2lsbCBpbnZlcnQgdGhlIGhpZ2ggYW5kIGxvdyBwb2ludGVycyB0bworICAgICAgICAg
IGVuc3VyZSB0aGF0IGl0IGl0ZXJhdGVzIGZyb20gbG93IHRvIGhpZ2guIEhvd2V2ZXIsIHdpdGgg
dGhpcyBzcGFuLCB0aGUKKyAgICAgICAgICBHQyB3aWxsIG1pc3Mgbm90IHNjYW4gdGhlIGhpZ2hl
c3Qgc2xvdCBpbiB0aGUgc3RhY2ssIGFuZCB3aWxsIGluc3RlYWQKKyAgICAgICAgICBzY2FuIHRo
ZSBzbG90IGJlbG93IHRoZSBzdGFjayB3aGljaCBpcyB0ZWNobmljYWxseSBvdXRzaWRlIHRoZSBz
dGFjay4KKworICAgICAgICAgIFRoZSBzcGFuIGlzIG5vdyBmaXhlZCB0byBiZSBmcm9tIHRvcE9m
U3RhY2soKSArIDEgdG8gaGlnaEFkZHJlc3MoKS4KKyAgICAgICAgICBoaWdoQWRkcmVzcygpIHBv
aW50cyBhdCB0aGUgc2xvdCBhYm92ZSB0aGUgaGlnaGVzdCBzbG90IGluIHRoZSBzdGFjay4KKyAg
ICAgICAgICBUaGlzIG1lYW5zIEdDIHdpbGwgbm93IGNvcnJlY3RseSBzY2FuIHRoZSBzdGFjayBm
cm9tIGl0cyBsb3dlc3QgdG8gaXRzCisgICAgICAgICAgaGlnaGVzdCBzbG90cyAoaW5jbHVzaXZl
KS4KKworICAgICAgICAoSlNDOjpKU1N0YWNrOjpzYW5pdGl6ZVN0YWNrKToKKyAgICAgICAgLSBT
aW1pbGFyIHRvIHRoZSBnYXRoZXJDb25zZXJ2YXRpdmVSb290cygpIGNhc2UsIHNhbml0aXplU3Rh
Y2soKSBpcworICAgICAgICAgIG51bGxpZnlpbmcgYSBzcGFuIG9mIHN0YWNrIHRoYXQgc3RhcnRz
IGF0IDIgcGFzdCB0aGUgbG93ZXN0IHNsb3QgaW4KKyAgICAgICAgICB0aGUgc3RhY2suCisKKyAg
ICAgICAgICBUaGlzIGlzIGJlY2F1c2UgdG9wT2ZTdGFjaygpIHBvaW50cyBhdCB0aGUgc2xvdCBi
ZWxvdyB0aGUgbG93ZXN0IHNsb3QKKyAgICAgICAgICBpbiB0aGUgc3RhY2suIG1fbGFzdFN0YWNr
VG9wKCkgcG9pbnRzIHRvIGFuIG9sZCB0b3BPZlN0YWNrKCkgaS5lLiBpdAorICAgICAgICAgIHBv
dGVudGlhbGx5IHBvaW50cyB0byBhIHNsb3QgdGhhdCBpcyBub3QgaW4gdGhlIHJlZ2lvbiBvZiBt
ZW1vcnkKKyAgICAgICAgICBhbGxvY2F0ZWQgZm9yIHRoZSBzdGFjay4KKworICAgICAgICAgIFdl
IG5vdyBhZGQgMSB0byBib3RoIG9mIHRoZXNlIHZhbHVlcyB0byBlbnN1cmUgdGhhdCB3ZSdyZSB6
ZXJvaW5nIGEKKyAgICAgICAgICByZWdpb24gdGhhdCBpcyBpbiB0aGUgc3RhY2sncyBhbGxvY2F0
ZWQgbWVtb3J5LCBhbmQgc3RvcCBhdCB0aGUgc2xvdAorICAgICAgICAgIChpbmNsdXNpdmUpIGp1
c3QgYmVsb3cgdGhlIHN0YWNrJ3MgY3VycmVudCBsb3dlc3QgdXNlZCBzbG90LgorCisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSlNTdGFjay5oOgorICAgICAgICAqIGludGVycHJldGVyL0pTU3RhY2tJ
bmxpbmVzLmg6CisgICAgICAgIC0gTWFkZSB0b3BPZlN0YWNrKCkgcHVibGljIGJlY2F1c2UgQ0xv
b3A6OmV4ZWN1dGUoKSBuZWVkcyBpdC4KKyAgICAgICAgLSBUaGUgTExJTlQgYXNzZW1ibHkgKGlu
IENMb29wOjpleGVjdXRlKCkpIG5vdyB0YWtlcyBjYXJlIG9mIHB1c2hpbmcKKyAgICAgICAgICBh
bmQgcG9wcGluZyB0aGUgc3RhY2suIEhlbmNlLCB3ZSBubyBsb25nZXIgbmVlZCBKU1N0YWNrJ3Mg
cHVzaEZyYW1lLAorICAgICAgICAgIHBvcEZyYW1lLCBhbmQgc3RhY2sgZmVuY2UgaW5mcmFzdHJ1
dHVyZSB3aGljaCByZWxpZXMgb24gcHVzaEZyYW1lCisgICAgICAgICAgYW5kIHBvcEZyYW1lLiBU
aGVzZSBhcmUgbm93IHJlbW92ZWQuCisKKyAgICAgICAgKiBsbGludC9MTEludE9wY29kZS5oOgor
ICAgICAgICAtIEFkZGVkIG5ldyBwc2V1ZG8gb3Bjb2RlczoKKyAgICAgICAgICAtIGxsaW50X3Jl
dHVybl90b19ob3N0OiB0aGlzIGlzIHRoZSBwc2V1ZG8gcmV0dXJuIGFkZHJlc3MgZm9yIHJldHVy
bmluZworICAgICAgICAgICAgdG8gdGhlIGhvc3QgaS5lLiByZXR1cm4gZnJvbSBDTG9vcDo6ZXhl
Y3V0ZSgpLgorICAgICAgICAgIC0gbGxpbnRfc3ludGhlc2l6ZWRfbGFiZWxfWDogdGhlc2UgYXJl
IHN5bnRoZXNpemVkIGJ5IHRoZSBjbG9vcCBvZmZsaW5lYXNtCisgICAgICAgICAgICBhcyBuZWVk
ZWQgaS5lLiBldmVyeSB0aW1lIGl0IG5lZWRzIHRvIGdlbmVyYXRlIGNvZGUgZm9yIGEgY2xvb3BD
YWxsSlNGdW5jdGlvbgorICAgICAgICAgICAgImluc3RydWN0aW9uIi4gVGhlc2UgYXJlIHRoZSBv
cGNvZGVzIHRoYXQgd2lsbCBzZXJ2ZSBhcyB0aGUgcmV0dXJuIHBvaW50CisgICAgICAgICAgICB0
aGF0IHdlIHN0b3JlIGluIGxyIGFuZCByZXR1cm4gdG8gd2hlbiB3ZSBzZWUgYSAicmV0IiBvcGNv
ZGUuCisKKyAgICAgICAgICAgIFdoaWxlIHRoZSBvZmZsaW5lYXNtIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVzIHRoZXNlIGluIExMSW50QXNzZW1ibHkuaCwKKyAgICAgICAgICAgIHdlIGhhdmUgdG8g
bWFudWFsbHkgYWRkIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGVzZSBvcGNvZGVzIGhlcmUuIElmIHdl
IGVuZAorICAgICAgICAgICAgdXAgZ2VuZXJhdGluZyBtb3JlIG9yIGxlc3MgaW4gdGhlIGZ1dHVy
ZSAoZHVlIHRvIGNoYW5nZXMgaW4gdGhlIExMSU5UCisgICAgICAgICAgICBhc3NlbWJseSBjb2Rl
KSwgdGhlbiB3ZSdsbCBnZXQgY29tcGlsZXIgZXJyb3JzIHRoYXQgd2lsbCB0ZWxsIHVzIHRvCisg
ICAgICAgICAgICB1cGRhdGUgdGhpcyBsaXN0LgorCisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1f
ZW50cnkpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgIC0gVGhp
cyBzbG93IHBhdGggaXNuJ3QgbmVlZGVkIGZvciB0aGUgbm9uIEMgbG9vcCBidWlsZCBiZWNhdXNl
IHRoZSBzdGFjayBpcworICAgICAgICAgIGZpbml0ZSBzaXplZCBhbmQgZ3Jvd3MgaXRzZWxmIG9u
IGFjY2Vzcy4gRm9yIHRoZSBDIGxvb3AsIHdlIG5lZWQgdGhpcyBjaGVjaworICAgICAgICAgIGZ1
bmN0aW9uIHRvIGdpdmUgdGhlIEpTU3RhY2sgYSBjaGFuY2UgdG8gZ3JvdyB0aGUgc3RhY2suCisK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAtIEFk
ZGVkIGNhbGwgdG8gbGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkgaW4gZG9DYWxsVG9KYXZh
U2NyaXB0KCkuCisgICAgICAgIC0gRml4ZWQgdXAgY2FsbHMgYW5kIHN0YWNrIGFkanVzdG1lbnRz
LgorCisgICAgICAgIC0gSW4gbWFrZUhvc3RGdW5jdGlvbkNhbGwoKSwgdGhlIG5vbiBDIGxvb3Ag
YnVpbGQgd2lsbCBwdXNoIGxyIGFuZCBjZnIgd2hlbgorICAgICAgICAgIHdlIGNhbGwgdGhlIGhv
c3QgZnVuY3Rpb24uIFRoYXQncyB3aHkgd2UgYWRqdXN0IHRoZSBzcCBieSAxNiBiZWZvcmUgdGhl
IGNhbGwuCisgICAgICAgICAgRm9yIHRoZSBDIGxvb3AgYnVpbGQsIHdlIG5lZWQgdG8gc2V0IHRo
ZSBsciBhbmQgY2ZyIG91cnNlbHZlcyBoZXJlLgorCisgICAgICAgIC0gSW4gbmF0aXZlQ2FsbFRy
YW1wb2xpbmUoKSwgdW5saWtlIG1ha2VIb3N0RnVuY3Rpb25DYWxsKCksIHRoZSByZXR1cm4gYWRk
cmVzcworICAgICAgICAgIGFuZCBjZnIgaGFzIGFscmVhZHkgYmVlbiBzZXQgaW4gdGhlIGZyYW1l
LiBIZW5jZSwgd2UgZGlkbid0IGhhdmUgdG8gZG8KKyAgICAgICAgICBhbnl0aGluZyBleHRyYS4g
QWxzbyBnb3QgcmlkIG9mIHRoZSBkaXN0aW5jdCBibG9jayBmb3IgdGhlIENfTE9PUCBhbmQganVz
dAorICAgICAgICAgIHJldXNlIHRoZSBibG9jayBmb3IgQVJNNjQgc2luY2UgaXQgaXMgZXhhY3Rs
eSB3aGF0IHRoZSBDX0xPT1AgbmVlZHMgZm9yCisgICAgICAgICAgdGhlIG1vc3QgcGFydC4KKwor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAtIEFkZGVk
IHB1c2gvcG9wIG9yIGxyIGFuZCBjZnIgYXMgbmVlZGVkLgorICAgICAgICAtIEluIGNhbGxUYXJn
ZXRGdW5jdGlvbigpLCBtYWtlIHRoZSBDX0xPT1AgdXNlIHRoZSBzYW1lIGNvZGUgYXMgb3RoZXIK
KyAgICAgICAgICB0YXJnZXRzIGV4Y2VwdCBmb3IgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24uCisgICAg
ICAgIC0gU2FtZSBmb3Igc2xvd1BhdGhGb3JDYWxsKCkuCisgICAgICAgIC0gSW4gcHJvbG9ndWUo
KSwgZXhjbHVkZSB0aGUgT1NSIGNoZWNrIGNvZGUgZm9yIHRoZSBDX0xPT1AgYnVpbGQgc2luY2Ug
aXQKKyAgICAgICAgICBpcyBub3QgbmVlZGVkLiBBbHNvIGFkZGVkIHBvcHBpbmcgb2YgY2ZyIGFu
ZCBsciBzaW5jZSBJJ20gd29ya2luZyB0aHJvdWdoCisgICAgICAgICAgdGhpcyBsb2dpYyBhbHJl
YWR5LgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkNMb29wUmVnaXN0ZXI6Om9wZXJhdG9yIFJlZ2lzdGVyKik6CisgICAgICAgIChKU0M6
OkNMb29wOjpleGVjdXRlKToKKyAgICAgICAgLSBBZGRlZCBUUkFDRV9PUENPREUoKSBmb3IgZGVi
dWdnaW5nIHVzZSBvbmx5LgorICAgICAgICAtIFNpbXBsaWZpZWQgc29tZSBDTG9vcFJlZ2lzdGVy
IG5hbWVzLgorICAgICAgICAtIEluaXRpYWxpemUgdGhlIG5lZWRlZCByZWdpc3RlcnMgYW5kIGlu
Y29taW5nIGFyZ3VtZW50cyBiZWZvcmUgZW50ZXJpbmcKKyAgICAgICAgICB0aGUgaW50ZXJwcmV0
ZXIgbG9vcC4KKyAgICAgICAgLSBBZGRlZCBsbGludF9yZXR1cm5fdG9faG9zdCBhcyB0aGUgZXhp
dCBvcGNvZGUgZm9yIHJldHVybmluZyBmcm9tCisgICAgICAgICAgQ0xvb3A6OmV4ZWN1dGUoKS4g
V2Ugc2V0IGl0IGFzIHRoZSB2YWx1ZSBmb3IgbHIgKHRoZSByZXR1cm4gYWRkcmVzcykKKyAgICAg
ICAgICBiZWZvcmUgd2UgZW50ZXIgdGhlIGludGVycHJldGVyIGxvb3AuCisgICAgICAgIC0gVXBk
YXRlZCB0aGUgZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSBvcGNvZGUgaGFuZGxlciB0byBtYXRjaCB0
aGUgY3VycmVudAorICAgICAgICAgIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUgYW5kIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlIGNvZGUgaW4KKyAgICAgICAgICBKSVRPcGVyYXRp
b25zLmNwcC4KKworICAgICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOgorICAgICAgICAtIEFkZGVk
IHRyYWNraW5nIG9mIHRoZSBudW1iZXIgb2Ygc3ludGhlc2l6ZWQgbGFiZWxzIChha2Egb3Bjb2Rl
cykuCisgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lZWRlZCBhbmQgdXNlZCBieSB0aGUgY2xvb3Au
cmIuCisKKyAgICAgICAgKiBvZmZsaW5lYXNtL2Nsb29wLnJiOgorICAgICAgICAtIFVwZGF0ZWQg
QyBsb29wIHJlZ2lzdGVyIG5hbWVzLgorICAgICAgICAtIEFkZGVkIHB1c2gsIHBvcCwgYW5kIGNo
YW5nZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNsb29wQ2FsbEpTRnVuY3Rpb24KKyAgICAg
ICAgICBwc2V1ZG8gaW5zdHJ1Y3Rpb24gdG8gdXNlIHN5bnRoZXNpemVkIG9wY29kZSAvIGxhYmVs
cyBhcyByZXR1cm4gYWRkcmVzc2VzLgorCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIC0gRml4ZWQgdHlwbzogTExJTlRfQ0xPT1AgPT0+
IExMSU5UX0NfTE9PUC4KKwogMjAxNC0wMS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGFkZCBhIHRlc3QgZm9yIHRoZSBjYXNlIHdoZXJl
IExMVk0gZmluZHMgYSBjb25zdGFudCBmb2xkaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTYxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNDU5LDcgKzQ1
OSw3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKICAgICAgICAgbV9tYWNoaW5lVGhyZWFkcy5n
YXRoZXJDb25zZXJ2YXRpdmVSb290cyhtYWNoaW5lVGhyZWFkUm9vdHMsIG1faml0U3R1YlJvdXRp
bmVzLCBtX2NvZGVCbG9ja3MsICZkdW1teSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKExMSU5UX0NM
T09QKQorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgQ29uc2VydmF0aXZlUm9vdHMgc3Rh
Y2tSb290cygmbV9vYmplY3RTcGFjZS5ibG9ja3MoKSwgJm1fc3RvcmFnZVNwYWNlKTsKICAgICB7
CiAgICAgICAgIEdDUEhBU0UoR2F0aGVyU3RhY2tSb290cyk7CkBAIC00OTksNyArNDk5LDcgQEAg
dm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQobWFjaGlu
ZVRocmVhZFJvb3RzKTsKICAgICAgICAgICAgIHZpc2l0b3IuZG9uYXRlQW5kRHJhaW4oKTsKICAg
ICAgICAgfQotI2lmIEVOQUJMRShMTElOVF9DTE9PUCkKKyNpZiBFTkFCTEUoTExJTlRfQ19MT09Q
KQogICAgICAgICB7CiAgICAgICAgICAgICBHQ1BIQVNFKFZpc2l0U3RhY2tSb290cyk7CiAgICAg
ICAgICAgICBNQVJLX0xPR19ST09UKHZpc2l0b3IsICJTdGFjayIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTYxNjIw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDcsMTIgKzEwNywxMiBAQCBib29sIEpTU3RhY2s6Omdyb3dTbG93Q2Fz
ZShSZWdpc3RlciogbmV3CiAKIHZvaWQgSlNTdGFjazo6Z2F0aGVyQ29uc2VydmF0aXZlUm9vdHMo
Q29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3RzKQogewotICAgIGNvbnNlcnZhdGl2
ZVJvb3RzLmFkZChiYXNlT2ZTdGFjaygpLCB0b3BPZlN0YWNrKCkpOworICAgIGNvbnNlcnZhdGl2
ZVJvb3RzLmFkZCh0b3BPZlN0YWNrKCkgKyAxLCBoaWdoQWRkcmVzcygpKTsKIH0KIAogdm9pZCBK
U1N0YWNrOjpnYXRoZXJDb25zZXJ2YXRpdmVSb290cyhDb25zZXJ2YXRpdmVSb290cyYgY29uc2Vy
dmF0aXZlUm9vdHMsIEpJVFN0dWJSb3V0aW5lU2V0JiBqaXRTdHViUm91dGluZXMsIENvZGVCbG9j
a1NldCYgY29kZUJsb2NrcykKIHsKLSAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoYmFzZU9mU3Rh
Y2soKSwgdG9wT2ZTdGFjaygpLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOworICAgIGNv
bnNlcnZhdGl2ZVJvb3RzLmFkZCh0b3BPZlN0YWNrKCkgKyAxLCBoaWdoQWRkcmVzcygpLCBqaXRT
dHViUm91dGluZXMsIGNvZGVCbG9ja3MpOwogfQogCiB2b2lkIEpTU3RhY2s6OnNhbml0aXplU3Rh
Y2soKQpAQCAtMTIwLDggKzEyMCw4IEBAIHZvaWQgSlNTdGFjazo6c2FuaXRpemVTdGFjaygpCiAg
ICAgQVNTRVJUKHRvcE9mU3RhY2soKSA8PSBiYXNlT2ZTdGFjaygpKTsKICAgICAKICAgICBpZiAo
bV9sYXN0U3RhY2tUb3AgPCB0b3BPZlN0YWNrKCkpIHsKLSAgICAgICAgY2hhciogYmVnaW4gPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihtX2xhc3RTdGFja1RvcCk7Ci0gICAgICAgIGNoYXIqIGVu
ZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRvcE9mU3RhY2soKSk7CisgICAgICAgIGNoYXIq
IGJlZ2luID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9sYXN0U3RhY2tUb3AgKyAxKTsKKyAg
ICAgICAgY2hhciogZW5kID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odG9wT2ZTdGFjaygpICsg
MSk7CiAgICAgICAgIG1lbXNldChiZWdpbiwgMCwgZW5kIC0gYmVnaW4pOwogICAgIH0KICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3RhY2suaAkocmV2
aXNpb24gMTYxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0pTU3Rh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvUGFn
ZVJlc2VydmF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZNVGFncy5oPgogCi0jaWYgRU5BQkxFKExM
SU5UX0NfTE9PUCkKLSNkZWZpbmUgRU5BQkxFX0RFQlVHX0pTU1RBQ0sgMAotI2lmICFkZWZpbmVk
KE5ERUJVRykgJiYgIWRlZmluZWQoRU5BQkxFX0RFQlVHX0pTU1RBQ0spCi0jZGVmaW5lIEVOQUJM
RV9ERUJVR19KU1NUQUNLIDEKLSNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShMTElOVF9DX0xPT1Ap
Ci0KIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29kZUJsb2NrU2V0OwpAQCAtMTA5LDI1
ICsxMDIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBzZXRSZXNlcnZlZFpv
bmVTaXplKHNpemVfdCk7CiAKLSAgICAgICAgQ2FsbEZyYW1lKiBwdXNoRnJhbWUoY2xhc3MgQ29k
ZUJsb2NrKiwgSlNTY29wZSosIGludCBhcmdzQ291bnQsIEpTT2JqZWN0KiBjYWxsZWUpOwotCi0g
ICAgICAgIHZvaWQgcG9wRnJhbWUoQ2FsbEZyYW1lKik7Ci0KLSNpZiBFTkFCTEUoREVCVUdfSlNT
VEFDSykKLSAgICAgICAgdm9pZCBpbnN0YWxsRmVuY2UoQ2FsbEZyYW1lKiwgY29uc3QgY2hhciAq
ZnVuY3Rpb24gPSAiIiwgaW50IGxpbmVObyA9IDApOwotICAgICAgICB2b2lkIHZhbGlkYXRlRmVu
Y2UoQ2FsbEZyYW1lKiwgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiIiwgaW50IGxpbmVObyA9IDAp
OwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IEZlbmNlU2l6ZSA9IDQ7Ci0jZWxzZSAvLyAhRU5B
QkxFKERFQlVHX0pTU1RBQ0spCi0gICAgICAgIHZvaWQgaW5zdGFsbEZlbmNlKENhbGxGcmFtZSos
IGNvbnN0IGNoYXIqID0gIiIsIGludCA9IDApIHsgfQotICAgICAgICB2b2lkIHZhbGlkYXRlRmVu
Y2UoQ2FsbEZyYW1lKiwgY29uc3QgY2hhciogPSAiIiwgaW50ID0gMCkgeyB9Ci0jZW5kaWYgLy8g
IUVOQUJMRShERUJVR19KU1NUQUNLKQorICAgICAgICBpbmxpbmUgUmVnaXN0ZXIqIHRvcE9mU3Rh
Y2soKTsKICNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09QKQogCiAgICAgcHJpdmF0ZToKIAot
ICAgICAgICBpbmxpbmUgUmVnaXN0ZXIqIHRvcE9mRnJhbWVGb3IoQ2FsbEZyYW1lKik7Ci0gICAg
ICAgIGlubGluZSBSZWdpc3RlciogdG9wT2ZTdGFjaygpOwotCiAjaWYgRU5BQkxFKExMSU5UX0Nf
TE9PUCkKICAgICAgICAgUmVnaXN0ZXIqIGxvd0FkZHJlc3MoKSBjb25zdAogICAgICAgICB7CkBA
IC0xNDQsMjAgKzEyMywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZiAvLyBFTkFCTEUoTExJ
TlRfQ19MT09QKQogCiAjaWYgRU5BQkxFKExMSU5UX0NfTE9PUCkKKyAgICAgICAgaW5saW5lIFJl
Z2lzdGVyKiB0b3BPZkZyYW1lRm9yKENhbGxGcmFtZSopOworCiAgICAgICAgIFJlZ2lzdGVyKiBy
ZXNlcnZhdGlvblRvcCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIGNoYXIqIHJlc2Vy
dmF0aW9uVG9wID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKTsKICAg
ICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0X3B0cjxSZWdpc3Rlcio+KHJlc2VydmF0
aW9uVG9wKTsKICAgICAgICAgfQogCi0jaWYgRU5BQkxFKERFQlVHX0pTU1RBQ0spCi0gICAgICAg
IHN0YXRpYyBKU1ZhbHVlIGdlbmVyYXRlRmVuY2VWYWx1ZShzaXplX3QgYXJnSW5kZXgpOwotICAg
ICAgICB2b2lkIGluc3RhbGxUcmFwc0FmdGVyRnJhbWUoQ2FsbEZyYW1lKik7Ci0gICAgICAgIFJl
Z2lzdGVyKiBzdGFydE9mRnJhbWVGb3IoQ2FsbEZyYW1lKik7Ci0jZWxzZQotICAgICAgICB2b2lk
IGluc3RhbGxUcmFwc0FmdGVyRnJhbWUoQ2FsbEZyYW1lKikgeyB9Ci0jZW5kaWYKLQogICAgICAg
ICBib29sIGdyb3coUmVnaXN0ZXIqIG5ld1RvcE9mU3RhY2spOwogICAgICAgICBib29sIGdyb3dT
bG93Q2FzZShSZWdpc3RlciogbmV3VG9wT2ZTdGFjayk7CiAgICAgICAgIHZvaWQgc2hyaW5rKFJl
Z2lzdGVyKiBuZXdUb3BPZlN0YWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9KU1N0YWNrSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9KU1N0YWNrSW5saW5lcy5oCShyZXZpc2lvbiAxNjE2MjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSlNTdGFja0lubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBpbmxpbmUgYm9vbCBKU1N0YWNrOjplbnN1cmVDYXBh
Y2l0eUZvcihSCiAjZW5kaWYKIH0KIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCisKIGlubGlu
ZSBSZWdpc3RlciogSlNTdGFjazo6dG9wT2ZGcmFtZUZvcihDYWxsRnJhbWUqIGZyYW1lKQogewog
I2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCkBAIC01NywxMDAgKzU5LDYgQEAgaW5saW5lIFJlZ2lz
dGVyKiBKU1N0YWNrOjp0b3BPZlN0YWNrKCkKICAgICByZXR1cm4gdG9wT2ZGcmFtZUZvcihtX3Rv
cENhbGxGcmFtZSk7CiB9CiAKLSNpZiBFTkFCTEUoTExJTlRfQ19MT09QKQotCi0jaWYgRU5BQkxF
KERFQlVHX0pTU1RBQ0spCi1pbmxpbmUgUmVnaXN0ZXIqIEpTU3RhY2s6OnN0YXJ0T2ZGcmFtZUZv
cihDYWxsRnJhbWUqIGZyYW1lKQotewotICAgIENhbGxGcmFtZSogY2FsbGVyRnJhbWUgPSBmcmFt
ZS0+Y2FsbGVyRnJhbWVTa2lwcGluZ1ZNRW50cnlTZW50aW5lbCgpOwotICAgIHJldHVybiB0b3BP
ZkZyYW1lRm9yKGNhbGxlckZyYW1lKTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoREVCVUdfSlNTVEFD
SykKLQotaW5saW5lIENhbGxGcmFtZSogSlNTdGFjazo6cHVzaEZyYW1lKGNsYXNzIENvZGVCbG9j
ayogY29kZUJsb2NrLCBKU1Njb3BlKiBzY29wZSwgaW50IGFyZ3NDb3VudCwgSlNPYmplY3QqIGNh
bGxlZSkKLXsKLSAgICBBU1NFUlQoISFzY29wZSk7Ci0gICAgUmVnaXN0ZXIqIG9sZEVuZCA9IHRv
cE9mU3RhY2soKTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IHdlIGhhdmUgZW5vdWdoIHNwYWNlIGZv
ciB0aGUgcGFyYW1ldGVyczoKLSAgICBzaXplX3QgcGFkZGVkQXJnc0NvdW50ID0gYXJnc0NvdW50
OwotICAgIGlmIChjb2RlQmxvY2spIHsKLSAgICAgICAgc2l6ZV90IG51bVBhcmFtZXRlcnMgPSBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKTsKLSAgICAgICAgaWYgKHBhZGRlZEFyZ3NDb3VudCA8
IG51bVBhcmFtZXRlcnMpCi0gICAgICAgICAgICBwYWRkZWRBcmdzQ291bnQgPSBudW1QYXJhbWV0
ZXJzOwotICAgIH0KLQotICAgIFJlZ2lzdGVyKiBuZXdDYWxsRnJhbWVTbG90ID0gb2xkRW5kIC0g
cGFkZGVkQXJnc0NvdW50IC0gKDIgKiBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKSArIDE7
Ci0KLSNpZiBFTkFCTEUoREVCVUdfSlNTVEFDSykKLSAgICBuZXdDYWxsRnJhbWVTbG90IC09IEpT
U3RhY2s6OkZlbmNlU2l6ZTsKLSNlbmRpZgotCi0gICAgUmVnaXN0ZXIqIHRvcE9mU3RhY2sgPSBu
ZXdDYWxsRnJhbWVTbG90OwotICAgIGlmICghIWNvZGVCbG9jaykKLSAgICAgICAgdG9wT2ZTdGFj
ayArPSBjb2RlQmxvY2stPnN0YWNrUG9pbnRlck9mZnNldCgpOwotCi0gICAgLy8gRW5zdXJlIHRo
YXQgd2UgaGF2ZSB0aGUgbmVlZGVkIHN0YWNrIGNhcGFjaXR5IHRvIHB1c2ggdGhlIG5ldyBmcmFt
ZToKLSAgICBpZiAoIWdyb3codG9wT2ZTdGFjaykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
Ly8gQ29tcHV0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgbmV3IFZNIHNlbnRpbmVsIGZyYW1lIGZvciB0
aGlzIGludm9jYXRpb246Ci0gICAgQ2FsbEZyYW1lKiBuZXdWTUVudHJ5U2VudGluZWxGcmFtZSA9
IENhbGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QgKyBwYWRkZWRBcmdzQ291bnQgKyBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKLSAgICBBU1NFUlQoISFuZXdWTUVudHJ5U2Vu
dGluZWxGcmFtZSk7Ci0KLSAgICAvLyBDb21wdXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgZnJh
bWUgZm9yIHRoaXMgaW52b2NhdGlvbjoKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENh
bGxGcmFtZTo6Y3JlYXRlKG5ld0NhbGxGcmFtZVNsb3QpOwotICAgIEFTU0VSVCghIW5ld0NhbGxG
cmFtZSk7Ci0KLSAgICAvLyBUaGUgY2FsbGVyIGZyYW1lIHNob3VsZCBhbHdheXMgYmUgdGhlIHJl
YWwgcHJldmlvdXMgZnJhbWUgb24gdGhlIHN0YWNrLAotICAgIC8vIGFuZCBub3QgYSBwb3RlbnRp
YWwgR2xvYmFsRXhlYyB0aGF0IHdhcyBwYXNzZWQgaW4uIFBvaW50IGNhbGxlckZyYW1lIHRvCi0g
ICAgLy8gdGhlIHRvcCBmcmFtZSBvbiB0aGUgc3RhY2suCi0gICAgQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSA9IG1fdG9wQ2FsbEZyYW1lOwotCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgVk0gc2VudGlu
ZWwgZnJhbWUgaGVhZGVyOgotICAgIG5ld1ZNRW50cnlTZW50aW5lbEZyYW1lLT5pbml0aWFsaXpl
Vk1FbnRyeVNlbnRpbmVsRnJhbWUoY2FsbGVyRnJhbWUpOwotCi0gICAgLy8gSW5pdGlhbGl6ZSB0
aGUgY2FsbGVlIGZyYW1lIGhlYWRlcjoKLSAgICBuZXdDYWxsRnJhbWUtPmluaXQoY29kZUJsb2Nr
LCAwLCBzY29wZSwgbmV3Vk1FbnRyeVNlbnRpbmVsRnJhbWUsIGFyZ3NDb3VudCwgY2FsbGVlKTsK
LQotICAgIEFTU0VSVCghIW5ld0NhbGxGcmFtZS0+c2NvcGUoKSk7Ci0KLSAgICAvLyBQYWQgYWRk
aXRpb25hbCBhcmdzIGlmIG5lZWRlZDoKLSAgICAvLyBOb3RlOiB3ZSBuZWVkIHRvIHN1YnRyYWN0
IDEgZnJvbSBhcmdzQ291bnQgYW5kIHBhZGRlZEFyZ3NDb3VudCB0bwotICAgIC8vIGV4Y2x1ZGUg
dGhlIHRoaXMgcG9pbnRlci4KLSAgICBmb3IgKHNpemVfdCBpID0gYXJnc0NvdW50LTE7IGkgPCBw
YWRkZWRBcmdzQ291bnQtMTsgKytpKQotICAgICAgICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50
KGksIGpzVW5kZWZpbmVkKCkpOwotCi0gICAgaW5zdGFsbEZlbmNlKG5ld0NhbGxGcmFtZSwgX19G
VU5DVElPTl9fLCBfX0xJTkVfXyk7Ci0gICAgdmFsaWRhdGVGZW5jZShuZXdDYWxsRnJhbWUsIF9f
RlVOQ1RJT05fXywgX19MSU5FX18pOwotICAgIGluc3RhbGxUcmFwc0FmdGVyRnJhbWUobmV3Q2Fs
bEZyYW1lKTsKLQotICAgIC8vIFB1c2ggdGhlIG5ldyBmcmFtZToKLSAgICBtX3RvcENhbGxGcmFt
ZSA9IG5ld0NhbGxGcmFtZTsKLQotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KLWlubGlu
ZSB2b2lkIEpTU3RhY2s6OnBvcEZyYW1lKENhbGxGcmFtZSogZnJhbWUpCi17Ci0gICAgdmFsaWRh
dGVGZW5jZShmcmFtZSwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7Ci0KLSAgICAvLyBQb3Agb2Zm
IHRoZSBjYWxsZWUgZnJhbWUgYW5kIHRoZSBzZW50aW5lbCBmcmFtZS4KLSAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lID0gZnJhbWUtPmNhbGxlckZyYW1lKCktPnZtRW50cnlTZW50aW5lbENhbGxl
ckZyYW1lKCk7Ci0KLSAgICAvLyBQb3AgdG8gdGhlIGNhbGxlcjoKLSAgICBtX3RvcENhbGxGcmFt
ZSA9IGNhbGxlckZyYW1lOwotCi0gICAgLy8gSWYgd2UgYXJlIHBvcHBpbmcgdGhlIHZlcnkgZmly
c3QgZnJhbWUgZnJvbSB0aGUgc3RhY2sgaS5lLiBubyBtb3JlCi0gICAgLy8gZnJhbWVzIGJlZm9y
ZSB0aGlzLCB0aGVuIHdlIGNhbiBub3cgc2FmZWx5IHNocmluayB0aGUgc3RhY2suIEluCi0gICAg
Ly8gdGhpcyBjYXNlLCB3ZSdyZSBzaHJpbmtpbmcgYWxsIHRoZSB3YXkgdG8gdGhlIGJlZ2lubmlu
ZyBzaW5jZSB0aGVyZQotICAgIC8vIGFyZSBubyBtb3JlIGZyYW1lcyBvbiB0aGUgc3RhY2suCi0g
ICAgaWYgKCFjYWxsZXJGcmFtZSkKLSAgICAgICAgc2hyaW5rKGhpZ2hBZGRyZXNzKCkpOwotCi0g
ICAgaW5zdGFsbFRyYXBzQWZ0ZXJGcmFtZShjYWxsZXJGcmFtZSk7Ci19Ci0KIGlubGluZSB2b2lk
IEpTU3RhY2s6OnNocmluayhSZWdpc3RlciogbmV3VG9wT2ZTdGFjaykKIHsKICAgICBSZWdpc3Rl
ciogbmV3RW5kID0gbmV3VG9wT2ZTdGFjayAtIDE7CkBAIC0xODMsMTA3ICs5MSw2IEBAIGlubGlu
ZSB2b2lkIEpTU3RhY2s6OnNldFN0YWNrTGltaXQoUmVnaXMKICNlbmRpZgogfQogCi0jaWYgRU5B
QkxFKERFQlVHX0pTU1RBQ0spCi1pbmxpbmUgSlNWYWx1ZSBKU1N0YWNrOjpnZW5lcmF0ZUZlbmNl
VmFsdWUoc2l6ZV90IGFyZ0luZGV4KQotewotICAgIHVuc2lnbmVkIGZlbmNlQml0cyA9IDB4ZmFj
ZWJhZDAgfCAoKGFyZ0luZGV4KzEpICYgMHhmKTsKLSAgICBKU1ZhbHVlIGZlbmNlVmFsdWUgPSBK
U1ZhbHVlKGZlbmNlQml0cyk7Ci0gICAgcmV0dXJuIGZlbmNlVmFsdWU7Ci19Ci0KLS8vIFRoZSBK
U1N0YWNrIGZlbmNlcyBtZWNoYW5pc20gd29ya3MgYXMgZm9sbG93czoKLS8vIDEuIEEgZmVuY2Ug
aXMgYSBudW1iZXIgKEpTU3RhY2s6OkZlbmNlU2l6ZSkgb2YgSlNWYWx1ZXMgdGhhdCBhcmUgaW5p
dGlhbGl6ZWQKLS8vICAgIHdpdGggdmFsdWVzIGdlbmVyYXRlZCBieSBKU1N0YWNrOjpnZW5lcmF0
ZUZlbmNlVmFsdWUoKS4KLS8vIDIuIFdoZW4gcHVzaEZyYW1lKCkgaXMgY2FsbGVkLCB0aGUgZmVu
Y2UgaXMgaW5zdGFsbGVkIGFmdGVyIHRoZSBtYXggZXh0ZW50Ci0vLyAgICBvZiB0aGUgcHJldmlv
dXMgdG9wQ2FsbEZyYW1lIGFuZCB0aGUgbGFzdCBhcmcgb2YgdGhlIG5ldyBmcmFtZToKLS8vCi0v
LyAgICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKLS8vICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfAotLy8gICAgICAgICAgICAgICAgICAgICB8IEZyYW1lIEhlYWRlciBvZiBw
cmV2aW91cyBmcmFtZSAgICAgICB8Ci0vLyAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLS8vICAgIHRvcENhbGxGcmFtZSAtLT4gfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotLy8gICAgICAgICAgICAgICAg
ICAgICB8IExvY2FscyBvZiBwcmV2aW91cyBmcmFtZSAgICAgICAgICAgICB8Ci0vLyAgICAgICAg
ICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLS8v
ICAgICAgICAgICAgICAgICAgICAgfCAqKiogdGhlIEZlbmNlICoqKiAgICAgICAgICAgICAgICAg
ICAgfAotLy8gICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18Ci0vLyAgICAgICAgICAgICAgICAgICAgIHwgVk0gZW50cnkgc2VudGluZWwg
ZnJhbWUgaGVhZGVyICAgICAgIHwKLS8vICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotLy8gICAgICAgICAgICAgICAgICAgICB8IEFy
Z3Mgb2YgbmV3IGZyYW1lICAgICAgICAgICAgICAgICAgICB8Ci0vLyAgICAgICAgICAgICAgICAg
ICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLS8vICAgICAgICAg
ICAgICAgICAgICAgfCBGcmFtZSBIZWFkZXIgb2YgbmV3IGZyYW1lICAgICAgICAgICAgfAotLy8g
ICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18Ci0vLyAgICAgICAgICAgZnJhbWUgLS0+IHwgTG9jYWxzIG9mIG5ldyBmcmFtZSAgICAgICAg
ICAgICAgICAgIHwKLS8vICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfAotLy8KLS8vIDMuIEluIHBvcEZyYW1lKCkgYW5kIGVsc2V3aGVy
ZSwgd2UgY2FuIGNhbGwgSlNTdGFjazo6dmFsaWRhdGVGZW5jZSgpIHRvCi0vLyAgICBhc3NlcnQg
dGhhdCB0aGUgZmVuY2UgY29udGFpbnMgdGhlIHZhbHVlcyB3ZSBleHBlY3QuCi0KLWlubGluZSB2
b2lkIEpTU3RhY2s6Omluc3RhbGxGZW5jZShDYWxsRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyICpm
dW5jdGlvbiwgaW50IGxpbmVObykKLXsKLSAgICBVTlVTRURfUEFSQU0oZnVuY3Rpb24pOwotICAg
IFVOVVNFRF9QQVJBTShsaW5lTm8pOwotICAgIFJlZ2lzdGVyKiBzdGFydE9mRnJhbWUgPSBzdGFy
dE9mRnJhbWVGb3IoZnJhbWUpOwotCi0gICAgLy8gVGhlIGxhc3QgYXJnSW5kZXggaXMgYXQ6Ci0g
ICAgc2l6ZV90IG1heEluZGV4ID0gZnJhbWUtPmFyZ0luZGV4Rm9yUmVnaXN0ZXIoc3RhcnRPZkZy
YW1lKSArIDE7Ci0gICAgc2l6ZV90IHN0YXJ0SW5kZXggPSBtYXhJbmRleCAtIEZlbmNlU2l6ZTsK
LSAgICBmb3IgKHNpemVfdCBpID0gc3RhcnRJbmRleDsgaSA8IG1heEluZGV4OyArK2kpIHsKLSAg
ICAgICAgSlNWYWx1ZSBmZW5jZVZhbHVlID0gZ2VuZXJhdGVGZW5jZVZhbHVlKGkpOwotICAgICAg
ICBmcmFtZS0+c2V0QXJndW1lbnQoaSwgZmVuY2VWYWx1ZSk7Ci0gICAgfQotfQotCi1pbmxpbmUg
dm9pZCBKU1N0YWNrOjp2YWxpZGF0ZUZlbmNlKENhbGxGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIg
KmZ1bmN0aW9uLCBpbnQgbGluZU5vKQotewotICAgIFVOVVNFRF9QQVJBTShmdW5jdGlvbik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxpbmVObyk7Ci0gICAgQVNTRVJUKCEhZnJhbWUtPnNjb3BlKCkpOwot
ICAgIFJlZ2lzdGVyKiBzdGFydE9mRnJhbWUgPSBzdGFydE9mRnJhbWVGb3IoZnJhbWUpOwotICAg
IHNpemVfdCBtYXhJbmRleCA9IGZyYW1lLT5hcmdJbmRleEZvclJlZ2lzdGVyKHN0YXJ0T2ZGcmFt
ZSkgKyAxOwotICAgIHNpemVfdCBzdGFydEluZGV4ID0gbWF4SW5kZXggLSBGZW5jZVNpemU7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBtYXhJbmRleDsgKytpKSB7Ci0gICAg
ICAgIEpTVmFsdWUgZmVuY2VWYWx1ZSA9IGdlbmVyYXRlRmVuY2VWYWx1ZShpKTsKLSAgICAgICAg
SlNWYWx1ZSBhY3R1YWxWYWx1ZSA9IGZyYW1lLT5nZXRBcmd1bWVudFVuc2FmZShpKTsKLSAgICAg
ICAgQVNTRVJUKGZlbmNlVmFsdWUgPT0gYWN0dWFsVmFsdWUpOwotICAgIH0KLX0KLQotLy8gV2hl
biBkZWJ1Z2dpbmcgdGhlIEpTU3RhY2ssIHdlIGluc3RhbGwgYmFkIHZhbHVlcyBhZnRlciB0aGUg
ZXh0ZW50IG9mIHRoZQotLy8gdG9wQ2FsbEZyYW1lIGF0IHRoZSBlbmQgb2YgcHVzaEZyYW1lKCkg
YW5kIHBvcEZyYW1lKCkuIFRoZSBpbnRlbnRpb24gaXMKLS8vIHRvIHRyaWdnZXIgY3Jhc2hlcyBp
biB0aGUgZXZlbnQgdGhhdCBtZW1vcnkgaW4gdGhpcyBzdXBwb3NlZGx5IHVudXNlZAotLy8gcmVn
aW9uIGlzIHJlYWQgYW5kIGNvbnN1bWVkIHdpdGhvdXQgcHJvcGVyIGluaXRpYWxpemF0aW9uLiBB
ZnRlciB0aGUgdHJhcAotLy8gd29yZHMgYXJlIGluc3RhbGxlZCwgdGhlIHN0YWNrIGxvb2tzIGxp
a2UgdGhpczoKLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgIHwgLi4uICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKLS8vICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfAotLy8gICAgICAgICAgICAgICAgICAgICB8IEZyYW1lIEhlYWRlciBvZiBmcmFt
ZSAgICAgICB8Ci0vLyAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwKLS8vICAgIHRvcENhbGxGcmFtZSAtLT4gfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAotLy8gICAgICAgICAgICAgICAgICAgICB8IExvY2FscyBvZiBmcmFtZSAgICAgICAg
ICAgICB8Ci0vLyAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLXwKLS8vICAgICAgICAgICAgICAgICAgICAgfCAqKiogVHJhcCB3b3JkcyAqKiogICAgICAg
ICAgfAotLy8gICAgICAgICAgICAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18Ci0vLyAgICAgICAgICAgICAgICAgICAgIHwgVW51c2VkIHNwYWNlIC4uLiAgICAgICAgICAg
IHwKLS8vICAgICAgICAgICAgICAgICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAg
fAotCi1pbmxpbmUgdm9pZCBKU1N0YWNrOjppbnN0YWxsVHJhcHNBZnRlckZyYW1lKENhbGxGcmFt
ZSogZnJhbWUpCi17Ci0gICAgUmVnaXN0ZXIqIHRvcE9mRnJhbWUgPSB0b3BPZkZyYW1lRm9yKGZy
YW1lKTsKLSAgICBjb25zdCBpbnQgc2l6ZU9mVHJhcCA9IDY0OwotICAgIGludDMyX3QqIHN0YXJ0
T2ZUcmFwID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4odG9wT2ZGcmFtZSk7Ci0gICAgaW50
MzJfdCogZW5kT2ZUcmFwID0gc3RhcnRPZlRyYXAgLSBzaXplT2ZUcmFwOwotICAgIGludDMyX3Qq
IGVuZE9mQ29tbWl0ZWRNZW1vcnkgPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihtX2NvbW1p
dFRvcCk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgd2UncmUgbm90IGV4Y2VlZGluZyB0aGUgYW1vdW50
IG9mIGF2YWlsYWJsZSBtZW1vcnkgdG8gd3JpdGUgdG86Ci0gICAgaWYgKGVuZE9mVHJhcCA8IGVu
ZE9mQ29tbWl0ZWRNZW1vcnkpCi0gICAgICAgIGVuZE9mVHJhcCA9IGVuZE9mQ29tbWl0ZWRNZW1v
cnk7Ci0KLSAgICAvLyBMYXkgdGhlIHRyYXBzOgotICAgIGludDMyX3QqIHAgPSBzdGFydE9mVHJh
cDsKLSAgICB3aGlsZSAoLS1wID49IGVuZE9mVHJhcCkKLSAgICAgICAgKnAgPSAweGFiYWRjYWZl
OyAvLyBBIGJhZCB3b3JkIHRvIHRyaWdnZXIgYSBjcmFzaCBpZiBkZXJlZidlZC4KLX0KLSNlbmRp
ZiAvLyBFTkFCTEUoREVCVUdfSlNTVEFDSykKICNlbmRpZiAvLyBFTkFCTEUoTExJTlRfQ19MT09Q
KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9wY29kZS5oCShyZXZpc2lvbiAxNjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsOSAr
MzQsMTggQEAKIAogI2RlZmluZSBGT1JfRUFDSF9MTElOVF9OT0pJVF9OQVRJVkVfSEVMUEVSKG1h
Y3JvKSBcCiAgICAgbWFjcm8oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSwgMSkgXAorICAgIG1hY3Jv
KGxsaW50X3JldHVybl90b19ob3N0LCAxKSBcCiAgICAgbWFjcm8obGxpbnRfY2FsbF90b19qYXZh
c2NyaXB0LCAxKSBcCiAgICAgbWFjcm8obGxpbnRfY2FsbF90b19uYXRpdmVfZnVuY3Rpb24sIDEp
IFwKLSAgICBtYWNybyhoYW5kbGVVbmNhdWdodEV4Y2VwdGlvbiwgMSkKKyAgICBtYWNybyhoYW5k
bGVVbmNhdWdodEV4Y2VwdGlvbiwgMSkgXAorICAgIFwKKyAgICBtYWNybyhsbGludF9zeW50aGVz
aXplZF9sYWJlbF8xLCAxKSBcCisgICAgbWFjcm8obGxpbnRfc3ludGhlc2l6ZWRfbGFiZWxfMiwg
MSkgXAorICAgIG1hY3JvKGxsaW50X3N5bnRoZXNpemVkX2xhYmVsXzMsIDEpIFwKKyAgICBtYWNy
byhsbGludF9zeW50aGVzaXplZF9sYWJlbF80LCAxKSBcCisgICAgbWFjcm8obGxpbnRfc3ludGhl
c2l6ZWRfbGFiZWxfNSwgMSkgXAorICAgIG1hY3JvKGxsaW50X3N5bnRoZXNpemVkX2xhYmVsXzYs
IDEpIFwKKyAgICBtYWNybyhsbGludF9zeW50aGVzaXplZF9sYWJlbF83LCAxKSBcCiAKICNlbHNl
IC8vICFFTkFCTEUoTExJTlRfQ19MT09QKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE2MTYyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0MjksNiArMTQyOSwxNCBAQCBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlCiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAw
KTsKIH0KIAorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCitTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qIHZtLCBSZWdpc3RlciogbmV3VG9wT2ZTdGFj
aykKK3sKKyAgICBib29sIHN1Y2Nlc3MgPSB2bS0+aW50ZXJwcmV0ZXItPnN0YWNrKCkuZW5zdXJl
Q2FwYWNpdHlGb3IobmV3VG9wT2ZTdGFjayk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihzdWNjZXNzKSwgMCk7Cit9CisjZW5kaWYKKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CiAKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMTYx
NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEyNCw2ICsxMjQsOSBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3JlCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9m
cm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3Rv
X3Njb3BlKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNr
X292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKTsKKyNpZiBFTkFCTEUoTExJTlRf
Q19MT09QKQorZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tf
YXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopOworI2VuZGlmCiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTYxNjIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcg
Y29weSkKQEAgLTE0Nyw5ICsxNDcsMTcgQEAgbWFjcm8gZG9DYWxsVG9KYXZhU2NyaXB0KG1ha2VD
YWxsKQogICAgIG1vdmUgY2ZyLCBzcAogCiAgICAgaWYgQ19MT09QCi0gICAgIyBGSVhNRTogTmVl
ZCB0byBjYWxsIHN0YWNrIGNoZWNrIGhlcmUgdG8gc2VlIGlmIHdlIGNhbiBncm93IHRoZSBzdGFj
ay4KLSAgICAjIFdpbGwgbmVlZCB0byBwcmVzZXJ2ZSByZWdpc3RlcnMgc28gdGhhdCB3ZSBjYW4g
cmVjb3ZlciBpZiB3ZSBkbyBub3QgZW5kCi0gICAgIyB1cCB0aHJvd2luZyBhIFN0YWNrT3ZlcmZs
b3dFcnJvci4KKyAgICAgICAgbW92ZSBlbnRyeSwgdGVtcDIKKyAgICAgICAgbW92ZSB2bSwgdGVt
cDMKKyAgICAgICAgY2xvb3BDYWxsU2xvd1BhdGggX2xsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2Vu
dHJ5LCB2bSwgdGVtcDEKKyAgICAgICAgYnBlcSB0MCwgMCwgLnN0YWNrQ2hlY2tGYWlsZWQKKyAg
ICAgICAgbW92ZSB0ZW1wMiwgZW50cnkKKyAgICAgICAgbW92ZSB0ZW1wMywgdm0KKyAgICAgICAg
am1wIC5zdGFja0hlaWdodE9LCisKKy5zdGFja0NoZWNrRmFpbGVkOgorICAgICAgICBtb3ZlIHRl
bXAyLCBlbnRyeQorICAgICAgICBtb3ZlIHRlbXAzLCB2bQogICAgIGVuZAogCiAgICAgY0NhbGwy
KF9sbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvciwgdm0sIHByb3RvQ2FsbEZyYW1lKQpA
QCAtMjE4LDcgKzIyNiwxMSBAQCBlbmQKIAogbWFjcm8gbWFrZUphdmFTY3JpcHRDYWxsKGVudHJ5
LCB0ZW1wKQogICAgIGFkZHAgMTYsIHNwCi0gICAgY2FsbCBlbnRyeQorICAgIGlmIENfTE9PUAor
ICAgICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIGVudHJ5CisgICAgZWxzZQorICAgICAgICBjYWxs
IGVudHJ5CisgICAgZW5kCiAgICAgc3VicCAxNiwgc3AKIGVuZAogCkBAIC0yMzAsOSArMjQyLDE1
IEBAIG1hY3JvIG1ha2VIb3N0RnVuY3Rpb25DYWxsKGVudHJ5LCB0ZW1wKQogICAgIGVsc2lmIEFS
TTY0IG9yIENfTE9PUAogICAgICAgICBtb3ZlIHNwLCBhMAogICAgIGVuZAotICAgIGFkZHAgMTYs
IHNwCi0gICAgY2FsbCB0ZW1wCi0gICAgc3VicCAxNiwgc3AKKyAgICBpZiBDX0xPT1AKKyAgICAg
ICAgc3RvcmVwIGNmciwgW3NwXQorICAgICAgICBzdG9yZXAgbHIsIDhbc3BdCisgICAgICAgIGNs
b29wQ2FsbE5hdGl2ZSB0ZW1wCisgICAgZWxzZQorICAgICAgICBhZGRwIDE2LCBzcCAKKyAgICAg
ICAgY2FsbCB0ZW1wCisgICAgICAgIHN1YnAgMTYsIHNwCisgICAgZW5kCiBlbmQKIAogCkBAIC0x
ODg4LDcgKzE5MDYsNyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zm
CiAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5bY2ZyXSwgdDMKICAgICAgICAgYW5kcCBNYXJrZWRC
bG9ja01hc2ssIHQzCiAgICAgICAgIGxvYWRwIE1hcmtlZEJsb2NrOjptX3dlYWtTZXQgKyBXZWFr
U2V0OjptX3ZtW3QzXSwgdDMKLSAgICBlbHNpZiBBUk02NAorICAgIGVsc2lmIEFSTTY0IG9yIENf
TE9PUAogICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQwCiAgICAgICAgIGFuZHAgTWFy
a2VkQmxvY2tNYXNrLCB0MAogICAgICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0ICsg
V2Vha1NldDo6bV92bVt0MF0sIHQwCkBAIC0xOTAyLDMwICsxOTIwLDExIEBAIG1hY3JvIG5hdGl2
ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICAgICAgbG9hZHAgQ2FsbGVlW2Nmcl0s
IHQxCiAgICAgICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCiAgICAg
ICAgIG1vdmUgdDIsIGNmciAjIFJlc3RvcmUgY2ZyIHRvIGF2b2lkIGxvYWRpbmcgZnJvbSBzdGFj
awotICAgICAgICBjYWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQotICAgICAgICBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MykKLSAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbltjZnJdLCB0MwotICAgICAgICBhbmRwIE1hcmtlZEJsb2NrTWFzaywgdDMKLSAgICAgICAg
bG9hZHAgTWFya2VkQmxvY2s6Om1fd2Vha1NldCArIFdlYWtTZXQ6Om1fdm1bdDNdLCB0MwotICAg
IGVsc2lmIENfTE9PUAotICAgICAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCB0MAotICAgICAg
ICBsb2FkcCBTY29wZUNoYWluW3QwXSwgdDEKLSAgICAgICAgc3RvcmVwIHQxLCBTY29wZUNoYWlu
W2Nmcl0KLQotICAgICAgICBsb2FkcCBTY29wZUNoYWluW2Nmcl0sIHQzCi0gICAgICAgIGFuZHAg
TWFya2VkQmxvY2tNYXNrLCB0MwotICAgICAgICBsb2FkcCBNYXJrZWRCbG9jazo6bV93ZWFrU2V0
ICsgV2Vha1NldDo6bV92bVt0M10sIHQzCi0gICAgICAgIHN0b3JlcCBjZnIsIFZNOjp0b3BDYWxs
RnJhbWVbdDNdCi0KLSAgICAgICAgbW92ZSB0MCwgdDIKLSAgICAgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKHQzKQotICAgICAgICBzdG9yZXAgdDMsIFJldHVyblBDW2Nmcl0KLSAg
ICAgICAgbW92ZSBjZnIsIHQwCi0gICAgICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQotICAgICAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQotICAgICAgICBtb3ZlIHQy
LCBjZnIKLSAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9u
W3QxXQotCisgICAgICAgIGlmIENfTE9PUAorICAgICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIGV4
ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBj
YWxsIGV4ZWN1dGFibGVPZmZzZXRUb0Z1bmN0aW9uW3QxXQorICAgICAgICBlbmQKICAgICAgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDMpCiAgICAgICAgIGxvYWRwIFNjb3Bl
Q2hhaW5bY2ZyXSwgdDMKICAgICAgICAgYW5kcCBNYXJrZWRCbG9ja01hc2ssIHQzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCShyZXZpc2lvbiAxNjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTIxNyw4ICsyMTcsMTAgQEAg
bWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKIGVuZAogCiBtYWNybyBjaGVja1N0YWNrUG9pbnRlckFs
aWdubWVudCh0ZW1wUmVnLCBsb2NhdGlvbikKLSAgICBpZiBBUk02NAorICAgIGlmIEFSTTY0IG9y
IENfTE9PUAogICAgICAgICAjIEFSTTY0IHdpbGwgY2hlY2sgZm9yIHVzIQorICAgICAgICAjIENf
TE9PUCBkb2VzIG5vdCBuZWVkIHRoZSBhbGlnbm1lbnQsIGFuZCBjYW4gdXNlIGEgbGl0dGxlIHBl
cmYKKyAgICAgICAgIyBpbXByb3ZlbWVudCBmcm9tIGF2b2lkaW5nIHVzZWxlc3Mgd29yay4KICAg
ICBlbHNlCiAgICAgICAgIGFuZHAgc3AsIDB4ZiwgdGVtcFJlZwogICAgICAgICBidHB6IHRlbXBS
ZWcsIC5zdGFja1BvaW50ZXJPa2F5CkBAIC0yMzAsOSArMjMyLDkgQEAgZW5kCiAKIG1hY3JvIHBy
ZXNlcnZlQ2FsbGVyUENBbmRDRlIoKQogICAgIGlmIENfTE9PUCBvciBBUk0gb3IgQVJNdjcgb3Ig
QVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUyBvciBTSDQKLSAgICAgICAgIyBJbiBDX0xPT1AgY2Fz
ZSwgd2UncmUgb25seSBwcmVzZXJ2aW5nIHRoZSBieXRlY29kZSB2UEMuCi0gICAgICAgICMgRklY
TUU6IE5lZWQgdG8gZml4IGZvciBvdGhlciBwb3J0cwotICAgICAgICAjIG1vdmUgbHIsIGRlc3Rp
bmF0aW9uUmVnaXN0ZXIKKyAgICAgICAgcHVzaCBscgorICAgICAgICBwdXNoIGNmcgorICAgICAg
ICBtb3ZlIHNwLCBjZnIKICAgICBlbHNpZiBYODYgb3IgWDg2XzY0CiAgICAgICAgIHB1c2ggY2Zy
CiAgICAgICAgIG1vdmUgc3AsIGNmcgpAQCAtMjQ2LDkgKzI0OCw5IEBAIGVuZAogCiBtYWNybyBy
ZXN0b3JlQ2FsbGVyUENBbmRDRlIoKQogICAgIGlmIENfTE9PUCBvciBBUk0gb3IgQVJNdjcgb3Ig
QVJNdjdfVFJBRElUSU9OQUwgb3IgTUlQUyBvciBTSDQKLSAgICAgICAgIyBJbiBDX0xPT1AgY2Fz
ZSwgd2UncmUgb25seSBwcmVzZXJ2aW5nIHRoZSBieXRlY29kZSB2UEMuCi0gICAgICAgICMgRklY
TUU6IE5lZWQgdG8gZml4IGZvciBvdGhlciBwb3J0cwotICAgICAgICAjIG1vdmUgbHIsIGRlc3Rp
bmF0aW9uUmVnaXN0ZXIKKyAgICAgICAgbW92ZSBjZnIsIHNwCisgICAgICAgIHBvcCBjZnIKKyAg
ICAgICAgcG9wIGxyCiAgICAgZWxzaWYgWDg2IG9yIFg4Nl82NAogICAgICAgICBtb3ZlIGNmciwg
c3AKICAgICAgICAgcG9wIGNmcgpAQCAtMjg1LDkgKzI4Nyw5IEBAIG1hY3JvIGZ1bmN0aW9uUHJv
bG9ndWUoKQogICAgICAgICBwdXNoIGNmcgogICAgIGVsc2lmIEFSTTY0CiAgICAgICAgIHB1c2hM
UkFuZEZQCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1J
UFMKLSAgICAgICAgcHVzaCBjZnIKKyAgICBlbHNpZiBDX0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9y
IEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKICAgICAgICAgcHVzaCBscgorICAgICAgICBwdXNo
IGNmcgogICAgIGVuZAogICAgIG1vdmUgc3AsIGNmcgogZW5kCkBAIC0yOTcsOSArMjk5LDkgQEAg
bWFjcm8gZnVuY3Rpb25FcGlsb2d1ZSgpCiAgICAgICAgIHBvcCBjZnIKICAgICBlbHNpZiBBUk02
NAogICAgICAgICBwb3BMUkFuZEZQCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RS
QURJVElPTkFMIG9yIE1JUFMKLSAgICAgICAgcG9wIGxyCisgICAgZWxzaWYgQ19MT09QIG9yIEFS
TSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBTCiAgICAgICAgIHBvcCBjZnIK
KyAgICAgICAgcG9wIGxyCiAgICAgZW5kCiBlbmQKIApAQCAtMzA3LDkgKzMwOSw5IEBAIG1hY3Jv
IGNhbGxUb0phdmFTY3JpcHRQcm9sb2d1ZSgpCiAgICAgaWYgWDg2IG9yIFg4Nl82NAogICAgIGVs
c2lmIEFSTTY0CiAgICAgICAgIHB1c2hMUkFuZEZQCi0gICAgZWxzaWYgQVJNIG9yIEFSTXY3IG9y
IEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKLSAgICAgICAgcHVzaCBjZnIKKyAgICBlbHNpZiBD
X0xPT1Agb3IgQVJNIG9yIEFSTXY3IG9yIEFSTXY3X1RSQURJVElPTkFMIG9yIE1JUFMKICAgICAg
ICAgcHVzaCBscgorICAgICAgICBwdXNoIGNmcgogICAgIGVuZAogICAgIHB1c2hDYWxsZWVTYXZl
cwogZW5kCkBAIC0zMjIsOSArMzI0LDkgQEAgbWFjcm8gY2FsbFRvSmF2YVNjcmlwdEVwaWxvZ3Vl
KCkKICAgICBpZiBYODYgb3IgWDg2XzY0CiAgICAgZWxzaWYgQVJNNjQKICAgICAgICAgcG9wTFJB
bmRGUAotICAgIGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFESVRJT05BTCBvciBNSVBT
Ci0gICAgICAgIHBvcCBscgorICAgIGVsc2lmIENfTE9PUCBvciBBUk0gb3IgQVJNdjcgb3IgQVJN
djdfVFJBRElUSU9OQUwgb3IgTUlQUwogICAgICAgICBwb3AgY2ZyCisgICAgICAgIHBvcCBscgog
ICAgIGVuZAogZW5kCiAKQEAgLTM0NywzMCArMzQ5LDMwIEBAIG1hY3JvIHRyYWNlRXhlY3V0aW9u
KCkKIGVuZAogCiBtYWNybyBjYWxsVGFyZ2V0RnVuY3Rpb24oY2FsbExpbmtJbmZvLCBjYWxsZWVG
cmFtZVB0cikKKyAgICBtb3ZlIGNhbGxlZUZyYW1lUHRyLCBzcAogICAgIGlmIENfTE9PUAogICAg
ICAgICBjbG9vcENhbGxKU0Z1bmN0aW9uIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRh
cmdldFtjYWxsTGlua0luZm9dCiAgICAgZWxzZQotICAgICAgICBtb3ZlIGNhbGxlZUZyYW1lUHRy
LCBzcAogICAgICAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFtj
YWxsTGlua0luZm9dCi0gICAgICAgIHJlc3RvcmVTdGFja1BvaW50ZXJBZnRlckNhbGwoKQotICAg
ICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAgZW5kCisgICAgcmVzdG9yZVN0YWNrUG9pbnRl
ckFmdGVyQ2FsbCgpCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQogZW5kCiAKIG1hY3JvIHNsb3dQ
YXRoRm9yQ2FsbChzbG93UGF0aCkKICAgICBjYWxsQ2FsbFNsb3dQYXRoKAogICAgICAgICBzbG93
UGF0aCwKICAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGJ0cHogdDEsIC5kb250
VXBkYXRlU1AKKyAgICAgICAgICAgIGFkZHAgQ2FsbGVyRnJhbWVBbmRQQ1NpemUsIHQxLCBzcAor
ICAgICAgICAuZG9udFVwZGF0ZVNQOgogICAgICAgICAgICAgaWYgQ19MT09QCiAgICAgICAgICAg
ICAgICAgY2xvb3BDYWxsSlNGdW5jdGlvbiBjYWxsZWUKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBidHB6IHQxLCAuZG9udFVwZGF0ZVNQCi0gICAgICAgICAgICAgICAgYWRkcCBD
YWxsZXJGcmFtZUFuZFBDU2l6ZSwgdDEsIHNwCi0gICAgICAgICAgICAuZG9udFVwZGF0ZVNQOgog
ICAgICAgICAgICAgICAgIGNhbGwgY2FsbGVlCi0gICAgICAgICAgICAgICAgcmVzdG9yZVN0YWNr
UG9pbnRlckFmdGVyQ2FsbCgpCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQog
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICByZXN0b3JlU3RhY2tQb2ludGVyQWZ0ZXJDYWxs
KCkKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICAgICAgZW5kKQogZW5kCiAK
QEAgLTQzNCw2ICs0MzYsOCBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVC
bG9jCiAgICAgICAgIGNhbGxTbG93UGF0aCh0cmFjZVNsb3dQYXRoKQogICAgIGVuZAogICAgIGNv
ZGVCbG9ja0dldHRlcih0MSkKK2lmIENfTE9PUAorZWxzZQogICAgIGJhZGRpcyA1LCBDb2RlQmxv
Y2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlciArIEV4ZWN1dGlvbkNvdW50ZXI6Om1fY291bnRlclt0
MV0sIC5jb250aW51ZQogICAgIGNDYWxsMihvc3JTbG93UGF0aCwgY2ZyLCBQQykKICAgICBidHB6
IHQwLCAucmVjb3ZlcgpAQCAtNDQxLDYgKzQ0NSw5IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9j
a0dldHRlciwgY29kZUJsb2MKICAgICAjIHBvcCB0aGUgY2FsbGVyRnJhbWUgc2luY2Ugd2Ugd2ls
bCBqdW1wIHRvIGEgZnVuY3Rpb24gdGhhdCB3YW50cyB0byBzYXZlIGl0CiAgICAgaWYgQVJNNjQK
ICAgICAgICAgcG9wTFJBbmRGUAorICAgIGVsc2lmIEFSTSBvciBBUk12NyBvciBBUk12N19UUkFE
SVRJT05BTCBvciBNSVBTIG9yIFNINAorICAgICAgICBwb3AgY2ZyCisgICAgICAgIHBvcCBscgog
ICAgIGVsc2UKICAgICAgICAgcG9wIGNmcgogICAgIGVuZApAQCAtNDQ4LDYgKzQ1NSw4IEBAIG1h
Y3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MKIC5yZWNvdmVyOgogICAgIGNv
ZGVCbG9ja0dldHRlcih0MSkKIC5jb250aW51ZToKK2VuZAorCiAgICAgY29kZUJsb2NrU2V0dGVy
KHQxKQogICAgIAogICAgIG1vdmVTdGFja1BvaW50ZXJGb3JDb2RlQmxvY2sodDEsIHQyKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTYxNjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MCw2ICs5MCwxMiBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOjpMTEludDsKICNkZWZpbmUgT0ZGTElORV9BU01fQkVHSU4KICNk
ZWZpbmUgT0ZGTElORV9BU01fRU5ECiAKKyNpZiAwCisjZGVmaW5lIFRSQUNFX09QQ09ERShvcGNv
ZGUpIGRhdGFMb2dGKCIgICBvcCAlc1xuIiwgI29wY29kZSkKKyNlbHNlCisjZGVmaW5lIFRSQUNF
X09QQ09ERShvcGNvZGUpCisjZW5kaWYKKwogLy8gVG8ga2VlcCBjb21waWxlcnMgaGFwcHkgaW4g
Y2FzZSBvZiB1bnVzZWQgbGFiZWxzLCBmb3JjZSB1c2FnZSBvZiB0aGUgbGFiZWw6CiAjZGVmaW5l
IFVTRV9MQUJFTChsYWJlbCkgXAogICAgIGRvIHsgXApAQCAtOTcsNyArMTAzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzo6TExJbnQ7CiAgICAgICAgICAgICBnb3RvIGxhYmVsOyBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKLSNkZWZpbmUgT0ZGTElORV9BU01fT1BDT0RFX0xBQkVMKG9wY29kZSkg
REVGSU5FX09QQ09ERShvcGNvZGUpIFVTRV9MQUJFTChvcGNvZGUpOworI2RlZmluZSBPRkZMSU5F
X0FTTV9PUENPREVfTEFCRUwob3Bjb2RlKSBERUZJTkVfT1BDT0RFKG9wY29kZSkgVVNFX0xBQkVM
KG9wY29kZSk7IFRSQUNFX09QQ09ERShvcGNvZGUpOwogCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fT1BDT0RFUykKICNkZWZpbmUgT0ZGTElORV9BU01fR0xVRV9MQUJFTChsYWJlbCkgIGxhYmVs
OiBVU0VfTEFCRUwobGFiZWwpOwpAQCAtMjEyLDggKzIxOCwxMCBAQCBzdHJ1Y3QgQ0xvb3BSZWdp
c3RlciB7CiAjZW5kaWYgLy8gIUNQVShCSUdfRU5ESUFOKQogI2VuZGlmIC8vICFVU0UoSlNWQUxV
RTY0KQogCisgICAgICAgIGludHB0cl90KiBpcDsKICAgICAgICAgaW50OF90KiBpOHA7CiAgICAg
ICAgIHZvaWQqIHZwOworICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsKICAgICAgICAgRXhl
Y1N0YXRlKiBleGVjU3RhdGU7CiAgICAgICAgIHZvaWQqIGluc3RydWN0aW9uOwogICAgICAgICBW
TSogdm07CkBAIC0yMzIsNiArMjQwLDcgQEAgc3RydWN0IENMb29wUmVnaXN0ZXIgewogICAgIG9w
ZXJhdG9yIEluc3RydWN0aW9uKigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5zdHJ1Y3Rp
b24qPihpbnN0cnVjdGlvbik7IH0KICAgICBvcGVyYXRvciBWTSooKSB7IHJldHVybiB2bTsgfQog
ICAgIG9wZXJhdG9yIFByb3RvQ2FsbEZyYW1lKigpIHsgcmV0dXJuIHByb3RvQ2FsbEZyYW1lOyB9
CisgICAgb3BlcmF0b3IgUmVnaXN0ZXIqKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZWdp
c3Rlcio+KHZwKTsgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpbmxpbmUgdm9pZCBjbGVh
ckhpZ2hXb3JkKCkgeyBpMzJwYWRkaW5nID0gMDsgfQpAQCAtMzEzLDE3ICszMjIsMTkgQEAgSlNW
YWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wYwogICAgIC8vIDIuIDMyIGJpdCBy
ZXN1bHQgdmFsdWVzIHdpbGwgYmUgaW4gdGhlIGxvdyAzMi1iaXQgb2YgdDAuCiAgICAgLy8gMy4g
NjQgYml0IHJlc3VsdCB2YWx1ZXMgd2lsbCBiZSBpbiB0MC4KIAotICAgIENMb29wUmVnaXN0ZXIg
dDAsIHQxLCB0MiwgdDMsIHQ1LCBzcDsKKyAgICBDTG9vcFJlZ2lzdGVyIHQwLCB0MSwgdDIsIHQz
LCB0NSwgc3AsIGNmciwgbHIsIHBjOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgQ0xvb3BSZWdp
c3RlciByQmFzZVBDLCB0YWdUeXBlTnVtYmVyLCB0YWdNYXNrOworICAgIENMb29wUmVnaXN0ZXIg
cGNCYXNlLCB0YWdUeXBlTnVtYmVyLCB0YWdNYXNrOwogI2VuZGlmCi0gICAgQ0xvb3BSZWdpc3Rl
ciByUmV0VlBDOwogICAgIENMb29wRG91YmxlUmVnaXN0ZXIgZDAsIGQxOwogCi0gICAgSW5zdHJ1
Y3Rpb24qIHZQQzsKLQotICAgIC8vIHJQQyBpcyBhbiBhbGlhcyBmb3IgdlBDLiBTZXQgdXAgdGhl
IGFsaWFzOgotICAgIENMb29wUmVnaXN0ZXImIHJQQyA9ICpDQVNUPENMb29wUmVnaXN0ZXIqPigm
dlBDKTsKKyAgICBsci5vcGNvZGUgPSBnZXRPcGNvZGUobGxpbnRfcmV0dXJuX3RvX2hvc3QpOwor
ICAgIHNwLnZwID0gdm0tPmludGVycHJldGVyLT5zdGFjaygpLnRvcE9mU3RhY2soKSArIDE7Cisg
ICAgY2ZyLmNhbGxGcmFtZSA9IHZtLT50b3BDYWxsRnJhbWU7CisjaWZuZGVmIE5ERUJVRworICAg
IHZvaWQqIHN0YXJ0U1AgPSBzcC52cDsKKyAgICBDYWxsRnJhbWUqIHN0YXJ0Q0ZSID0gY2ZyLmNh
bGxGcmFtZTsKKyNlbmRpZgogCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW5jb21pbmcgYXJncyBm
b3IgZG9DYWxsVG9KYXZhU2NyaXB0OgogICAgIHQwLnZwID0gZXhlY3V0YWJsZUFkZHJlc3M7CkBA
IC0zMzcsMTggKzM0OCwyMyBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVudHJ5
T3BjCiAgICAgdGFnTWFzay5pID0gMHhGRkZGMDAwMDAwMDAwMDAyOwogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKLSAgICAvLyBjZnIgaXMgYW4gYWxpYXMgZm9yIGNhbGxGcmFtZS4gU2V0IHVw
IHRoaXMgYWxpYXM6Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWU7Ci0gICAgQ0xvb3BSZWdpc3Rl
ciYgY2ZyID0gKkNBU1Q8Q0xvb3BSZWdpc3Rlcio+KCZjYWxsRnJhbWUpOwotCi0gICAgLy8gU2lt
dWxhdGUgYSBuYXRpdmUgcmV0dXJuIFBDIHdoaWNoIHNob3VsZCBuZXZlciBiZSB1c2VkOgotICAg
IHJSZXRWUEMuaSA9IDB4YmJhZGJlZWY7Ci0KICAgICAvLyBJbnRlcnByZXRlciB2YXJpYWJsZXMg
Zm9yIHZhbHVlIHBhc3NpbmcgYmV0d2VlbiBvcGNvZGVzIGFuZC9vciBoZWxwZXJzOgogICAgIE5h
dGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmMgPSAwOwogICAgIEpTVmFsdWUgZnVuY3Rpb25SZXR1cm5W
YWx1ZTsKICAgICBPcGNvZGUgb3Bjb2RlID0gZ2V0T3Bjb2RlKGVudHJ5T3Bjb2RlSUQpOwogCisg
ICAgI2RlZmluZSBQVVNIKGNsb29wUmVnKSBcCisgICAgICAgIGRvIHsgXAorICAgICAgICAgICAg
c3AuaXAtLTsgXAorICAgICAgICAgICAgKnNwLmlwID0gY2xvb3BSZWcuaTsgXAorICAgICAgICB9
IHdoaWxlIChmYWxzZSkKKyAgICAKKyAgICAjZGVmaW5lIFBPUChjbG9vcFJlZykgXAorICAgICAg
ICBkbyB7IFwKKyAgICAgICAgICAgIGNsb29wUmVnLmkgPSAqc3AuaXA7IFwKKyAgICAgICAgICAg
IHNwLmlwKys7IFwKKyAgICAgICAgfSB3aGlsZSAoZmFsc2UpCisKICAgICAjaWYgRU5BQkxFKE9Q
Q09ERV9TVEFUUykKICAgICAgICAgI2RlZmluZSBSRUNPUkRfT1BDT0RFX1NUQVRTKF9fb3Bjb2Rl
KSBcCiAgICAgICAgICAgICBPcGNvZGVTdGF0czo6cmVjb3JkSW5zdHJ1Y3Rpb24oX19vcGNvZGUp
CkBAIC0zNTcsOSArMzczLDkgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRy
eU9wYwogICAgICNlbmRpZgogCiAgICAgI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICNk
ZWZpbmUgRkVUQ0hfT1BDT0RFKCkgdlBDLT51Lm9wY29kZQorICAgICAgICAjZGVmaW5lIEZFVENI
X09QQ09ERSgpIHBjLm9wY29kZQogICAgICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
ICNkZWZpbmUgRkVUQ0hfT1BDT0RFKCkgKmJpdHdpc2VfY2FzdDxPcGNvZGUqPihyQmFzZVBDLmk4
cCArIHJQQy5pICogOCkKKyAgICAgICAgI2RlZmluZSBGRVRDSF9PUENPREUoKSAqYml0d2lzZV9j
YXN0PE9wY29kZSo+KHBjQmFzZS5pOHAgKyBwYy5pICogOCkKICAgICAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAogICAgICNkZWZpbmUgTkVYVF9JTlNUUlVDVElPTigpIFwKQEAgLTQwOCwxNCAr
NDI0LDIyIEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGMKIAogICAg
ICAgICAjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgogCisgICAgICAgIE9GRkxJTkVfQVNNX0dM
VUVfTEFCRUwobGxpbnRfcmV0dXJuX3RvX2hvc3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChzdGFydFNQID09IHNwLnZwKTsKKyAgICAgICAgICAgIEFTU0VSVChzdGFydENGUiA9PSBj
ZnIuY2FsbEZyYW1lKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUodDEuaSwgdDAuaSk7IC8vIHJldHVybmluZyBKU1ZhbHVlKHRhZywgcGF5bG9hZCk7
CisjZWxzZQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZSh0MC5lbmNvZGVkSlNW
YWx1ZSk7CisjZW5kaWYKKyAgICAgICAgfQorCiAgICAgICAgIC8vIEluIHRoZSBBU00gbGxpbnQs
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKSBpcyBhIHBpZWNlIG9mIGdsdWUKLSAgICAgICAgLy8g
ZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIEpJVCAoc2VlIGRmZy9ERkdPcGVyYXRpb25zLmNwcCku
CisgICAgICAgIC8vIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBKSVQgKHNlZSBqaXQvSklUT3Bl
cmF0aW9ucy5jcHApLgogICAgICAgICAvLyBXZSBzaW11bGF0ZSBpdCBoZXJlIHdpdGggYSBwc2Vk
dW8tb3Bjb2RlIGhhbmRsZXIuCiAgICAgICAgIE9GRkxJTkVfQVNNX0dMVUVfTEFCRUwoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgLy8gVGhlIEFTTSBwYXJ0
IHBvcHMgdGhlIGZyYW1lOgotICAgICAgICAgICAgY2FsbEZyYW1lID0gY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZSgpOwotCiAgICAgICAgICAgICAvLyBUaGUgcGFydCBpbiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSgpOgogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSB2bS0+
aG9zdENhbGxSZXR1cm5WYWx1ZTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQpAQCAtNDI0LDcgKzQ0
OCw4IEBAIEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGMKICNlbHNlCiAg
ICAgICAgICAgICB0MC5lbmNvZGVkSlNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
I2VuZGlmCi0gICAgICAgICAgICBnb3RvIGRvUmV0dXJuSGVscGVyOworICAgICAgICAgICAgb3Bj
b2RlID0gbHIub3Bjb2RlOworICAgICAgICAgICAgRElTUEFUQ0hfT1BDT0RFKCk7CiAgICAgICAg
IH0KIAogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19PUENPREVTKQpAQCAtNDM0LDU1ICs0NTks
NiBAQCBKU1ZhbHVlIENMb29wOjpleGVjdXRlKE9wY29kZUlEIGVudHJ5T3BjCiAKICAgICB9IC8v
IEVORCBieXRlY29kZSBoYW5kbGVyIGNhc2VzLgogCi0gICAgLy89PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAg
ICAvLyBCeXRlY29kZSBoZWxwZXJzOgotCi0gICAgZG9SZXR1cm5IZWxwZXI6IHsKLSAgICAgICAg
QVNTRVJUKCEhY2FsbEZyYW1lKTsKLSAgICAgICAgaWYgKGNhbGxGcmFtZS0+aXNWTUVudHJ5U2Vu
dGluZWwoKSkgewotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSh0MS5pLCB0MC5pKTsgLy8gcmV0dXJuaW5nIEpTVmFsdWUodGFnLCBwYXlsb2FkKTsKLSNl
bHNlCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZGVjb2RlKHQwLmVuY29kZWRKU1ZhbHVl
KTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIG5vcm1hbCBBU00gbGxpbnQg
Y2FsbCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRvIHRoZSBjYWxsZXIgYXMKLSAgICAgICAgLy8g
cmVjb3JkZWQgaW4gclJldFZQQywgYW5kIHRoZSBjYWxsZXIgd291bGQgZmV0Y2ggdGhlIHJldHVy
biBhZGRyZXNzCi0gICAgICAgIC8vIGZyb20gQXJndW1lbnRDb3VudC50YWcoKSAoc2VlIHRoZSBk
aXNwYXRjaEFmdGVyQ2FsbCgpIG1hY3JvIHVzZWQgaW4KLSAgICAgICAgLy8gdGhlIGNhbGxUYXJn
ZXRGdW5jdGlvbigpIG1hY3JvIGluIHRoZSBsbGludCBhc20gZmlsZXMpLgotICAgICAgICAvLwot
ICAgICAgICAvLyBGb3IgdGhlIEMgbG9vcCwgd2UgZG9uJ3QgaGF2ZSB0aGUgSklUIHN0dWIgdG8g
ZG8gdGhpcyB3b3JrIGZvciB1cy4gU28sCi0gICAgICAgIC8vIHdlIGp1bXAgdG8gbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQuCi0KLSAgICAgICAgdlBDID0gY2FsbEZyYW1lLT5jdXJyZW50VlBD
KCk7Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAvLyBCYXNlZCBvbiBMb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtJ3MgZGlzcGF0Y2hBZnRlckNhbGwoKToKLQotICAgICAgICAvLyBXaGVu
IHJldHVybmluZyBmcm9tIGEgbmF0aXZlIHRyYW1wb2xpbmUgY2FsbCwgdW5saWtlIHRoZSBhc3Nl
bWJseQotICAgICAgICAvLyBMTEludCwgd2UgY2FuJ3Qgc2ltcGx5IHJldHVybiB0byB0aGUgY2Fs
bGVyLiBJbiBvdXIgY2FzZSwgd2UgZ3JhYgotICAgICAgICAvLyB0aGUgY2FsbGVyJ3MgVlBDIGFu
ZCByZXN1bWUgZXhlY3V0aW9uIHRoZXJlLiBIb3dldmVyLCB0aGUgY2FsbGVyJ3MKLSAgICAgICAg
Ly8gVlBDIHJldHVybmVkIGJ5IGNhbGxGcmFtZS0+Y3VycmVudFZQQygpIGlzIGluIHRoZSBmb3Jt
IG9mIHRoZSByZWFsCi0gICAgICAgIC8vIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBieXRlY29kZSwg
YnV0IHRoZSA2NC1iaXQgbGxpbnQgZXhwZWN0cyB0aGUKLSAgICAgICAgLy8gVlBDIHRvIGJlIGEg
Ynl0ZWNvZGUgb2Zmc2V0LiBIZW5jZSwgd2UgbmVlZCB0byBtYXAgaXQgYmFjayB0byBhCi0gICAg
ICAgIC8vIGJ5dGVjb2RlIG9mZnNldCBiZWZvcmUgd2UgZGlzcGF0Y2ggdmlhIHRoZSB1c3VhbCBk
aXNwYXRjaCBtZWNoYW5pc20KLSAgICAgICAgLy8gaS5lLiBORVhUX0lOU1RSVUNUSU9OKCk6Ci0K
LSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwot
ICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgclBDLnZwID0gY2FsbEZyYW1lLT5j
dXJyZW50VlBDKCk7Ci0gICAgICAgIHJQQy5pID0gclBDLmk4cCAtIHJlaW50ZXJwcmV0X2Nhc3Q8
aW50OF90Kj4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKLSAgICAgICAgclBD
LmkgPj49IDM7Ci0KLSAgICAgICAgckJhc2VQQy52cCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQotCi0gICAgICAgIGdvdG8gbGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ7Ci0KLSAgICB9IC8vIEVORCBkb1JldHVybkhlbHBlci4K
LQotCiAjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fT1BDT0RFUykKICAgICAvLyBLZWVwIHRoZSBj
b21waWxlciBoYXBweSBzbyB0aGF0IGl0IGRvZXNuJ3QgY29tcGxhaW4gYWJvdXQgdW51c2VkCiAg
ICAgLy8gbGFiZWxzIGZvciB0aGUgTExJbnQgdHJhbXBvbGluZSBnbHVlLiBUaGUgbGFiZWxzIGFy
ZSBhdXRvbWF0aWNhbGx5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNt
LnJiCShyZXZpc2lvbiAxNjE2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBy
dWJ5CiAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNiArNDUsNyBAQCBjbGFz
cyBBc3NlbWJsZXIKICAgICAgICAgQGNvZGVPcmlnaW4gPSBuaWwKICAgICAgICAgQG51bUxvY2Fs
TGFiZWxzID0gMAogICAgICAgICBAbnVtR2xvYmFsTGFiZWxzID0gMAorICAgICAgICBAbnVtU3lu
dGhlc2l6ZWRHbG9iYWxMYWJlbHMgPSAwCiAKICAgICAgICAgQG5ld2xpbmVTcGFjZXJTdGF0ZSA9
IDpub25lCiAgICAgZW5kCkBAIC0yMTgsNiArMjE5LDEzIEBAIGNsYXNzIEFzc2VtYmxlcgogICAg
IGRlZiBhbm5vdGF0aW9uKHRleHQpCiAgICAgICAgIEBhbm5vdGF0aW9uID0gdGV4dAogICAgIGVu
ZAorCisgICAgZGVmIG51bVN5bnRoZXNpemVkR2xvYmFsTGFiZWxzKCkKKyAgICAgICAgQG51bVN5
bnRoZXNpemVkR2xvYmFsTGFiZWxzCisgICAgZW5kCisgICAgZGVmIGluY051bVN5bnRoZXNpemVk
R2xvYmFsTGFiZWxzKCkKKyAgICAgICAgQG51bVN5bnRoZXNpemVkR2xvYmFsTGFiZWxzICs9IDEK
KyAgICBlbmQKIGVuZAogCiBhc21GaWxlID0gQVJHVi5zaGlmdApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vY2xvb3AucmIJKHJldmlzaW9uIDE2MTYyMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03OSwxMSArNzksMTEg
QEAgY2xhc3MgUmVnaXN0ZXJJRAogICAgICAgICB3aGVuICJ0MyIsICJhMyIKICAgICAgICAgICAg
ICJ0MyIKICAgICAgICAgd2hlbiAidDQiCi0gICAgICAgICAgICAiclBDIgorICAgICAgICAgICAg
InBjIgogICAgICAgICB3aGVuICJ0NSIKICAgICAgICAgICAgICJ0NSIKICAgICAgICAgd2hlbiAi
dDYiCi0gICAgICAgICAgICAickJhc2VQQyIKKyAgICAgICAgICAgICJwY0Jhc2UiCiAgICAgICAg
IHdoZW4gImNzcjEiCiAgICAgICAgICAgICAidGFnVHlwZU51bWJlciIKICAgICAgICAgd2hlbiAi
Y3NyMiIKQEAgLTkxLDcgKzkxLDcgQEAgY2xhc3MgUmVnaXN0ZXJJRAogICAgICAgICB3aGVuICJj
ZnIiCiAgICAgICAgICAgICAiY2ZyIgogICAgICAgICB3aGVuICJsciIKLSAgICAgICAgICAgICJy
UmV0VlBDIgorICAgICAgICAgICAgImxyIgogICAgICAgICB3aGVuICJzcCIKICAgICAgICAgICAg
ICJzcCIKICAgICAgICAgZWxzZQpAQCAtNTQ0LDcgKzU0NCw3IEBAIGVuZAogZGVmIGNsb29wRW1p
dENhbGxTbG93UGF0aChvcGVyYW5kcykKICAgICAkYXNtLnB1dGMgInsiCiAgICAgJGFzbS5wdXRj
ICIgICAgU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCA9ICN7b3BlcmFuZHNbMF0uY0xhYmVsfSgj
e29wZXJhbmRzWzFdLmNsRHVtcH0sICN7b3BlcmFuZHNbMl0uY2xEdW1wfSk7IgotICAgICRhc20u
cHV0YyAiICAgIGRlY29kZVJlc3VsdChyZXN1bHQsIHQwLmluc3RydWN0aW9uLCB0MS52cCk7Igor
ICAgICRhc20ucHV0YyAiICAgIGRlY29kZVJlc3VsdChyZXN1bHQsIHQwLnZwLCB0MS52cCk7Igog
ICAgICRhc20ucHV0YyAifSIKIGVuZAogCkBAIC04NjIsNyArODYyLDggQEAgY2xhc3MgSW5zdHJ1
Y3Rpb24KICAgICAgICAgd2hlbiAiYnJlYWsiCiAgICAgICAgICAgICAkYXNtLnB1dGMgIkNSQVNI
KCk7IC8vIGJyZWFrIGluc3RydWN0aW9uIG5vdCBpbXBsZW1lbnRlZC4iCiAgICAgICAgIHdoZW4g
InJldCIKLSAgICAgICAgICAgICRhc20ucHV0YyAiZ290byBkb1JldHVybkhlbHBlcjsiCisgICAg
ICAgICAgICAkYXNtLnB1dGMgIm9wY29kZSA9IGxyLm9wY29kZTsiCisgICAgICAgICAgICAkYXNt
LnB1dGMgIkRJU1BBVENIX09QQ09ERSgpOyIKIAogICAgICAgICB3aGVuICJjYmVxIgogICAgICAg
ICAgICAgY2xvb3BFbWl0Q29tcGFyZUFuZFNldChvcGVyYW5kcywgOnVpbnQ4LCAiPT0iKQpAQCAt
MTA4Myw4ICsxMDg0LDExIEBAIGNsYXNzIEluc3RydWN0aW9uCiAgICAgICAgICAgICBjbG9vcEVt
aXRPcEFuZEJyYW5jaChvcGVyYW5kcywgInwiLCA6aW50MzIsICIhPSAwIikKICAgICAgICAgICAg
IAogICAgICAgICB3aGVuICJtZW1mZW5jZSIKKworICAgICAgICB3aGVuICJwdXNoIgorICAgICAg
ICAgICAgJGFzbS5wdXRjICJQVVNIKCN7b3BlcmFuZHNbMF0uY2xEdW1wfSk7IgogICAgICAgICB3
aGVuICJwb3AiCi0gICAgICAgICAgICAkYXNtLnB1dGMgIlJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIHBvcCBub3QgaW1wbGVtZW50ZWQuIgorICAgICAgICAgICAgJGFzbS5wdXRjICJQ
T1AoI3tvcGVyYW5kc1swXS5jbER1bXB9KTsiCiAKICAgICAgICAgd2hlbiAicHVzaENhbGxlZVNh
dmVzIgogICAgICAgICB3aGVuICJwb3BDYWxsZWVTYXZlcyIKQEAgLTExMDIsOCArMTEwNiwxMSBA
QCBjbGFzcyBJbnN0cnVjdGlvbgogICAgICAgICAjIHVzZSBvZiB0aGUgY2FsbCBpbnN0cnVjdGlv
bi4gSW5zdGVhZCwgd2UganVzdCBpbXBsZW1lbnQgSlMgY2FsbHMKICAgICAgICAgIyBhcyBhbiBv
cGNvZGUgZGlzcGF0Y2guCiAgICAgICAgIHdoZW4gImNsb29wQ2FsbEpTRnVuY3Rpb24iCisgICAg
ICAgICAgICAkYXNtLmluY051bVN5bnRoZXNpemVkR2xvYmFsTGFiZWxzKCkKKyAgICAgICAgICAg
ICRhc20ucHV0YyAibHIub3Bjb2RlID0gZ2V0T3Bjb2RlKGxsaW50X3N5bnRoZXNpemVkX2xhYmVs
XyN7JGFzbS5udW1TeW50aGVzaXplZEdsb2JhbExhYmVsc30pOyIKICAgICAgICAgICAgICRhc20u
cHV0YyAib3Bjb2RlID0gI3tvcGVyYW5kc1swXS5jbFZhbHVlKDpvcGNvZGUpfTsiCiAgICAgICAg
ICAgICAkYXNtLnB1dGMgIkRJU1BBVENIX09QQ09ERSgpOyIKKyAgICAgICAgICAgICRhc20ucHV0
c0xhYmVsKCJsbGludF9zeW50aGVzaXplZF9sYWJlbF8jeyRhc20ubnVtU3ludGhlc2l6ZWRHbG9i
YWxMYWJlbHN9IikKIAogICAgICAgICAjIFdlIGNhbid0IGRvIGdlbmVyaWMgZnVuY3Rpb24gY2Fs
bHMgd2l0aCBhbiBhcmJpdHJhcnkgc2V0IG9mIGFyZ3MsIGJ1dAogICAgICAgICAjIGZvcnR1bmF0
ZWx5IHdlIGRvbid0IGhhdmUgdG8gaGVyZS4gQWxsIG5hdGl2ZSBmdW5jdGlvbiBjYWxscyBhbHdh
eXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2MTYy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTEsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDExLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIxLDcgKzIyMSw3IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faW5pdGlhbGl6aW5nT2JqZWN0Q2xh
c3MoMCkKICNlbmRpZgogICAgICwgbV9zdGFja0xpbWl0KDApCi0jaWYgRU5BQkxFKExMSU5UX0NM
T09QKQorI2lmIEVOQUJMRShMTElOVF9DX0xPT1ApCiAgICAgLCBtX2pzU3RhY2tMaW1pdCgwKQog
I2VuZGlmCiAgICAgLCBtX2luRGVmaW5lT3duUHJvcGVydHkoZmFsc2UpCg==
</data>
<flag name="review"
          id="244718"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>