<?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>225846</bug_id>
          
          <creation_ts>2021-05-15 17:21:29 -0700</creation_ts>
          <short_desc>Implement baseline op_enter, op_ret, op_check_traps, op_throw using JIT thunks.</short_desc>
          <delta_ts>2021-05-17 16:55:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1760506</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-15 17:21:29 -0700</bug_when>
    <thetext>op_enter, op_ret, op_check_traps are 3 of the most common opcodes.  Throwing in op_throw because it&apos;s easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760512</commentid>
    <comment_count>1</comment_count>
      <attachid>428754</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-15 17:49:34 -0700</bug_when>
    <thetext>Created attachment 428754
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760671</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-05-16 21:21:31 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r277576: &lt;http://trac.webkit.org/r277576&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760955</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-17 16:55:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/78128984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428754</attachid>
            <date>2021-05-15 17:49:34 -0700</date>
            <delta_ts>2021-05-16 20:08:47 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-225846.patch</filename>
            <type>text/plain</type>
            <size>26542</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3NTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDIxLTA1LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgYmFzZWxpbmUgb3BfZW50ZXIsIG9wX3JldCwgb3BfY2hlY2tfdHJhcHMsIG9wX3Ro
cm93IHVzaW5nIEpJVCB0aHVua3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjU4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBvcF9lbnRlciwgb3BfcmV0LCBvcF9jaGVja190cmFwcyBhcmUgMyBvZiB0
aGUgbW9zdCBjb21tb24gb3Bjb2Rlcy4gIFRocm93aW5nIGluCisgICAgICAgIG9wX3Rocm93IGJl
Y2F1c2UgaXQncyBlYXN5LgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHRoZSBmb2xsb3dpbmcg
Y2hhbmdlcyB3ZXJlIGFsc28gbWFkZToKKworICAgICAgICAxLiBSZW5hbWVkIGNvcHlDYWxsZWVT
YXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcigpIHRv
CisgICAgICAgICAgIGNvcHlMTEludEJhc2VsaW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lz
dGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoKS4KKworICAgICAgICAgICBJdCBpcyBv
bmx5IHVzZWQgYnkgdGhlIGJhc2VsaW5lIEpJVC4gIENoYW5nZWQgaXQgdG8gYWx3YXlzIG9wZXJh
dGUgb24KKyAgICAgICAgICAgUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50QmFzZWxpbmVDYWxs
ZWVTYXZlUmVnaXN0ZXJzKCkuICBUaGlzIHJlbW92ZXMgdGhlCisgICAgICAgICAgIGRlcGVuZGVu
Y3kgb24gYSBjdXJyZW50IGNvZGVCbG9jayBiZWluZyBjb21waWxlZCwgYW5kIGFsbG93cyB1cyB0
byB1c2UgaXQKKyAgICAgICAgICAgZm9yIGEgSklUIHRodW5rLgorCisgICAgICAgIDIuIEFkZGVk
IEpJVDo6ZW1pdE5ha2VkTmVhckp1bXAoKSB0byBtYWtlIGl0IGVhc3kgdG8gZW1pdCBkaXJlY3Qg
anVtcHMgdG8gSklUIHRodW5rcy4KKworICAgICAgICAgICBDdXJyZW50bHksIGl0IGlzIG9ubHkg
dXNlZCBieSBvcF9yZXQgYW5kIG9wX3Rocm93LgorCisgICAgICAgIDMuIENoYW5nZWQgc29tZSB0
aHVua3MgdG8gdXNlIGVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjaygpIGluc3RlYWQKKyAg
ICAgICAgICAgZW1pdEV4Y2VwdGlvbkNoZWNrKCkgdG8gbWFrZSBpdCBleHBsaWNpdCB0aGF0IHRo
ZXNlIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUKKyAgICAgICAgICAgcGF0Y2hhYmxlLgorCisgICAg
ICAgIFdpdGggdGhpcyBwYXRjaCwgLS1kdW1wTGlua0J1ZmZlclN0YXRzIHNob3dzIHRoZSBmb2xs
b3dpbmcgY2hhbmdlcyBpbiBlbWl0dGVkCisgICAgICAgIEpJVCBjb2RlIHNpemUgKHVzaW5nIGEg
c2luZ2xlIHJ1biBvZiB0aGUgQ0xJIHZlcnNpb24gb2YgSmV0U3RyZWFtMiBvbiBBUyBNYWMpCisg
ICAgICAgIGNvbXBhcmluZyB0byBjdXJyZW50IHRpcCBvZiB0cmVlOgorCisgICAgICAgICAgICAg
ICAgICAgICAgICBCYXNlICAgICAgICAgICAgICAgICAgICAgTmV3ICAgICAgICAgICAgICAgICAg
ICAgIERpZmYKKworICAgICAgICAgICBCYXNlbGluZUpJVDogNzc0Mjk0MDAgKDczLjg0MjQzMCBN
QikgIDcyNDA3OTA0ICg2OS4wNTM1NTggTUIpICAwLjk0eCAocmVkdWN0aW9uKQorICAgICAgICAg
ICAgICAgICAgIERGRzogMzYxNjA4ODAgKDM0LjQ4NTcwMyBNQikgIDM2NjIyMTc2ICgzNC45MjU2
MjkgTUIpICAxLjAxeAorICAgICAgICAgICAgICAgICBUaHVuazogMjMxNTkwMjQgKDIyLjA4NjE2
NiBNQikgIDIzMjk1NDQ4ICgyMi4yMTYyNzAgTUIpICAxLjAxeAorICAgICAgICAgICBJbmxpbmVD
YWNoZTogMjIwNjgzNDggKDIxLjA0NjAxNyBNQikgIDIyMTU3MjM2ICgyMS4xMzA3ODcgTUIpICAx
LjAweAorICAgICAgICAgICAgICAgICAgIEZUTDogNjAwNDczNiAoNS43MjY1NjIgTUIpICAgIDYw
MzA1MzYgKDUuNzUxMTY3IE1CKSAgICAxLjAweAorICAgICAgICAgICAgICAgICAgV2FzbTogMjQy
OTIwNCAoMi4zMTY2NjkgTUIpICAgIDIzMDA4NzIgKDIuMTk0MjgzIE1CKSAgICAwLjk1eCAocHJv
YmFibHkgbm9pc2UpCisgICAgICAgICAgICAgICBZYXJySklUOiAxNTIyNDg4ICgxLjQ1MTk1OCBN
QikgICAgMTUyMjYxNiAoMS40NTIwODAgTUIpICAgIDEuMDB4CisgICAgICAgICAgICAgICAgQ1NT
SklUOiAwICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgVW5jYXRlZ29yaXplZDog
MCAgICAgICAgICAgICAgICAgICAgICAgIDAKKworICAgICAgICBDdW11bGF0aXZlIGRpZmYgc2lu
Y2UgdGhlIHN0YXJ0IG9mIHRoaXMgZWZmb3J0IHRvIHB1dCBtb3JlIGNvZGUgaW4gSklUIHRodW5r
czoKKworICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgICAgICAgICAgICAgICAgIE5l
dyAgICAgICAgICAgICAgICAgICAgICBEaWZmCisKKyAgICAgICAgICAgQmFzZWxpbmVKSVQ6IDg5
MDg5OTY0ICg4NC45NjI4MTEgTUIpICA3MjQwNzkwNCAoNjkuMDUzNTU4IE1CKSAgMC44MXggKHJl
ZHVjdGlvbikKKyAgICAgICAgICAgICAgICAgICBERkc6IDM5MTE3MzYwICgzNy4zMDUyMjIgTUIp
ICAzNjYyMjE3NiAoMzQuOTI1NjI5IE1CKSAgMC45NHggKHJlZHVjdGlvbikKKyAgICAgICAgICAg
ICAgICAgVGh1bms6IDIzMjMwOTY4ICgyMi4xNTQ3NzggTUIpICAyMzI5NTQ0OCAoMjIuMjE2Mjcw
IE1CKSAgMS4wMHgKKyAgICAgICAgICAgSW5saW5lQ2FjaGU6IDIyMDI3NDE2ICgyMS4wMDY5ODEg
TUIpICAyMjE1NzIzNiAoMjEuMTMwNzg3IE1CKSAgMS4wMXgKKyAgICAgICAgICAgICAgICAgICBG
VEw6IDY1NzU3NzIgKDYuMjcxMTQ1IE1CKSAgICA2MDMwNTM2ICg1Ljc1MTE2NyBNQikgICAgMC45
MnggKHJlZHVjdGlvbikKKyAgICAgICAgICAgICAgICAgIFdhc206IDIzMDI3MjQgKDIuMTk2MDQ5
IE1CKSAgICAyMzAwODcyICgyLjE5NDI4MyBNQikgICAgMS4wMHgKKyAgICAgICAgICAgICAgIFlh
cnJKSVQ6IDE1Mzg5NTYgKDEuNDY3NjYzIE1CKSAgICAxNTIyNjE2ICgxLjQ1MjA4MCBNQikgICAg
MC45OXgKKyAgICAgICAgICAgICAgICBDU1NKSVQ6IDAgICAgICAgICAgICAgICAgICAgICAgICAw
CisgICAgICAgICBVbmNhdGVnb3JpemVkOiAwICAgICAgICAgICAgICAgICAgICAgICAgMAorCisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdWI2NCk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRSZXN0b3JlQ2FsbGVl
U2F2ZXNGb3IpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNvcHlMTEludEJhc2Vs
aW5lQ2FsbGVlU2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNC
dWZmZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNvcHlDYWxsZWVTYXZlc0Zy
b21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEVudGVyT3B0
aW1pemF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAqIGpp
dC9KSVQuaDoKKyAgICAgICAgKEpTQzo6TmVhckp1bXBSZWNvcmQ6Ok5lYXJKdW1wUmVjb3JkKToK
KyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROYWtl
ZE5lYXJKdW1wKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9yZXQpOgorICAgICAgICAoSlNDOjpKSVQ6Om9wX3JldF9oYW5kbGVyR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Rocm93KToKKyAgICAgICAgKEpT
Qzo6SklUOjpvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2VudGVyKToKKyAgICAgICAgKEpTQzo6SklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKToKKyAgICAgICAgKEpTQzo6SklU
OjpvcF9jaGVja190cmFwc19oYW5kbGVyR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfZ2V0X2Zyb21fc2Nv
cGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OnNsb3dfb3BfcHV0X3RvX3Njb3BlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
VGh1bmtzOjpwcmVpbml0aWFsaXplRXh0cmFDVElUaHVua3MpOgorICAgICAgICAqIGppdC9TbG93
UGF0aENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVRTbG93UGF0aENhbGw6OmdlbmVyYXRlVGh1
bmspOgorCiAyMDIxLTA1LTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBUdXJuIGNhbGxHZXR0ZXIoKSAvIGNhbGxTZXR0ZXIoKSBpbnRvIGluc3Rh
bmNlIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDI3NzU1MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTc5MCw2ICs3OTAsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5zdWJxX3JyKHNyYywgZGVzdCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3ViNjQoUmVnaXN0
ZXJJRCBhLCBSZWdpc3RlcklEIGIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChiICE9IGRlc3QpOworICAgICAgICBtb3ZlKGEsIGRlc3QpOworICAgICAgICBzdWI2NChi
LCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAy
Nzc1NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzc3LDYgKzM3NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChjb2RlQmxvY2spOwogCiAgICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjYWxs
ZWVTYXZlcyA9IGNvZGVCbG9jay0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzRm9yKGNhbGxlZVNhdmVzKTsKKyAgICB9CisKKyAgICB2b2lkIGVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXNGb3IoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QqIGNhbGxl
ZVNhdmVzKQorICAgIHsKICAgICAgICAgUmVnaXN0ZXJTZXQgZG9udFJlc3RvcmVSZWdpc3RlcnMg
PSBSZWdpc3RlclNldChSZWdpc3RlclNldDo6c3RhY2tSZWdpc3RlcnMoKSwgUmVnaXN0ZXJTZXQ6
OmFsbEZQUnMoKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnQgPSBjYWxsZWVTYXZl
cy0+c2l6ZSgpOwogICAgICAgICAKQEAgLTQ1Nyw3ICs0NjIsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIoRW50
cnlGcmFtZSomKTsKIAotICAgIHZvaWQgY29weUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3Rl
clRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKEVudHJ5RnJhbWUqJiB0b3BFbnRyeUZyYW1l
LCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMgPSB7IFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSB9KQorICAgIHZvaWQgY29weUxMSW50QmFzZWxpbmVD
YWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cihFbnRyeUZyYW1lKiYgdG9wRW50cnlGcmFtZSwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzID0geyBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCkgfSkK
ICAgICB7CiAjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19SRUdJU1RFUlMgPiAwCiAgICAgICAg
IEdQUlJlZyB0ZW1wMSA9IHVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigwKTsKQEAgLTQ2NSwxNCAr
NDcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgRlBSUmVnIGZwVGVtcCA9IHVzZWRSZWdpc3RlcnMu
Z2V0RnJlZUZQUigpOwogICAgICAgICBBU1NFUlQodGVtcDIgIT0gSW52YWxpZEdQUlJlZyk7CiAK
LSAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKLQogICAgICAgICAvLyBDb3B5IHNhdmVkIGNh
bGxlZVNhdmVzIG9uIHN0YWNrIG9yIHVuc2F2ZWQgY2FsbGVlU2F2ZXMgaW4gcmVnaXN0ZXIgdG8g
dm0gY2FsbGVlU2F2ZSBidWZmZXIKICAgICAgICAgbG9hZFB0cigmdG9wRW50cnlGcmFtZSwgdGVt
cDEpOwogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKEVudHJ5RnJhbWU6OmNhbGxlZVNhdmVS
ZWdpc3RlcnNCdWZmZXJPZmZzZXQoKSksIHRlbXAxKTsKIAogICAgICAgICBSZWdpc3RlckF0T2Zm
c2V0TGlzdCogYWxsQ2FsbGVlU2F2ZXMgPSBSZWdpc3RlclNldDo6dm1DYWxsZWVTYXZlUmVnaXN0
ZXJPZmZzZXRzKCk7Ci0gICAgICAgIGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBjdXJyZW50
Q2FsbGVlU2F2ZXMgPSBjb2RlQmxvY2soKS0+Y2FsbGVlU2F2ZVJlZ2lzdGVycygpOworICAgICAg
ICBjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCogY3VycmVudENhbGxlZVNhdmVzID0gJlJlZ2lz
dGVyQXRPZmZzZXRMaXN0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpOwogICAg
ICAgICBSZWdpc3RlclNldCBkb250Q29weVJlZ2lzdGVycyA9IFJlZ2lzdGVyU2V0OjpzdGFja1Jl
Z2lzdGVycygpOwogICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gYWxsQ2FsbGVlU2F2
ZXMtPnNpemUoKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
Mjc3NTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSklUOjplbWl0RW50ZXJPcHRpbWl6YXRpb25DaGVj
aygpCiAgICAgc2tpcE9wdGltaXplLmFwcGVuZChicmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJ
bW0zMihPcHRpb25zOjpleGVjdXRpb25Db3VudGVySW5jcmVtZW50Rm9yRW50cnkoKSksIEFic29s
dXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+YWRkcmVzc09mSklURXhlY3V0ZUNvdW50ZXIoKSkpKTsK
ICAgICBBU1NFUlQoIW1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKSk7CiAKLSAgICBjb3B5Q2FsbGVl
U2F2ZXNGcm9tRnJhbWVPclJlZ2lzdGVyVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0o
KS50b3BFbnRyeUZyYW1lKTsKKyAgICBjb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRnJvbUZy
YW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlG
cmFtZSk7CiAKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9wdGltaXplLCAmdm0oKSwgbV9i
eXRlY29kZUluZGV4LmFzQml0cygpKTsKICAgICBza2lwT3B0aW1pemUuYXBwZW5kKGJyYW5jaFRl
c3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpKTsKQEAgLTkwNCw2ICs5MDQsMTAgQEAgQ29tcGls
YXRpb25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgcGF0Y2hCdWZmZXIubGluayhtX2V4Y2Vw
dGlvbkNoZWNrc1dpdGhDYWxsRnJhbWVSb2xsYmFjaywgQ29kZUxvY2F0aW9uTGFiZWwodm0oKS5n
ZXRDVElTdHViKGhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvciku
cmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKSk7CiAjZW5kaWYKIAorICAgIGZvciAoYXV0byYgcmVj
b3JkIDogbV9uZWFySnVtcHMpIHsKKyAgICAgICAgaWYgKHJlY29yZC50YXJnZXQpCisgICAgICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKHJlY29yZC5mcm9tLCByZWNvcmQudGFyZ2V0KTsKKyAgICB9
CiAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBtX25lYXJDYWxscykgewogICAgICAgICBpZiAocmVj
b3JkLmNhbGxlZSkKICAgICAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsocmVjb3JkLmZyb20sIHJl
Y29yZC5jYWxsZWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzc1
NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NCw2ICs5NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB1c2luZyBGYXJDYWxsUmVjb3Jk
ID0gQ2FsbFJlY29yZDxPcGVyYXRpb25QdHJUYWc+OwogICAgIHVzaW5nIE5lYXJDYWxsUmVjb3Jk
ID0gQ2FsbFJlY29yZDxKU0ludGVybmFsUHRyVGFnPjsKIAorICAgIHN0cnVjdCBOZWFySnVtcFJl
Y29yZCB7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZyb207CisgICAgICAgIENvZGVM
b2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQ7CisKKyAgICAgICAgTmVhckp1bXBS
ZWNvcmQoKSA9IGRlZmF1bHQ7CisgICAgICAgIE5lYXJKdW1wUmVjb3JkKE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGZyb20sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPiB0YXJnZXQpCisg
ICAgICAgICAgICA6IGZyb20oZnJvbSkKKyAgICAgICAgICAgICwgdGFyZ2V0KHRhcmdldCkKKyAg
ICAgICAgeyB9CisgICAgfTsKKwogICAgIHN0cnVjdCBKdW1wVGFibGUgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBmcm9tOwogICAgICAgICB1bnNpZ25lZCB0b0J5dGVjb2RlT2Zmc2V0
OwpAQCAtNzg4LDYgKzc5OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX3By
ZXBhcmVDYWxsR2VuZXJhdG9yKFZNJik7CiAgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9wcmVwYXJlQ2Fs
bEdlbmVyYXRvcihWTSYpOwogICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBzbG93X29wX3B1dF90b19zY29wZUdlbmVyYXRvcihWTSYpOworCisgICAg
ICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX2NoZWNr
X3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYp
OworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBv
cF9yZXRfaGFuZGxlckdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKFZNJik7
CiAjZW5kaWYKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCkBAIC05MjYsOCArOTQyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKIAotICAgICAgICBDYWxsIGVtaXRO
YWtlZE5lYXJDYWxsKENvZGVQdHI8Tm9QdHJUYWc+IGZ1bmN0aW9uID0gQ29kZVB0cjxOb1B0clRh
Zz4oKSk7Ci0gICAgICAgIENhbGwgZW1pdE5ha2VkTmVhclRhaWxDYWxsKENvZGVQdHI8Tm9QdHJU
YWc+IGZ1bmN0aW9uID0gQ29kZVB0cjxOb1B0clRhZz4oKSk7CisgICAgICAgIENhbGwgZW1pdE5h
a2VkTmVhckNhbGwoQ29kZVB0cjxOb1B0clRhZz4gZnVuY3Rpb24gPSB7IH0pOworICAgICAgICBD
YWxsIGVtaXROYWtlZE5lYXJUYWlsQ2FsbChDb2RlUHRyPE5vUHRyVGFnPiBmdW5jdGlvbiA9IHsg
fSk7CisgICAgICAgIEp1bXAgZW1pdE5ha2VkTmVhckp1bXAoQ29kZVB0cjxKSVRUaHVua1B0clRh
Zz4gZnVuY3Rpb24gPSB7IH0pOwogCiAgICAgICAgIC8vIExvYWRzIHRoZSBjaGFyYWN0ZXIgdmFs
dWUgb2YgYSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZyBpbnRvIGRzdC4KICAgICAgICAgdm9pZCBl
bWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1
bXBMaXN0JiBmYWlsdXJlcyk7CkBAIC05NzksNiArOTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgVmVjdG9yPEZhckNhbGxSZWNvcmQ+IG1fZmFyQ2FsbHM7CiAgICAgICAgIFZlY3Rv
cjxOZWFyQ2FsbFJlY29yZD4gbV9uZWFyQ2FsbHM7CisgICAgICAgIFZlY3RvcjxOZWFySnVtcFJl
Y29yZD4gbV9uZWFySnVtcHM7CiAgICAgICAgIFZlY3RvcjxMYWJlbD4gbV9sYWJlbHM7CiAgICAg
ICAgIEhhc2hNYXA8Qnl0ZWNvZGVJbmRleCwgTGFiZWw+IG1fY2hlY2twb2ludExhYmVsczsKICAg
ICAgICAgVmVjdG9yPEpJVEdldEJ5SWRHZW5lcmF0b3I+IG1fZ2V0QnlJZHM7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjc3NTUyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw2ICsxMDUsMTQgQEAgQUxXQVlTX0lOTElORSBKSVQ6OkNhbGwgSklUOjplbWl0TmFrZWROZQog
ICAgIHJldHVybiBuYWtlZENhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6
ZW1pdE5ha2VkTmVhckp1bXAoQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gdGFyZ2V0KQoreworICAg
IEFTU0VSVChtX2J5dGVjb2RlSW5kZXgpOyAvLyBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBj
YWxsZWQgZHVyaW5nIGhvdC9jb2xkIHBhdGggZ2VuZXJhdGlvbiwgc28gdGhhdCBtX2J5dGVjb2Rl
SW5kZXggaXMgc2V0LgorICAgIEp1bXAgbmFrZWRKdW1wID0ganVtcCgpOworICAgIG1fbmVhckp1
bXBzLmFwcGVuZChOZWFySnVtcFJlY29yZChuYWtlZEp1bXAsIENvZGVMb2NhdGlvbkxhYmVsKHRh
cmdldCkpKTsKKyAgICByZXR1cm4gbmFrZWRKdW1wOworfQorCiBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4Lm9mZnNldCgpKS5iaXRzKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDI3NzU1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDExICszMiwxMyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpJVFRodW5rcy5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgiCisjaW5jbHVkZSAiVGh1bmtHZW5l
cmF0b3JzLmgiCiAjaW5jbHVkZSAiVHlwZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVHlwZVByb2Zp
bGVyTG9nLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0zNTgsMTEgKzM2MCwz
MCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXQoY29uc3QgSW5zdHJ1Y3Rpb24qCiAgICAgYXV0byBi
eXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BSZXQ+KCk7CiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZXR1cm5WYWx1ZUdQUik7CiAKKyNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQo
KTsKICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgZW1pdEZ1bmN0aW9uRXBpbG9n
dWUoKTsKICAgICByZXQoKTsKKyNlbHNlCisgICAgZW1pdE5ha2VkTmVhckp1bXAodm0oKS5nZXRD
VElTdHViKG9wX3JldF9oYW5kbGVyR2VuZXJhdG9yKS5jb2RlKCkpOworI2VuZGlmCit9CisKKyNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpvcF9yZXRfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCit7CisgICAgSklU
IGppdCh2bSk7CisKKyAgICBqaXQuY2hlY2tTdGFja1BvaW50ZXJBbGlnbm1lbnQoKTsKKyAgICBq
aXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmxsaW50
QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOworICAgIGppdC5lbWl0RnVuY3Rpb25FcGls
b2d1ZSgpOworICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0
LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICByZXR1
cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNlbGluZTog
b3BfcmV0X2hhbmRsZXIiKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykK
IAogdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiB7CkBAIC01NzksMTIgKzYwMCw1MyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF90aHJvdyhjb25zdCBJbnN0cnVjdGlvCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvbi0+YXM8T3BUaHJvdz4oKTsKICAgICBBU1NFUlQocmVnVDAgPT0gcmV0dXJuVmFs
dWVHUFIpOworCisjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogICAgIGNvcHlDYWxsZWVT
YXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCkudG9wRW50cnlGcmFtZSk7CiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3ZhbHVlLCByZWdUMCk7CiAgICAg
Y2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVGhyb3csIFRydXN0ZWRJbW1Q
dHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGp1bXBUb0V4Y2Vw
dGlvbkhhbmRsZXIodm0oKSk7CisjZWxzZQorICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVP
ZmZzZXRHUFIgPSBhcmd1bWVudEdQUjI7CisgICAgY29uc3RleHByIEdQUlJlZyB0aHJvd25WYWx1
ZUdQUiA9IGFyZ3VtZW50R1BSMTsKKworICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9i
eXRlY29kZUluZGV4Lm9mZnNldCgpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zm
c2V0KSwgYnl0ZWNvZGVPZmZzZXRHUFIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYnl0
ZWNvZGUubV92YWx1ZSwgdGhyb3duVmFsdWVHUFIpOworICAgIGVtaXROYWtlZE5lYXJKdW1wKHZt
KCkuZ2V0Q1RJU3R1YihvcF90aHJvd19oYW5kbGVyR2VuZXJhdG9yKS5jb2RlKCkpOworI2VuZGlm
IC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktTKQogfQogCisjaWYgRU5BQkxFKEVYVFJBX0NUSV9U
SFVOS1MpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6b3BfdGhy
b3dfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCit7CisgICAgSklUIGppdCh2bSk7CisKKyAgICBj
b25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1lbnRHUFIyOworICAgIGNv
bnN0ZXhwciBHUFJSZWcgdGhyb3duVmFsdWVHUFIgPSBhcmd1bWVudEdQUjE7CisgICAgCisgICAg
aml0LnN0b3JlMzIoYnl0ZWNvZGVPZmZzZXRHUFIsIHRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcykpOworCisjaWYgTlVNQkVSX09GX0NBTExFRV9TQVZFU19S
RUdJU1RFUlMgPiAwCisgICAgaml0LmxvYWRQdHIoJnZtLnRvcEVudHJ5RnJhbWUsIGFyZ3VtZW50
R1BSMCk7CisgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVm
ZmVySW1wbChhcmd1bWVudEdQUjApOworI2VuZGlmCisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGds
b2JhbE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGdsb2JhbE9iamVjdEdQUik7CisgICAgaml0Lmxv
YWRQdHIoQWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7CisKKyAgICBqaXQuc2V0dXBBcmd1bWVudHM8ZGVj
bHR5cGUob3BlcmF0aW9uVGhyb3cpPihnbG9iYWxPYmplY3RHUFIsIHRocm93blZhbHVlR1BSKTsK
KyAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOworICAgIENhbGwgb3BlcmF0aW9uID0g
aml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxl
cih2bSk7CisKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lE
LCBMaW5rQnVmZmVyOjpQcm9maWxlOjpUaHVuayk7CisgICAgcGF0Y2hCdWZmZXIubGluayhvcGVy
YXRpb24sIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uVGhyb3cpKTsKKyAg
ICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJCYXNl
bGluZTogb3BfdGhyb3dfaGFuZGxlciIpOworfQorI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KIHZvaWQgSklUOjpjb21waWxlT3BTdHJp
Y3RFcShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxlT3BTdHJp
Y3RFcVR5cGUgdHlwZSkKIHsKQEAgLTEwMzYsMTMgKzEwOTgsMTE0IEBAIHZvaWQgSklUOjplbWl0
X29wX2VudGVyKGNvbnN0IEluc3RydWN0aW8KICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxl
IHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmpl
Y3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCiAgICAgc2l6ZV90IGNvdW50
ID0gbV9jb2RlQmxvY2stPm51bVZhcnMoKTsKKyNpZiAhRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
CiAgICAgZm9yIChzaXplX3QgaiA9IENvZGVCbG9jazo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVT
cGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOyBqIDwgY291bnQ7ICsraikKICAgICAgICAgZW1pdElu
aXRSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChqKSk7CiAKICAgICBlbWl0V3JpdGVC
YXJyaWVyKG1fY29kZUJsb2NrKTsKIAogICAgIGVtaXRFbnRlck9wdGltaXphdGlvbkNoZWNrKCk7
CisjZWxzZQorICAgIEFTU0VSVChtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCkgPT0gMCk7CisgICAg
Y29uc3RleHByIEdQUlJlZyBsb2NhbHNUb0luaXRHUFIgPSBhcmd1bWVudEdQUjA7CisgICAgY29u
c3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50R1BSNDsKKworICAgIHVu
c2lnbmVkIGxvY2Fsc1RvSW5pdCA9IGNvdW50IC0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9j
YWxzVG9Jbml0IDwgY291bnQpOworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGxvY2Fsc1RvSW5pdCAq
IHNpemVvZihSZWdpc3RlcikpLCBsb2NhbHNUb0luaXRHUFIpOworICAgIG1vdmUoVHJ1c3RlZElt
bTMyKGNhbkJlT3B0aW1pemVkKCkpLCBjYW5CZU9wdGltaXplZEdQUik7CisgICAgZW1pdE5ha2Vk
TmVhckNhbGwodm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFn
Z2VkQ29kZTxOb1B0clRhZz4oKSk7CisjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVOS1Mp
Cit9CisKKyNpZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSkK
K3sKKyAgICBKSVQgaml0KHZtKTsKKworI2lmIENQVShYODZfNjQpCisgICAgaml0LnB1c2goWDg2
UmVnaXN0ZXJzOjplYnApOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIGppdC50YWdSZXR1cm5BZGRy
ZXNzKCk7CisgICAgaml0LnB1c2hQYWlyKGZyYW1lUG9pbnRlclJlZ2lzdGVyLCBsaW5rUmVnaXN0
ZXIpOworI2VuZGlmCisgICAgLy8gb3BfZW50ZXIgaXMgYWx3YXlzIGF0IGJ5dGVjb2RlT2Zmc2V0
IDAuCisgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCB0YWdGb3IoQ2FsbEZyYW1lU2xv
dDo6YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpKTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcg
bG9jYWxzVG9Jbml0R1BSID0gYXJndW1lbnRHUFIwOworICAgIGNvbnN0ZXhwciBHUFJSZWcgaXRl
cmF0b3JHUFIgPSBhcmd1bWVudEdQUjE7CisgICAgY29uc3RleHByIEdQUlJlZyBlbmRHUFIgPSBh
cmd1bWVudEdQUjI7CisgICAgY29uc3RleHByIEdQUlJlZyB1bmRlZmluZWRHUFIgPSBhcmd1bWVu
dEdQUjM7CisgICAgY29uc3RleHByIEdQUlJlZyBjYW5CZU9wdGltaXplZEdQUiA9IGFyZ3VtZW50
R1BSNDsKKworICAgIHNpemVfdCBzdGFydExvY2FsID0gQ29kZUJsb2NrOjpsbGludEJhc2VsaW5l
Q2FsbGVlU2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKCk7CisgICAgaW50IHN0YXJ0T2Zmc2V0
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoc3RhcnRMb2NhbCkub2Zmc2V0KCk7CisgICAgaml0
Lm1vdmUoVHJ1c3RlZEltbTY0KHN0YXJ0T2Zmc2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSksIGl0ZXJh
dG9yR1BSKTsKKyAgICBqaXQuc3ViNjQoaXRlcmF0b3JHUFIsIGxvY2Fsc1RvSW5pdEdQUiwgZW5k
R1BSKTsKKworICAgIGppdC5tb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSkpLCB1bmRlZmluZWRHUFIpOworICAgIGF1dG8gaW5pdExvb3AgPSBqaXQubGFiZWwo
KTsKKyAgICBKdW1wIGluaXREb25lID0gaml0LmJyYW5jaDMyKExlc3NUaGFuT3JFcXVhbCwgaXRl
cmF0b3JHUFIsIGVuZEdQUik7CisgICAgeworICAgICAgICBqaXQuc3RvcmU2NCh1bmRlZmluZWRH
UFIsIEJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgaXRlcmF0b3JHUFIsIFRp
bWVzT25lKSk7CisgICAgICAgIGppdC5zdWI2NChUcnVzdGVkSW1tMzIoc2l6ZW9mKFJlZ2lzdGVy
KSksIGl0ZXJhdG9yR1BSKTsKKyAgICAgICAgaml0Lmp1bXAoaW5pdExvb3ApOworICAgIH0KKyAg
ICBpbml0RG9uZS5saW5rKCZqaXQpOworCisgICAgLy8gZW1pdFdyaXRlQmFycmllcihtX2NvZGVC
bG9jaykuCisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spLCBhcmd1bWVudEdQUjEpOworICAgIEp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9
IGppdC5iYXJyaWVyQnJhbmNoKHZtLCBhcmd1bWVudEdQUjEsIGFyZ3VtZW50R1BSMik7CisKKyAg
ICBqaXQubW92ZShjYW5CZU9wdGltaXplZEdQUiwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIp
OyAvLyBzYXZlLgorICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25Xcml0
ZUJhcnJpZXJTbG93UGF0aCk+KCZ2bSwgYXJndW1lbnRHUFIxKTsKKyAgICBqaXQucHJlcGFyZUNh
bGxPcGVyYXRpb24odm0pOworICAgIENhbGwgb3BlcmF0aW9uV3JpdGVCYXJyaWVyQ2FsbCA9IGpp
dC5jYWxsKE9wZXJhdGlvblB0clRhZyk7CisKKyAgICBqaXQubW92ZShHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlciwgY2FuQmVPcHRpbWl6ZWRHUFIpOyAvLyByZXN0b3JlLgorICAgIGppdC5tb3Zl
KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3Rlcik7CisgICAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbi5saW5rKCZqaXQpOworCisjaWYg
RU5BQkxFKERGR19KSVQpCisgICAgQ2FsbCBvcGVyYXRpb25PcHRpbWl6ZUNhbGw7CisgICAgaWYg
KE9wdGlvbnM6OnVzZURGR0pJVCgpKSB7CisgICAgICAgIC8vIGVtaXRFbnRlck9wdGltaXphdGlv
bkNoZWNrKCkuCisgICAgICAgIEp1bXBMaXN0IHNraXBPcHRpbWl6ZTsKKworICAgICAgICBza2lw
T3B0aW1pemUuYXBwZW5kKGppdC5icmFuY2hUZXN0MzIoWmVybywgY2FuQmVPcHRpbWl6ZWRHUFIp
KTsKKworICAgICAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayksIGFyZ3VtZW50R1BSMSk7CisgICAgICAgIHNraXBPcHRpbWl6ZS5hcHBlbmQoaml0LmJy
YW5jaEFkZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJJ
bmNyZW1lbnRGb3JFbnRyeSgpKSwgQWRkcmVzcyhhcmd1bWVudEdQUjEsIENvZGVCbG9jazo6b2Zm
c2V0T2ZKSVRFeGVjdXRlQ291bnRlcigpKSkpOworCisgICAgICAgIGppdC5jb3B5TExJbnRCYXNl
bGluZUNhbGxlZVNhdmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVz
QnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOworCisgICAgICAgIGppdC5zZXR1cEFyZ3VtZW50czxk
ZWNsdHlwZShvcGVyYXRpb25PcHRpbWl6ZSk+KCZ2bSwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICAg
ICAgaml0LnByZXBhcmVDYWxsT3BlcmF0aW9uKHZtKTsKKyAgICAgICAgb3BlcmF0aW9uT3B0aW1p
emVDYWxsID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKworICAgICAgICBza2lwT3B0aW1p
emUuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKSk7CisgICAg
ICAgIGppdC5mYXJKdW1wKHJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
cik7CisKKyAgICAgICAgc2tpcE9wdGltaXplLmxpbmsoJmppdCk7CisgICAgfQorI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCisjaWYgQ1BVKFg4Nl82NCkKKyAgICBqaXQucG9wKFg4NlJlZ2lz
dGVyczo6ZWJwKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50
ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbmRpZgorICAgIGppdC5yZXQoKTsKKworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6
OlByb2ZpbGU6OlRodW5rKTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbldyaXRlQmFy
cmllckNhbGwsIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uV3JpdGVCYXJy
aWVyU2xvd1BhdGgpKTsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBpZiAoT3B0aW9uczo6dXNl
REZHSklUKCkpCisgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsob3BlcmF0aW9uT3B0aW1pemVDYWxs
LCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvbk9wdGltaXplKSk7CisjZW5k
aWYKKyAgICByZXR1cm4gRklOQUxJWkVfQ09ERShwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcs
ICJCYXNlbGluZTogb3BfZW50ZXJfaGFuZGxlciIpOwogfQorI2VuZGlmIC8vIEVOQUJMRShFWFRS
QV9DVElfVEhVTktTKQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfc2NvcGUoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKQEAgLTEyMDgsNyArMTM3MSw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9sb29wX2hpbnQoY29uc3QgSW4KICAgICBpZiAoY2FuQmVPcHRpbWl6
ZWQoKSkgewogICAgICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCi0gICAgICAgIGNvcHlD
YWxsZWVTYXZlc0Zyb21GcmFtZU9yUmVnaXN0ZXJUb0VudHJ5RnJhbWVDYWxsZWVTYXZlc0J1ZmZl
cih2bSgpLnRvcEVudHJ5RnJhbWUpOworICAgICAgICBjb3B5TExJbnRCYXNlbGluZUNhbGxlZVNh
dmVzRnJvbUZyYW1lT3JSZWdpc3RlclRvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtKCku
dG9wRW50cnlGcmFtZSk7CiAKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PcHRpbWl6
ZSwgJnZtKCksIG1fYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSk7CiAgICAgICAgIEp1bXAgbm9PcHRp
bWl6ZWRFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOwpAQCAtMTI1
MSw4ICsxNDE0LDU2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9jaGVja190cmFwcyhjb25zdCAK
IHsKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCisjaWYgIUVOQUJMRShFWFRSQV9DVElf
VEhVTktTKQogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFuZGxlVHJhcHMsIFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSk7CisjZWxzZQorICAgIGNvbnN0ZXhw
ciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjM7CisgICAgdWludDMyX3Qg
Ynl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7CisgICAgbW92ZShUcnVz
dGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIob3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVy
YXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxF
KEVYVFJBX0NUSV9USFVOS1MpCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCit7CisgICAgSklU
IGppdCh2bSk7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIGppdC5wdXNoKFg4NlJlZ2lzdGVyczo6
ZWJwKTsKKyNlbGlmIENQVShBUk02NCkKKyAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOworICAg
IGppdC5wdXNoUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVyKTsKKyNlbmRp
ZgorCisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50R1BS
MzsKKyAgICBqaXQuc3RvcmUzMihieXRlY29kZU9mZnNldEdQUiwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSk7CisKKyAgICBjb25zdGV4cHIgR1BSUmVn
IGNvZGVCbG9ja0dQUiA9IGFyZ3VtZW50R1BSMzsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IGFyZ3VtZW50R1BSMDsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIGNvZGVCbG9ja0dQUik7CisgICAgaml0LmxvYWRQdHIo
QWRkcmVzcyhjb2RlQmxvY2tHUFIsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSks
IGdsb2JhbE9iamVjdEdQUik7CisgICAgCisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBl
KG9wZXJhdGlvbkhhbmRsZVRyYXBzKT4oZ2xvYmFsT2JqZWN0R1BSKTsKKyAgICBqaXQucHJlcGFy
ZUNhbGxPcGVyYXRpb24odm0pOworICAgIENDYWxsSGVscGVyczo6Q2FsbCBvcGVyYXRpb24gPSBq
aXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOworICAgIENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRp
b25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxlRXhjZXB0aW9uQ2hlY2sodm0pOworCisjaWYg
Q1BVKFg4Nl82NCkKKyAgICBqaXQucG9wKFg4NlJlZ2lzdGVyczo6ZWJwKTsKKyNlbGlmIENQVShB
Uk02NCkKKyAgICBqaXQucG9wUGFpcihmcmFtZVBvaW50ZXJSZWdpc3RlciwgbGlua1JlZ2lzdGVy
KTsKKyNlbmRpZgorICAgIGppdC5yZXQoKTsKKworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
aml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZmZXI6OlByb2ZpbGU6OlRodW5rKTsKKyAgICBw
YXRjaEJ1ZmZlci5saW5rKG9wZXJhdGlvbiwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihv
cGVyYXRpb25IYW5kbGVUcmFwcykpOworICAgIGF1dG8gaGFuZGxlciA9IHZtLmppdFN0dWJzLT5l
eGlzdGluZ0NUSVN0dWIocG9wVGh1bmtTdGFja1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdl
bmVyYXRvciwgTm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICBwYXRjaEJ1ZmZlci5saW5rKGV4Y2Vw
dGlvbkNoZWNrLCBDb2RlTG9jYXRpb25MYWJlbChoYW5kbGVyLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSkpOworICAgIHJldHVybiBGSU5BTElaRV9DT0RFKHBhdGNoQnVmZmVyLCBKSVRUaHVua1B0
clRhZywgIkJhc2VsaW5lOiBvcF9jaGVja190cmFwc19oYW5kbGVyIik7CiB9CisjZW5kaWYgLy8g
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAKIHZvaWQgSklUOjplbWl0X29wX25ld19yZWdleHAo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAy
Nzc1NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg5Myw3ICsxODkzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSQogICAgIGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25HZXRGcm9tU2NvcGUpPihnbG9iYWxPYmplY3RHUFIsIGluc3RydWN0aW9uR1BSKTsK
ICAgICBqaXQucHJlcGFyZUNhbGxPcGVyYXRpb24odm0pOwogICAgIENDYWxsSGVscGVyczo6Q2Fs
bCBvcGVyYXRpb24gPSBqaXQuY2FsbChPcGVyYXRpb25QdHJUYWcpOwotICAgIENDYWxsSGVscGVy
czo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0RXhjZXB0aW9uQ2hlY2sodm0pOworICAg
IENDYWxsSGVscGVyczo6SnVtcCBleGNlcHRpb25DaGVjayA9IGppdC5lbWl0Tm9uUGF0Y2hhYmxl
RXhjZXB0aW9uQ2hlY2sodm0pOwogCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBqaXQucG9wKFg4NlJl
Z2lzdGVyczo6ZWJwKTsKQEAgLTIxMTQsNyArMjExNCw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSkkKIAogICAgIGppdC5wcmVwYXJlQ2FsbE9wZXJhdGlvbih2bSk7
CiAgICAgQ0NhbGxIZWxwZXJzOjpDYWxsIG9wZXJhdGlvbiA9IGppdC5jYWxsKE9wZXJhdGlvblB0
clRhZyk7Ci0gICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNrID0gaml0LmVtaXRF
eGNlcHRpb25DaGVjayh2bSk7CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGV4Y2VwdGlvbkNoZWNr
ID0gaml0LmVtaXROb25QYXRjaGFibGVFeGNlcHRpb25DaGVjayh2bSk7CiAKICNpZiBDUFUoWDg2
XzY0KQogICAgIGppdC5wb3AoWDg2UmVnaXN0ZXJzOjplYnApOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAkocmV2aXNpb24gMjc3NTUyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNiAr
MzY0LDExIEBAIHZvaWQgSklUVGh1bmtzOjpwcmVpbml0aWFsaXplRXh0cmFDVElUaHUKICAgICBj
dGlTdHViKHZtLCBKSVQ6OnNsb3dfb3BfcHV0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvcik7
CiAgICAgY3RpU3R1Yih2bSwgSklUOjpzbG93X29wX3B1dF9wcml2YXRlX25hbWVfcHJlcGFyZUNh
bGxHZW5lcmF0b3IpOwogICAgIGN0aVN0dWIodm0sIEpJVDo6c2xvd19vcF9wdXRfdG9fc2NvcGVH
ZW5lcmF0b3IpOworCisgICAgY3RpU3R1Yih2bSwgSklUOjpvcF9jaGVja190cmFwc19oYW5kbGVy
R2VuZXJhdG9yKTsKKyAgICBjdGlTdHViKHZtLCBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0
b3IpOworICAgIGN0aVN0dWIodm0sIEpJVDo6b3BfcmV0X2hhbmRsZXJHZW5lcmF0b3IpOworICAg
IGN0aVN0dWIodm0sIEpJVDo6b3BfdGhyb3dfaGFuZGxlckdlbmVyYXRvcik7CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1Nsb3dQYXRoQ2FsbC5jcHAJKHJldmlzaW9uIDI3NzU1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvU2xvd1BhdGhDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsOCAr
NzMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJCiAgICAgaml0
Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CiAKICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC5jYWxsKE9wZXJhdGlvblB0clRh
Zyk7Ci0KLSAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sgPSBqaXQuZW1pdEV4
Y2VwdGlvbkNoZWNrKHZtKTsKKyAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgZXhjZXB0aW9uQ2hlY2sg
PSBqaXQuZW1pdE5vblBhdGNoYWJsZUV4Y2VwdGlvbkNoZWNrKHZtKTsKIAogI2lmIENQVShYODZf
NjQpCiAgICAgaml0LnBvcChYODZSZWdpc3RlcnM6OmVicCk7Cg==
</data>
<flag name="review"
          id="449778"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>