<?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>211853</bug_id>
          
          <creation_ts>2020-05-13 11:20:08 -0700</creation_ts>
          <short_desc>Making 32-bits JIT build without Unified Build system</short_desc>
          <delta_ts>2020-05-13 13:38:18 -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="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>aperez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</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>1652297</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-13 11:20:08 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652300</commentid>
    <comment_count>1</comment_count>
      <attachid>399282</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-13 11:28:47 -0700</bug_when>
    <thetext>Created attachment 399282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652329</commentid>
    <comment_count>2</comment_count>
      <attachid>399282</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-05-13 12:15:45 -0700</bug_when>
    <thetext>Comment on attachment 399282
Patch

LGTM; please make sure the EWS builders stay green before landing 🙂️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652332</commentid>
    <comment_count>3</comment_count>
      <attachid>399282</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-13 12:19:51 -0700</bug_when>
    <thetext>Comment on attachment 399282
Patch

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

&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:1230
&gt; +template void JIT::emit_op_put_by_val&lt;OpPutByVal&gt;(const Instruction*);
&gt; +

Why is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652357</commentid>
    <comment_count>4</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-13 13:26:40 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Comment on attachment 399282 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399282&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:1230
&gt; &gt; +template void JIT::emit_op_put_by_val&lt;OpPutByVal&gt;(const Instruction*);
&gt; &gt; +
&gt; 
&gt; Why is this needed?

It is necessary to generate `JIT::emit_op_put_by_val&lt;OpPutByVal&gt;` and allow it be called by `JIT.cpp`. IIUC, without it, `JIT::emit_op_put_by_val&lt;OpPutByVal&gt;` will never be generated and we will have an issue during linking phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652360</commentid>
    <comment_count>5</comment_count>
      <attachid>399282</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-13 13:27:06 -0700</bug_when>
    <thetext>Comment on attachment 399282
Patch

Thank you very much for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652366</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-13 13:37:39 -0700</bug_when>
    <thetext>Committed r261642: &lt;https://trac.webkit.org/changeset/261642&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399282.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652367</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-13 13:38:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/63197853&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399282</attachid>
            <date>2020-05-13 11:28:47 -0700</date>
            <delta_ts>2020-05-13 13:37:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211853-20200513152845.patch</filename>
            <type>text/plain</type>
            <size>29544</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDM3Mzk1YTBkMzE4ZTY5N2ExMjBiMzI2ZjU1MWRmOTYwNjBkZmE2Li5mOWIyZGZhMjcwMWM0ZWEz
NWNmOGNjYjY4MDUyOTcxMzE1MGFiZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0wNS0xMyAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgTWFraW5nIDMyLWJpdHMgSklUIGJ1aWxkIHdpdGhvdXQgVW5pZmllZCBCdWls
ZCBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMTg1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggaXMgbW92aW5nIHNvbWUgdGVtcGxhdGVzIHRvIGFsbG93IG5vbi11bmlmaWVk
IGJ1aWxkcyBvbgorICAgICAgICAzMi1iaXRzIEpJVCBjb25maWd1cmF0aW9ucy4KKyAgICAgICAg
VGhvc2UgdGVtcGxhdGVzIHdlcmUgZnJvbSBKSVRBcml0aG1ldGljMzJfNjQgYW5kIEpJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuCisKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2Nv
bXBhcmVVbnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNs
b3cpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcCk6CisgICAgICAgICog
aml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21w
YXJlQW5kSnVtcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlVW5z
aWduZWRBbmRKdW1wKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBhcmVV
bnNpZ25lZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVt
cFNsb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcCk6
IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgICog
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlW
YWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOiBEZWxldGVk
LgorCiAyMDIwLTA1LTEzICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbSlNDXSBTdXBwb3J0IGRlbGV0ZSBieSB2YWwvaWQgSUMgb24gMzItYml0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggNjdiMDBiMGEwMDI1
NjBiYjMyMDU5MzU1MGMwMGY2MzQ3NDk0MzlkYS4uYjhlNGE4ZTg5MWFiNzcxOWMwNjA1NzlmMjky
NTAzMTg2YjkxMzRhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwCkBAIC00NjksNiArNDY5LDI1OCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbW9kKGNv
bnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpCiAKIC8q
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFTkQ6IE9QX01PRCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKKwordGVtcGxh
dGUgPHR5cGVuYW1lIE9wPgordm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoY29uc3QgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKK3sK
KyAgICBKdW1wTGlzdCBub3RJbnQzMk9wMTsKKyAgICBKdW1wTGlzdCBub3RJbnQzMk9wMjsKKwor
ICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOworICAgIFZpcnR1YWxSZWdpc3RlciBvcDIgPSBi
eXRlY29kZS5tX3JoczsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0
aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsKKworICAgIC8vIENoYXJhY3RlciBsZXNzLgor
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudENoYXIob3AxKSkgeworICAgICAgICBlbWl0TG9hZChv
cDIsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90Q2VsbChy
ZWdUMSkpOworICAgICAgICBKdW1wTGlzdCBmYWlsdXJlczsKKyAgICAgICAgZW1pdExvYWRDaGFy
YWN0ZXJTdHJpbmcocmVnVDAsIHJlZ1QwLCBmYWlsdXJlcyk7CisgICAgICAgIGFkZFNsb3dDYXNl
KGZhaWx1cmVzKTsKKyAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb21tdXRlKGNvbmRpdGlvbiks
IHJlZ1QwLCBJbW0zMihhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQob3AxKSktPnRyeUdldFZh
bHVlKClbMF0pKSwgdGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRDaGFyKG9wMikpIHsKKyAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwg
cmVnVDApOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKKyAg
ICAgICAgSnVtcExpc3QgZmFpbHVyZXM7CisgICAgICAgIGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5n
KHJlZ1QwLCByZWdUMCwgZmFpbHVyZXMpOworICAgICAgICBhZGRTbG93Q2FzZShmYWlsdXJlcyk7
CisgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9uLCByZWdUMCwgSW1tMzIoYXNTdHJp
bmcoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikpLT50cnlHZXRWYWx1ZSgpWzBdKSksIHRhcmdldCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9IAorICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChv
cDEpKSB7CisgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDMsIHJlZ1QyKTsKKyAgICAgICAgbm90
SW50MzJPcDIuYXBwZW5kKGJyYW5jaElmTm90SW50MzIocmVnVDMpKTsKKyAgICAgICAgYWRkSnVt
cChicmFuY2gzMihjb21tdXRlKGNvbmRpdGlvbiksIHJlZ1QyLCBJbW0zMihnZXRDb25zdGFudE9w
ZXJhbmQob3AxKS5hc0ludDMyKCkpKSwgdGFyZ2V0KTsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFu
ZENvbnN0YW50SW50KG9wMikpIHsKKyAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDAp
OworICAgICAgICBub3RJbnQzMk9wMS5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihyZWdUMSkpOwor
ICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwgcmVnVDAsIEltbTMyKGdldENvbnN0
YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKSkpLCB0YXJnZXQpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGVtaXRMb2FkMihvcDEsIHJlZ1QxLCByZWdUMCwgb3AyLCByZWdUMywgcmVnVDIpOworICAg
ICAgICBub3RJbnQzMk9wMS5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihyZWdUMSkpOworICAgICAg
ICBub3RJbnQzMk9wMi5hcHBlbmQoYnJhbmNoSWZOb3RJbnQzMihyZWdUMykpOworICAgICAgICBh
ZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwgcmVnVDAsIHJlZ1QyKSwgdGFyZ2V0KTsKKyAgICB9
CisKKyAgICBpZiAoIXN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7CisgICAgICAgIGFkZFNsb3dD
YXNlKG5vdEludDMyT3AxKTsKKyAgICAgICAgYWRkU2xvd0Nhc2Uobm90SW50MzJPcDIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIEp1bXAgZW5kID0ganVtcCgpOworCisgICAgLy8gRG91
YmxlIGxlc3MuCisgICAgZW1pdEJpbmFyeURvdWJsZU9wPE9wPihpbnN0cnVjdGlvbiwgT3BlcmFu
ZFR5cGVzKCksIG5vdEludDMyT3AxLCBub3RJbnQzMk9wMiwgIWlzT3BlcmFuZENvbnN0YW50SW50
KG9wMSksIGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkgfHwgIWlzT3BlcmFuZENvbnN0YW50SW50
KG9wMikpOworICAgIGVuZC5saW5rKHRoaXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+
Cit2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWRBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgUmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgYXV0
byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3AxID0gYnl0ZWNvZGUubV9saHM7CisgICAgVmlydHVhbFJlZ2lzdGVyIG9wMiA9IGJ5dGVjb2Rl
Lm1fcmhzOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5
dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOworCisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9w
MSkpIHsKKyAgICAgICAgZW1pdExvYWQob3AyLCByZWdUMywgcmVnVDIpOworICAgICAgICBhZGRK
dW1wKGJyYW5jaDMyKGNvbW11dGUoY29uZGl0aW9uKSwgcmVnVDIsIEltbTMyKGdldENvbnN0YW50
T3BlcmFuZChvcDEpLmFzSW50MzIoKSkpLCB0YXJnZXQpOworICAgIH0gZWxzZSBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AyKSkgeworICAgICAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCByZWdU
MCk7CisgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9uLCByZWdUMCwgSW1tMzIoZ2V0
Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpKSksIHRhcmdldCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZW1pdExvYWQyKG9wMSwgcmVnVDEsIHJlZ1QwLCBvcDIsIHJlZ1QzLCByZWdUMik7
CisgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9uLCByZWdUMCwgcmVnVDIpLCB0YXJn
ZXQpOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE9wPgordm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZVVuc2lnbmVkKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9u
LT5hczxPcD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOworICAgIFZpcnR1YWxSZWdp
c3RlciBvcDIgPSBieXRlY29kZS5tX3JoczsKKworICAgIGlmIChpc09wZXJhbmRDb25zdGFudElu
dChvcDEpKSB7CisgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDMsIHJlZ1QyKTsKKyAgICAgICAg
Y29tcGFyZTMyKGNvbW11dGUoY29uZGl0aW9uKSwgcmVnVDIsIEltbTMyKGdldENvbnN0YW50T3Bl
cmFuZChvcDEpLmFzSW50MzIoKSksIHJlZ1QwKTsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENv
bnN0YW50SW50KG9wMikpIHsKKyAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwor
ICAgICAgICBjb21wYXJlMzIoY29uZGl0aW9uLCByZWdUMCwgSW1tMzIoZ2V0Q29uc3RhbnRPcGVy
YW5kKG9wMikuYXNJbnQzMigpKSwgcmVnVDApOworICAgIH0gZWxzZSB7CisgICAgICAgIGVtaXRM
b2FkMihvcDEsIHJlZ1QxLCByZWdUMCwgb3AyLCByZWdUMywgcmVnVDIpOworICAgICAgICBjb21w
YXJlMzIoY29uZGl0aW9uLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKKyAgICB9CisgICAgZW1pdFN0
b3JlQm9vbChkc3QsIHJlZ1QwKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE9wPgordm9pZCBK
SVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGNvbnN0IEluc3RydWN0aW9uICppbnN0cnVjdGlv
biwgRG91YmxlQ29uZGl0aW9uLCBzaXplX3QgKEpJVF9PUEVSQVRJT04gKm9wZXJhdGlvbikoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpLCBib29sIGludmVy
dCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBvcDEg
PSBieXRlY29kZS5tX2xoczsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AyID0gYnl0ZWNvZGUubV9y
aHM7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNv
ZGUubV90YXJnZXRMYWJlbCk7CisKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAg
ZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOworICAgIGVtaXRMb2FkKG9wMiwgcmVnVDMsIHJl
Z1QyKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVn
VDIpKTsKKyAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6
IE5vblplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIE9wPgordm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChjb25zdCBJbnN0cnVjdGlvbiAq
aW5zdHJ1Y3Rpb24sIE9wZXJhbmRUeXBlcyB0eXBlcywgSnVtcExpc3QmIG5vdEludDMyT3AxLCBK
dW1wTGlzdCYgbm90SW50MzJPcDIsIGJvb2wgb3AxSXNJblJlZ2lzdGVycywgYm9vbCBvcDJJc0lu
UmVnaXN0ZXJzKQoreworICAgIEp1bXBMaXN0IGVuZDsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3A+KCk7CisgICAgaW50IG9wY29kZUlEID0gT3A6Om9wY29kZUlEOwor
ICAgIGludCB0YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3Rhcmdl
dExhYmVsKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AxID0gYnl0ZWNvZGUubV9saHM7CisgICAg
VmlydHVhbFJlZ2lzdGVyIG9wMiA9IGJ5dGVjb2RlLm1fcmhzOworCisgICAgaWYgKCFub3RJbnQz
Mk9wMS5lbXB0eSgpKSB7CisgICAgICAgIC8vIERvdWJsZSBjYXNlIDE6IE9wMSBpcyBub3QgaW50
MzI7IE9wMiBpcyB1bmtub3duLgorICAgICAgICBub3RJbnQzMk9wMS5saW5rKHRoaXMpOworCisg
ICAgICAgIEFTU0VSVChvcDFJc0luUmVnaXN0ZXJzKTsKKworICAgICAgICAvLyBWZXJpZnkgT3Ax
IGlzIGRvdWJsZS4KKyAgICAgICAgaWYgKCF0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051bWJl
cigpKQorICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmUsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworCisgICAgICAgIGlmICghb3AySXNJblJl
Z2lzdGVycykKKyAgICAgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDMsIHJlZ1QyKTsKKworICAg
ICAgICBKdW1wIGRvdWJsZU9wMiA9IGJyYW5jaDMyKEJlbG93LCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6Okxvd2VzdFRhZykpOworCisgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVm
aW5pdGVseUlzTnVtYmVyKCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdElu
dDMyKHJlZ1QzKSk7CisKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUocmVnVDIsIGZwUmVn
VDApOworICAgICAgICBKdW1wIGRvVGhlTWF0aCA9IGp1bXAoKTsKKworICAgICAgICAvLyBMb2Fk
IE9wMiBhcyBkb3VibGUgaW50byBkb3VibGUgcmVnaXN0ZXIuCisgICAgICAgIGRvdWJsZU9wMi5s
aW5rKHRoaXMpOworICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDApOworCisgICAg
ICAgIC8vIERvIHRoZSBtYXRoLgorICAgICAgICBkb1RoZU1hdGgubGluayh0aGlzKTsKKyAgICAg
ICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICAg
ICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKKyAgICAgICAgICAgIGFkZEp1bXAoYnJh
bmNoRG91YmxlKERvdWJsZUxlc3NUaGFuQW5kT3JkZXJlZCwgZnBSZWdUMiwgZnBSZWdUMCksIHRh
cmdldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBvcF9qbGVzc2VxOgorICAg
ICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKKyAgICAgICAgICAgIGFkZEp1
bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIGZwUmVnVDIs
IGZwUmVnVDApLCB0YXJnZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugb3Bf
amdyZWF0ZXI6CisgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAg
ICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVk
LCBmcFJlZ1QyLCBmcFJlZ1QwKSwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZw
UmVnVDIpOworICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRo
YW5PckVxdWFsQW5kT3JkZXJlZCwgZnBSZWdUMiwgZnBSZWdUMCksIHRhcmdldCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAgICAgICBlbWl0TG9h
ZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUo
RG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIGZwUmVnVDAsIGZwUmVnVDIpLCB0YXJn
ZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAg
ICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAgICAgICAgICAgYWRkSnVt
cChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdU
MiksIHRhcmdldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0
ZXI6CisgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOworICAgICAgICAg
ICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW5PckVxdWFsT3JVbm9yZGVy
ZWQsIGZwUmVnVDAsIGZwUmVnVDIpLCB0YXJnZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEs
IGZwUmVnVDIpOworICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRl
clRoYW5PclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMiksIHRhcmdldCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFub3RJbnQzMk9wMi5l
bXB0eSgpKQorICAgICAgICAgICAgZW5kLmFwcGVuZChqdW1wKCkpOworICAgIH0KKworICAgIGlm
ICghbm90SW50MzJPcDIuZW1wdHkoKSkgeworICAgICAgICAvLyBEb3VibGUgY2FzZSAyOiBPcDEg
aXMgaW50MzI7IE9wMiBpcyBub3QgaW50MzIuCisgICAgICAgIG5vdEludDMyT3AyLmxpbmsodGhp
cyk7CisKKyAgICAgICAgQVNTRVJUKG9wMklzSW5SZWdpc3RlcnMpOworCisgICAgICAgIGlmICgh
b3AxSXNJblJlZ2lzdGVycykKKyAgICAgICAgICAgIGVtaXRMb2FkUGF5bG9hZChvcDEsIHJlZ1Qw
KTsKKworICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CisKKyAg
ICAgICAgLy8gVmVyaWZ5IG9wMiBpcyBkb3VibGUuCisgICAgICAgIGlmICghdHlwZXMuc2Vjb25k
KCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCisgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihBYm92ZSwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CisKKyAg
ICAgICAgLy8gRG8gdGhlIG1hdGguCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAg
ICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMiwgZnBSZWdU
MSk7CisgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbkFuZE9y
ZGVyZWQsIGZwUmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMiwg
ZnBSZWdUMSk7CisgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhh
bk9yRXF1YWxBbmRPcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QxKSwgdGFyZ2V0KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICAgICAgZW1pdExv
YWREb3VibGUob3AyLCBmcFJlZ1QxKTsKKyAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91Ymxl
KERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMSksIHRhcmdldCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAg
ICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKKyAgICAgICAgICAgIGFkZEp1bXAo
YnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIGZwUmVnVDAs
IGZwUmVnVDEpLCB0YXJnZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ugb3Bf
am5sZXNzOgorICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKKyAgICAg
ICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBm
cFJlZ1QxKTsKKyAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFu
T3JVbm9yZGVyZWQsIGZwUmVnVDEsIGZwUmVnVDApLCB0YXJnZXQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICAgICAgZW1pdExvYWREb3Vi
bGUob3AyLCBmcFJlZ1QxKTsKKyAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBmcFJlZ1QxLCBmcFJlZ1QwKSwgdGFyZ2V0
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAg
ICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKKyAgICAgICAgICAgIGFkZEp1
bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JVbm9yZGVyZWQsIGZwUmVnVDEsIGZw
UmVnVDApLCB0YXJnZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
fQorCisgICAgZW5kLmxpbmsodGhpcyk7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9uZWdhdGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGht
ZXRpYzMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcAppbmRleCBiZDM3MDUyNTI0NWQxODc1NWM2NjRiYWI2ZDU5ZmI1OWM4MjU0ZTBkLi4y
MjVlMTRhMWJlMDhhYmQ1NTBhZDYzYzQ1ZWI1MWExYzQ2MmUxYzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCkBAIC00MSwxMjAgKzQx
LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLXZvaWQg
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24pCi17Ci0gICAgSnVtcExpc3Qgbm90SW50MzJP
cDE7Ci0gICAgSnVtcExpc3Qgbm90SW50MzJPcDI7Ci0KLSAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIFZpcnR1YWxSZWdpc3RlciBvcDEgPSBieXRlY29kZS5t
X2xoczsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AyID0gYnl0ZWNvZGUubV9yaHM7Ci0gICAgdW5z
aWduZWQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUubV90YXJnZXRM
YWJlbCk7Ci0KLSAgICAvLyBDaGFyYWN0ZXIgbGVzcy4KLSAgICBpZiAoaXNPcGVyYW5kQ29uc3Rh
bnRDaGFyKG9wMSkpIHsKLSAgICAgICAgZW1pdExvYWQob3AyLCByZWdUMSwgcmVnVDApOwotICAg
ICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdENlbGwocmVnVDEpKTsKLSAgICAgICAgSnVtcExp
c3QgZmFpbHVyZXM7Ci0gICAgICAgIGVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKHJlZ1QwLCByZWdU
MCwgZmFpbHVyZXMpOwotICAgICAgICBhZGRTbG93Q2FzZShmYWlsdXJlcyk7Ci0gICAgICAgIGFk
ZEp1bXAoYnJhbmNoMzIoY29tbXV0ZShjb25kaXRpb24pLCByZWdUMCwgSW1tMzIoYXNTdHJpbmco
Z2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkpLT50cnlHZXRWYWx1ZSgpWzBdKSksIHRhcmdldCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDIp
KSB7Ci0gICAgICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QxKSk7Ci0gICAgICAgIEp1bXBMaXN0IGZhaWx1cmVz
OwotICAgICAgICBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhyZWdUMCwgcmVnVDAsIGZhaWx1cmVz
KTsKLSAgICAgICAgYWRkU2xvd0Nhc2UoZmFpbHVyZXMpOwotICAgICAgICBhZGRKdW1wKGJyYW5j
aDMyKGNvbmRpdGlvbiwgcmVnVDAsIEltbTMyKGFzU3RyaW5nKGdldENvbnN0YW50T3BlcmFuZChv
cDIpKS0+dHJ5R2V0VmFsdWUoKVswXSkpLCB0YXJnZXQpOwotICAgICAgICByZXR1cm47Ci0gICAg
fSAKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewotICAgICAgICBlbWl0TG9h
ZChvcDIsIHJlZ1QzLCByZWdUMik7Ci0gICAgICAgIG5vdEludDMyT3AyLmFwcGVuZChicmFuY2hJ
Zk5vdEludDMyKHJlZ1QzKSk7Ci0gICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29tbXV0ZShjb25k
aXRpb24pLCByZWdUMiwgSW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkuYXNJbnQzMigpKSks
IHRhcmdldCk7Ci0gICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDIpKSB7Ci0g
ICAgICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgbm90SW50MzJPcDEu
YXBwZW5kKGJyYW5jaElmTm90SW50MzIocmVnVDEpKTsKLSAgICAgICAgYWRkSnVtcChicmFuY2gz
Mihjb25kaXRpb24sIHJlZ1QwLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AyKS5hc0ludDMy
KCkpKSwgdGFyZ2V0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBlbWl0TG9hZDIob3AxLCByZWdU
MSwgcmVnVDAsIG9wMiwgcmVnVDMsIHJlZ1QyKTsKLSAgICAgICAgbm90SW50MzJPcDEuYXBwZW5k
KGJyYW5jaElmTm90SW50MzIocmVnVDEpKTsKLSAgICAgICAgbm90SW50MzJPcDIuYXBwZW5kKGJy
YW5jaElmTm90SW50MzIocmVnVDMpKTsKLSAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb25kaXRp
b24sIHJlZ1QwLCByZWdUMiksIHRhcmdldCk7Ci0gICAgfQotCi0gICAgaWYgKCFzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkgewotICAgICAgICBhZGRTbG93Q2FzZShub3RJbnQzMk9wMSk7Ci0gICAg
ICAgIGFkZFNsb3dDYXNlKG5vdEludDMyT3AyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBKdW1wIGVuZCA9IGp1bXAoKTsKLQotICAgIC8vIERvdWJsZSBsZXNzLgotICAgIGVtaXRCaW5h
cnlEb3VibGVPcDxPcD4oaW5zdHJ1Y3Rpb24sIE9wZXJhbmRUeXBlcygpLCBub3RJbnQzMk9wMSwg
bm90SW50MzJPcDIsICFpc09wZXJhbmRDb25zdGFudEludChvcDEpLCBpc09wZXJhbmRDb25zdGFu
dEludChvcDEpIHx8ICFpc09wZXJhbmRDb25zdGFudEludChvcDIpKTsKLSAgICBlbmQubGluayh0
aGlzKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIE9wPgotdm9pZCBKSVQ6OmVtaXRfY29tcGFy
ZVVuc2lnbmVkQW5kSnVtcChjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZGl0aW9uKQotewotICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3A+KCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhzOwot
ICAgIFZpcnR1YWxSZWdpc3RlciBvcDIgPSBieXRlY29kZS5tX3JoczsKLSAgICB1bnNpZ25lZCB0
YXJnZXQgPSBqdW1wVGFyZ2V0KGluc3RydWN0aW9uLCBieXRlY29kZS5tX3RhcmdldExhYmVsKTsK
LQotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKSB7Ci0gICAgICAgIGVtaXRMb2Fk
KG9wMiwgcmVnVDMsIHJlZ1QyKTsKLSAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb21tdXRlKGNv
bmRpdGlvbiksIHJlZ1QyLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AxKS5hc0ludDMyKCkp
KSwgdGFyZ2V0KTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpIHsK
LSAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwotICAgICAgICBhZGRKdW1wKGJy
YW5jaDMyKGNvbmRpdGlvbiwgcmVnVDAsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZChvcDIpLmFz
SW50MzIoKSkpLCB0YXJnZXQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVtaXRMb2FkMihvcDEs
IHJlZ1QxLCByZWdUMCwgb3AyLCByZWdUMywgcmVnVDIpOwotICAgICAgICBhZGRKdW1wKGJyYW5j
aDMyKGNvbmRpdGlvbiwgcmVnVDAsIHJlZ1QyKSwgdGFyZ2V0KTsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlIDx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZChjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQot
ewotICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3A+KCk7Ci0gICAgVmlydHVh
bFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OwotICAgIFZpcnR1YWxSZWdpc3RlciBvcDEg
PSBieXRlY29kZS5tX2xoczsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AyID0gYnl0ZWNvZGUubV9y
aHM7Ci0KLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewotICAgICAgICBlbWl0
TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7Ci0gICAgICAgIGNvbXBhcmUzMihjb21tdXRlKGNvbmRp
dGlvbiksIHJlZ1QyLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AxKS5hc0ludDMyKCkpLCBy
ZWdUMCk7Ci0gICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDIpKSB7Ci0gICAg
ICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmRp
dGlvbiwgcmVnVDAsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKSksIHJl
Z1QwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBlbWl0TG9hZDIob3AxLCByZWdUMSwgcmVnVDAs
IG9wMiwgcmVnVDMsIHJlZ1QyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmRpdGlvbiwgcmVnVDAs
IHJlZ1QyLCByZWdUMCk7Ci0gICAgfQotICAgIGVtaXRTdG9yZUJvb2woZHN0LCByZWdUMCk7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhjb25zdCBJbnN0cnVjdGlvbiAqaW5zdHJ1Y3Rpb24sIERvdWJsZUNvbmRpdGlvbiwgc2l6
ZV90IChKSVRfT1BFUkFUSU9OICpvcGVyYXRpb24pKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKSwgYm9vbCBpbnZlcnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5h
czxPcD4oKTsKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgb3AxID0gYnl0ZWNvZGUubV9saHM7Ci0gICAg
VmlydHVhbFJlZ2lzdGVyIG9wMiA9IGJ5dGVjb2RlLm1fcmhzOwotICAgIHVuc2lnbmVkIHRhcmdl
dCA9IGp1bXBUYXJnZXQoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLm1fdGFyZ2V0TGFiZWwpOwotCi0g
ICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKLQotICAgIGVtaXRMb2FkKG9wMSwgcmVnVDEsIHJl
Z1QwKTsKLSAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb24sIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgSlNWYWx1ZVJlZ3MocmVn
VDEsIHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7Ci0gICAgZW1pdEp1bXBTbG93
VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8gOiBOb25aZXJvLCByZXR1cm5WYWx1ZUdQ
UiksIHRhcmdldCk7Ci19Ci0KIHZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJl
bnRJbnN0cnVjdGlvbi0+YXM8T3BVbnNpZ25lZD4oKTsKQEAgLTE5MiwxNDIgKzc4LDYgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZGVjKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgZW1pdFN0b3JlSW50MzIoc3JjRHN0LCByZWdUMCwgdHJ1ZSk7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBPcD4KLXZvaWQgSklUOjplbWl0QmluYXJ5RG91YmxlT3AoY29uc3QgSW5zdHJ1
Y3Rpb24gKmluc3RydWN0aW9uLCBPcGVyYW5kVHlwZXMgdHlwZXMsIEp1bXBMaXN0JiBub3RJbnQz
Mk9wMSwgSnVtcExpc3QmIG5vdEludDMyT3AyLCBib29sIG9wMUlzSW5SZWdpc3RlcnMsIGJvb2wg
b3AySXNJblJlZ2lzdGVycykKLXsKLSAgICBKdW1wTGlzdCBlbmQ7Ci0KLSAgICBhdXRvIGJ5dGVj
b2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wPigpOwotICAgIGludCBvcGNvZGVJRCA9IE9wOjpvcGNv
ZGVJRDsKLSAgICBpbnQgdGFyZ2V0ID0ganVtcFRhcmdldChpbnN0cnVjdGlvbiwgYnl0ZWNvZGUu
bV90YXJnZXRMYWJlbCk7Ci0gICAgVmlydHVhbFJlZ2lzdGVyIG9wMSA9IGJ5dGVjb2RlLm1fbGhz
OwotICAgIFZpcnR1YWxSZWdpc3RlciBvcDIgPSBieXRlY29kZS5tX3JoczsKLQotICAgIGlmICgh
bm90SW50MzJPcDEuZW1wdHkoKSkgewotICAgICAgICAvLyBEb3VibGUgY2FzZSAxOiBPcDEgaXMg
bm90IGludDMyOyBPcDIgaXMgdW5rbm93bi4KLSAgICAgICAgbm90SW50MzJPcDEubGluayh0aGlz
KTsKLQotICAgICAgICBBU1NFUlQob3AxSXNJblJlZ2lzdGVycyk7Ci0KLSAgICAgICAgLy8gVmVy
aWZ5IE9wMSBpcyBkb3VibGUuCi0gICAgICAgIGlmICghdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5
SXNOdW1iZXIoKSkKLSAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKLQotICAgICAgICBpZiAoIW9w
MklzSW5SZWdpc3RlcnMpCi0gICAgICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7
Ci0KLSAgICAgICAgSnVtcCBkb3VibGVPcDIgPSBicmFuY2gzMihCZWxvdywgcmVnVDMsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKTsKLQotICAgICAgICBpZiAoIXR5cGVzLnNlY29u
ZCgpLmRlZmluaXRlbHlJc051bWJlcigpKQotICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
SWZOb3RJbnQzMihyZWdUMykpOwotCi0gICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1Qy
LCBmcFJlZ1QwKTsKLSAgICAgICAgSnVtcCBkb1RoZU1hdGggPSBqdW1wKCk7Ci0KLSAgICAgICAg
Ly8gTG9hZCBPcDIgYXMgZG91YmxlIGludG8gZG91YmxlIHJlZ2lzdGVyLgotICAgICAgICBkb3Vi
bGVPcDIubGluayh0aGlzKTsKLSAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QwKTsK
LQotICAgICAgICAvLyBEbyB0aGUgbWF0aC4KLSAgICAgICAgZG9UaGVNYXRoLmxpbmsodGhpcyk7
Ci0gICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICAgICAgICAgIGNhc2Ugb3Bfamxlc3M6
Ci0gICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKLSAgICAgICAg
ICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbkFuZE9yZGVyZWQsIGZw
UmVnVDIsIGZwUmVnVDApLCB0YXJnZXQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBvcF9qbGVzc2VxOgotICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9w
MSwgZnBSZWdUMik7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91Ymxl
TGVzc1RoYW5PckVxdWFsQW5kT3JkZXJlZCwgZnBSZWdUMiwgZnBSZWdUMCksIHRhcmdldCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgotICAg
ICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMSwgZnBSZWdUMik7Ci0gICAgICAgICAgICAg
ICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91YmxlR3JlYXRlclRoYW5BbmRPcmRlcmVkLCBmcFJl
Z1QyLCBmcFJlZ1QwKSwgdGFyZ2V0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKLSAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShv
cDEsIGZwUmVnVDIpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJs
ZUdyZWF0ZXJUaGFuT3JFcXVhbEFuZE9yZGVyZWQsIGZwUmVnVDIsIGZwUmVnVDApLCB0YXJnZXQp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBvcF9qbmxlc3M6Ci0g
ICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AxLCBmcFJlZ1QyKTsKLSAgICAgICAgICAg
ICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVMZXNzVGhhbk9yRXF1YWxPclVub3JkZXJl
ZCwgZnBSZWdUMCwgZnBSZWdUMiksIHRhcmdldCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIG9wX2pubGVzc2VxOgotICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91
YmxlKG9wMSwgZnBSZWdUMik7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUo
RG91YmxlTGVzc1RoYW5PclVub3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdUMiksIHRhcmdldCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKLSAg
ICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZwUmVnVDIpOwotICAgICAgICAgICAg
ICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuT3JFcXVhbE9yVW5vcmRl
cmVkLCBmcFJlZ1QwLCBmcFJlZ1QyKSwgdGFyZ2V0KTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgICAgICAgICAgICAgZW1pdExv
YWREb3VibGUob3AxLCBmcFJlZ1QyKTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERv
dWJsZShEb3VibGVHcmVhdGVyVGhhbk9yVW5vcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QyKSwgdGFy
Z2V0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghbm90SW50MzJPcDIuZW1wdHkoKSkKLSAgICAgICAgICAgIGVuZC5hcHBlbmQo
anVtcCgpKTsKLSAgICB9Ci0KLSAgICBpZiAoIW5vdEludDMyT3AyLmVtcHR5KCkpIHsKLSAgICAg
ICAgLy8gRG91YmxlIGNhc2UgMjogT3AxIGlzIGludDMyOyBPcDIgaXMgbm90IGludDMyLgotICAg
ICAgICBub3RJbnQzMk9wMi5saW5rKHRoaXMpOwotCi0gICAgICAgIEFTU0VSVChvcDJJc0luUmVn
aXN0ZXJzKTsKLQotICAgICAgICBpZiAoIW9wMUlzSW5SZWdpc3RlcnMpCi0gICAgICAgICAgICBl
bWl0TG9hZFBheWxvYWQob3AxLCByZWdUMCk7Ci0KLSAgICAgICAgY29udmVydEludDMyVG9Eb3Vi
bGUocmVnVDAsIGZwUmVnVDApOwotCi0gICAgICAgIC8vIFZlcmlmeSBvcDIgaXMgZG91YmxlLgot
ICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051bWJlcigpKQotICAgICAg
ICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmUsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TG93ZXN0VGFnKSkpOwotCi0gICAgICAgIC8vIERvIHRoZSBtYXRoLgotICAgICAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgICAgICBjYXNlIG9wX2psZXNzOgotICAgICAgICAg
ICAgICAgIGVtaXRMb2FkRG91YmxlKG9wMiwgZnBSZWdUMSk7Ci0gICAgICAgICAgICAgICAgYWRk
SnVtcChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW5BbmRPcmRlcmVkLCBmcFJlZ1QwLCBmcFJl
Z1QxKSwgdGFyZ2V0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
b3Bfamxlc3NlcToKLSAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEp
OwotICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuT3JF
cXVhbEFuZE9yZGVyZWQsIGZwUmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKLSAgICAgICAgICAgICAg
ICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAo
YnJhbmNoRG91YmxlKERvdWJsZUdyZWF0ZXJUaGFuQW5kT3JkZXJlZCwgZnBSZWdUMCwgZnBSZWdU
MSksIHRhcmdldCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIG9w
X2pncmVhdGVyZXE6Ci0gICAgICAgICAgICAgICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1Qx
KTsKLSAgICAgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhh
bk9yRXF1YWxBbmRPcmRlcmVkLCBmcFJlZ1QwLCBmcFJlZ1QxKSwgdGFyZ2V0KTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugb3Bfam5sZXNzOgotICAgICAgICAgICAg
ICAgIGVtaXRMb2FkRG91YmxlKG9wMiwgZnBSZWdUMSk7Ci0gICAgICAgICAgICAgICAgYWRkSnVt
cChicmFuY2hEb3VibGUoRG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIGZwUmVnVDEs
IGZwUmVnVDApLCB0YXJnZXQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBvcF9qbmxlc3NlcToKLSAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZw
UmVnVDEpOwotICAgICAgICAgICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NU
aGFuT3JVbm9yZGVyZWQsIGZwUmVnVDEsIGZwUmVnVDApLCB0YXJnZXQpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6Ci0gICAgICAgICAgICAg
ICAgZW1pdExvYWREb3VibGUob3AyLCBmcFJlZ1QxKTsKLSAgICAgICAgICAgICAgICBhZGRKdW1w
KGJyYW5jaERvdWJsZShEb3VibGVHcmVhdGVyVGhhbk9yRXF1YWxPclVub3JkZXJlZCwgZnBSZWdU
MSwgZnBSZWdUMCksIHRhcmdldCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91YmxlKG9w
MiwgZnBSZWdUMSk7Ci0gICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUoRG91Ymxl
R3JlYXRlclRoYW5PclVub3JkZXJlZCwgZnBSZWdUMSwgZnBSZWdUMCksIHRhcmdldCk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBl
bmQubGluayh0aGlzKTsKLX0KLQogLy8gTW9kICglKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQkVHSU46IE9QX01PRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRl
eCA0ODQwMzAwYjI3OTk1MWUzYTFhOThkNTczNGJjOTY3ZmE2YTgwYWY5Li40YzViZDBjMTU5MWZh
M2RjZGUzODVhNGIwNDFhNWU4MDY3OTM1NmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zMCw5ICszMCwxMiBAQAogI2lmIFVTRShKU1ZB
TFVFMzJfNjQpCiAjaW5jbHVkZSAiSklULmgiCiAKKyNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRp
b24uaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
U3RydWN0cy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bi5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDgyZTYw
YTBkY2JjODY2ZDRiYzk1ZjZlY2I3MTViZjQ1MDVmYzFjZWEuLjA0YTc0ZDdjNWVlYWJjOTE2MGI2
MmIwYTA5Zjc4OTJiODk3NGNhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMjYyLDYgKzEyNjIsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfaW50ZXJuYWxfZmllbGQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIHZhbHVlLCBTaG91bGRGaWx0ZXJWYWx1
ZSk7CiB9CiAKK3RlbXBsYXRlIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWw8T3BQdXRCeVZh
bD4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKKwogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBWaXJ0dWFsUmVn
aXN0ZXIgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKQEAgLTEzMDIsNiArMTMwNCw0OCBA
QCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCBWaXJ0dWFsUmVnaXN0
ZXIgdmFsdWUsIFdyaXRlQmFycmllck1vZAogICAgICAgICB2YWx1ZU5vdENlbGwubGluayh0aGlz
KTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIE9wPgorSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6
OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLCBD
YWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNlcywgSnVt
cExpc3QmIHNsb3dDYXNlcykKK3sKKyAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXlsb2FkKHJl
Z1QwKQorICAgIC8vIHByb3BlcnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQorCisgICAg
VmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVhbFJlZ2lz
dGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoSWZOb3RDZWxsKHJlZ1QzKSk7CisgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKHJlZ1Qy
LCByZWdUMiwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOworCisgICAgLy8gV3JpdGUgYmFycmll
ciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUgYmFycmll
ciwKKyAgICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KKyAgICAvLworICAgIC8vIElDIGNhbiB3
cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2Vs
bC4KKyAgICAvLyBXZSBhcmUgZW1pdHRpbmcgd3JpdGUtYmFycmllciBiZWZvcmUgd3JpdGluZyBo
ZXJlIGJ1dCB0aGlzIGlzIE9LIHNpbmNlIDMyYml0IEpTQyBkb2VzIG5vdCBoYXZlIGNvbmN1cnJl
bnQgR0MuCisgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJh
c2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQorICAgIGVtaXRXcml0ZUJhcnJp
ZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CisgICAgZW1pdExvYWRQYXlsb2FkKGJhc2UsIHJl
Z1QwKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKKworICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVj
b2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0Ojpz
dHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdU
MSwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBh
dGgoKnRoaXMpOworICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKKworICAgIExhYmVsIGNv
bGRQYXRoQmVnaW4gPSBsYWJlbCgpOworICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMp
OworCisgICAgLy8gSklUUHV0QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBh
bmQgdGhlIGJhc2UncyBwYXlsb2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUgdGFnLgorICAgIGVt
aXRMb2FkVGFnKGJhc2UsIHJlZ1QxKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24o
Z2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4u
c3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSwgcHJvcGVydHlOYW1lLnJhd0JpdHMoKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRo
Q2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKKyAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7
CisKKyAgICByZXR1cm4gZ2VuOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoVmlydHVhbFJlZ2lzdGVyIG93bmVyLCBXcml0ZUJhcnJp
ZXJNb2RlIG1vZGUpCkBAIC0xNjYzLDggKzE3MDcsNiBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1p
dEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1wJiBiYWRU
eQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWw8T3BQdXRCeVZhbD4oY29uc3QgSW5zdHJ1Y3Rpb24qKTsKLQogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNDE0MzVlZGU2
NTg3NDZjMzRjOWRkZGMwMzkzOTVhNzBkYjVlN2Q1Yi4uZmMyZTQ0ZDc5MmFhZjA0MjhmMjMwYWVm
ZGY5NjY0ODNmNGVkOWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKEpT
VkFMVUUzMl82NCkKICNpbmNsdWRlICJKSVQuaCIKIAorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50
aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGlyZWN0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCkBAIC0zNyw2
ICszOCw3IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTUHJvbWlzZS5o
IgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJPcGNvZGVJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUmVzdWx0VHlwZS5oIgpAQCAtNDQxLDQ4ICs0NDMsNiBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlKQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBPcD4KLUpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCi17Ci0gICAg
Ly8gYmFzZTogdGFnKHJlZ1QxKSwgcGF5bG9hZChyZWdUMCkKLSAgICAvLyBwcm9wZXJ0eTogdGFn
KHJlZ1QzKSwgcGF5bG9hZChyZWdUMikKLQotICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwotICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFs
dWU7Ci0KLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChyZWdUMykpOwotICAg
IGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhyZWdUMiwgcmVnVDIsIHByb3BlcnR5TmFtZSwgc2xv
d0Nhc2VzKTsKLQotICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtzIHRoZSByZWdpc3RlcnMuIFNv
IGFmdGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCi0gICAgLy8gcmVsb2FkIHRoZSByZWdp
c3RlcnMuCi0gICAgLy8KLSAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0
IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCi0gICAgLy8gV2UgYXJlIGVtaXR0aW5n
IHdyaXRlLWJhcnJpZXIgYmVmb3JlIHdyaXRpbmcgaGVyZSBidXQgdGhpcyBpcyBPSyBzaW5jZSAz
MmJpdCBKU0MgZG9lcyBub3QgaGF2ZSBjb25jdXJyZW50IEdDLgotICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDkzOTUKLSAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2Up
OwotICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMCk7Ci0gICAgZW1pdExvYWQodmFsdWUs
IHJlZ1QzLCByZWdUMik7Ci0KLSAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1
dEtpbmQpOwotICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKLSAgICBkb25lQ2FzZXMu
YXBwZW5kKGp1bXAoKSk7Ci0KLSAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKLSAg
ICBnZW4uc2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKLQotICAgIC8vIEpJVFB1dEJ5SWRHZW5l
cmF0b3Igb25seSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2Ug
aGF2ZSB0byByZWxvYWQgdGhlIHRhZy4KLSAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7Ci0K
LSAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdC
aXRzKCkpOwotICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7
Ci0gICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwotCi0gICAgcmV0dXJuIGdlbjsKLX0KLQog
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsK
ICAgICBib29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9w
X3B1dF9ieV92YWxfZGlyZWN0OwpAQCAtMTI2Niw2ICsxMjI2LDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHV0X2ludGVybmFsX2ZpZWxkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCB2YWx1ZSwgU2hvdWxkRmlsdGVyVmFsdWUp
OwogfQogCit0ZW1wbGF0ZSB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsPE9wUHV0QnlWYWw+
KGNvbnN0IEluc3RydWN0aW9uKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUUzMl82NCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>