<?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>225940</bug_id>
          
          <creation_ts>2021-05-18 15:34:39 -0700</creation_ts>
          <short_desc>Link Baseline JIT code off the main thread</short_desc>
          <delta_ts>2021-05-19 09:35:17 -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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761346</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-18 15:34:39 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761369</commentid>
    <comment_count>1</comment_count>
      <attachid>428996</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-18 16:38:20 -0700</bug_when>
    <thetext>Created attachment 428996
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761371</commentid>
    <comment_count>2</comment_count>
      <attachid>428998</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-18 16:39:31 -0700</bug_when>
    <thetext>Created attachment 428998
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761373</commentid>
    <comment_count>3</comment_count>
      <attachid>428998</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-18 16:42:27 -0700</bug_when>
    <thetext>Comment on attachment 428998
patch

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

r=me

&gt; Source/JavaScriptCore/jit/JIT.cpp:1008
&gt; +    if (!m_jitCode)

Let&apos;s add assertion that ensures this is not compilation thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761374</commentid>
    <comment_count>4</comment_count>
      <attachid>428998</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-18 16:43:16 -0700</bug_when>
    <thetext>Comment on attachment 428998
patch

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

&gt;&gt; Source/JavaScriptCore/jit/JIT.cpp:1008
&gt;&gt; +    if (!m_jitCode)
&gt; 
&gt; Let&apos;s add assertion that ensures this is not compilation thread.

sounds good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761379</commentid>
    <comment_count>5</comment_count>
      <attachid>429000</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-05-18 16:55:18 -0700</bug_when>
    <thetext>Created attachment 429000
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761553</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-19 09:35:01 -0700</bug_when>
    <thetext>Committed r277725 (237902@main): &lt;https://commits.webkit.org/237902@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429000.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761554</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-19 09:35:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78209510&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428996</attachid>
            <date>2021-05-18 16:38:20 -0700</date>
            <delta_ts>2021-05-18 16:39:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>12479</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIxLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IExpbmsgQmFzZWxpbmUgSklUIGNvZGUgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTQwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBKSVQ6
OmxpbmsoKSBhYmxlIHRvIHJ1biBvbiBjb21waWxlciB0aHJlYWRzLgorICAgICAgICBNb3N0IG9m
IHdoYXQgdGhlIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IGRvaW5nIGhhcHBpbHkgcmVtYWlucyB0aGUK
KyAgICAgICAgc2FtZS4gVGhpcyBwYXRjaCBtb3ZlcyBhIGZldyBmdW5jdGlvbnMgdG8gSklUOjpm
aW5hbGl6ZU9uTWFpblRocmVhZAorICAgICAgICBmb3IgdGhpbmdzIHRoYXQgY2FuJ3QgaGFwcGVu
IG9uIHRoZSBjb21waWxlciB0aHJlYWQ6CisgICAgICAgIC0gQWRkaW5nIGRhdGEgdG8gc29tZSBn
bG9iYWwgaGFzaCB0YWJsZXMgd2hpY2ggYXJlbid0IHN5bmNocm9uaXplZC4KKyAgICAgICAgLSBT
ZXR0aW5nIHRoZSBKSVRDb2RlLgorICAgICAgICAtIFNldHRpbmcgdGhlIGNvZGUgcG9pbnRlciBm
b3IgZXhjZXB0aW9uIGhhbmRsZXJzLgorICAgICAgICAtIFNvbWUgb3RoZXIgbWV0YWRhdGEgdGhl
IFNhbXBsaW5nIFByb2ZpbGVyIGxvb2tzIGF0LgorCisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAg
ICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6OkpJVDo6ZmluYWxpemVPbk1haW5U
aHJlYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKiBqaXQvSklUV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpKSVRX
b3JrbGlzdDo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKToKKyAgICAgICAgKEpTQzo6SklUV29ya2xp
c3Q6OlBsYW46OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNv
bXBpbGVPbk1haW5UaHJlYWROb3cpOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6Y29tcGls
ZUxhdGVyKToKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVPbk1haW5UaHJlYWRO
b3cpOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAg
IChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjpjb21waWxlTm93KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVOb3cpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRXb3JrbGlzdC5oOgorCiAyMDIxLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBEYXRhIENhbGwgSUNzIHRoYXQgZG9uJ3QgcmVwYXRjaCBhbmQg
dXNlIHRoZW0gaW4gdGhlIGJhc2VsaW5lIEpJVApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjc3Njg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICNlbmRpZgogfQogCi12b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRM
aW5raW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKK3ZvaWQgSklUOjpjb21waWxlQW5k
TGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICAg
ICBNb25vdG9uaWNUaW1lIGJlZm9yZSB7IH07CiAgICAgaWYgKFVOTElLRUxZKGNvbXB1dGVDb21w
aWxlVGltZXMoKSkpCkBAIC04NDYsMTQgKzg0NiwxNiBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhv
dXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIAogICAgICAgICBkYXRhTG9nKCJPcHRpbWl6ZWQg
IiwgY29kZUJsb2NrTmFtZSwgIiB3aXRoIEJhc2VsaW5lIEpJVCBpbnRvICIsIG1fbGlua0J1ZmZl
ci0+c2l6ZSgpLCAiIGJ5dGVzIGluICIsIChhZnRlciAtIGJlZm9yZSkubWlsbGlzZWNvbmRzKCks
ICIgbXMuXG4iKTsKICAgICB9CisKKyAgICBsaW5rKCk7CiB9CiAKLUNvbXBpbGF0aW9uUmVzdWx0
IEpJVDo6bGluaygpCit2b2lkIEpJVDo6bGluaygpCiB7CiAgICAgTGlua0J1ZmZlciYgcGF0Y2hC
dWZmZXIgPSAqbV9saW5rQnVmZmVyOwogICAgIAogICAgIGlmIChwYXRjaEJ1ZmZlci5kaWRGYWls
VG9BbGxvY2F0ZSgpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CisgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFRyYW5zbGF0ZSB2UEMgb2Zmc2V0cyBpbnRvIGFkZHJlc3NlcyBp
biBKSVQgZ2VuZXJhdGVkIGNvZGUsIGZvciBzd2l0Y2ggdGFibGVzLgogICAgIGZvciAoYXV0byYg
cmVjb3JkIDogbV9zd2l0Y2hlcykgewpAQCAtODkxLDEyICs4OTMsNiBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyArK2kpIHsK
LSAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBtX2NvZGVCbG9jay0+ZXhjZXB0aW9uSGFu
ZGxlcihpKTsKLSAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8zOTQzMzMxOD4uCi0g
ICAgICAgIGhhbmRsZXIubmF0aXZlQ29kZSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4obV9sYWJlbHNbaGFuZGxlci50YXJnZXRdKTsKLSAgICB9Ci0KICNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVt
cHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVM
b2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwpAQCAtOTc3LDEyICs5NzMsMTEgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGVNYXAo
aml0Q29kZU1hcEJ1aWxkZXIuZmluYWxpemUoKSk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9j
YXRpb25PZjxKU0VudHJ5UHRyVGFnPihtX2FyaXR5Q2hlY2spOwotCiAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSkgewogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+
ZHVtcChwYXRjaEJ1ZmZlcik7CiAgICAgICAgIHBhdGNoQnVmZmVyLmRpZEFscmVhZHlEaXNhc3Nl
bWJsZSgpOwogICAgIH0KKwogICAgIGlmIChVTkxJS0VMWShtX2NvbXBpbGF0aW9uKSkgewogICAg
ICAgICBpZiAoT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpCiAgICAg
ICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLmdl
dCgpLCBwYXRjaEJ1ZmZlcik7CkBAIC05OTAsMjUgKzk4NSw0MyBAQCBDb21waWxhdGlvblJlc3Vs
dCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRl
ci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3Jp
Z2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOworICAgICAgICBtX3BjVG9Db2RlT3JpZ2lu
TWFwID0gbWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKTsKICAgICAKICAgICBDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLCBKU0Vu
dHJ5UHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCkp
LmRhdGEoKSk7CiAgICAgCi0gICAgbV92bS0+bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29y
ZEZvckJhc2VsaW5lSklULT5hZGQoCi0gICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0
LnNpemUoKSkgLwotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnNTaXplKCkpKTsKLQogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgbV9jb2RlQmxvY2stPnNocmlua1Rv
Rml0KGxvY2tlciwgQ29kZUJsb2NrOjpTaHJpbmtNb2RlOjpMYXRlU2hyaW5rKTsKICAgICB9Ci0g
ICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0
SklUQ29kZShyZXN1bHQsIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCkpKTsK
KworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVj
ayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4obV9hcml0eUNoZWNrKTsK
KyAgICBtX2ppdENvZGUgPSBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRo
QXJpdHlDaGVjaywgSklUVHlwZTo6QmFzZWxpbmVKSVQpKTsKIAogICAgIGlmIChKSVRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAg
YXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+
c3RhcnQoKS51bnRhZ2dlZFB0cigpLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKS51
bnRhZ2dlZFB0cigpKTsKK30KKworQ29tcGlsYXRpb25SZXN1bHQgSklUOjpmaW5hbGl6ZU9uTWFp
blRocmVhZCgpCit7CisgICAgaWYgKCFtX2ppdENvZGUpCisgICAgICAgIHJldHVybiBDb21waWxh
dGlvbkZhaWxlZDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jb2RlQmxvY2stPm51
bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgKytpKSB7CisgICAgICAgIEhhbmRsZXJJbmZvJiBo
YW5kbGVyID0gbV9jb2RlQmxvY2stPmV4Y2VwdGlvbkhhbmRsZXIoaSk7CisgICAgICAgIC8vIEZJ
WE1FOiA8cmRhcjovL3Byb2JsZW0vMzk0MzMzMTg+LgorICAgICAgICBoYW5kbGVyLm5hdGl2ZUNv
ZGUgPSBtX2NvZGVCbG9jay0+aml0Q29kZU1hcCgpLmZpbmQoQnl0ZWNvZGVJbmRleChoYW5kbGVy
LnRhcmdldCkpLnJldGFnZ2VkPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+KCk7CisgICAgfQorCisg
ICAgaWYgKG1fcGNUb0NvZGVPcmlnaW5NYXApCisgICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1Rv
Q29kZU9yaWdpbk1hcChXVEZNb3ZlKG1fcGNUb0NvZGVPcmlnaW5NYXApKTsKKworICAgIG1fdm0t
Pm1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVC0+YWRkKAorICAg
ICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1faml0Q29kZS0+c2l6ZSgpKSAvCisgICAgICAgIHN0
YXRpY19jYXN0PGRvdWJsZT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSkpOworCisg
ICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLnJlbGVhc2VOb25OdWxsKCkpOwog
CiAgICAgcmV0dXJuIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDsKIH0KQEAgLTEwMTYsOCArMTAyOSw4
IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6bGluaygpCiBDb21waWxhdGlvblJlc3VsdCBKSVQ6
OnByaXZhdGVDb21waWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICAgICBkb01h
aW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKTsKLSAgICBjb21waWxlV2l0aG91dExp
bmtpbmcoZWZmb3J0KTsKLSAgICByZXR1cm4gbGluaygpOworICAgIGNvbXBpbGVBbmRMaW5rV2l0
aG91dEZpbmFsaXppbmcoZWZmb3J0KTsKKyAgICByZXR1cm4gZmluYWxpemVPbk1haW5UaHJlYWQo
KTsKIH0KIAogdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlRXhjZXB0aW9uSGFuZGxlcnMoKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyNzc2ODYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOCArMjE0LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgVk0mIHZtKCkgeyByZXR1cm4gKkpTSW50ZXJmYWNl
SklUOjp2bSgpOyB9CiAKLSAgICAgICAgdm9pZCBjb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29t
cGlsYXRpb25FZmZvcnQpOwotICAgICAgICBDb21waWxhdGlvblJlc3VsdCBsaW5rKCk7CisgICAg
ICAgIHZvaWQgY29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVm
Zm9ydCk7CisgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IGZpbmFsaXplT25NYWluVGhyZWFkKCk7
CiAKICAgICAgICAgdm9pZCBkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUoKTsK
ICAgICAgICAgCkBAIC0yNzAsNiArMjcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxl
TGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOworICAg
ICAgICB2b2lkIGxpbmsoKTsKICAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcHJpdmF0ZUNvbXBp
bGUoSklUQ29tcGlsYXRpb25FZmZvcnQpOwogICAgICAgICAKICAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZUdldEJ5VmFsKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mbyosIFJl
dHVybkFkZHJlc3NQdHIsIEpJVEFycmF5TW9kZSk7CkBAIC0xMDQ0LDYgKzEwNDUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFByb2ZpbGVyOjpDb21waWxhdGlvbj4gbV9jb21w
aWxhdGlvbjsKIAogICAgICAgICBQQ1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIgbV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXI7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQQ1RvQ29kZU9yaWdpbk1h
cD4gbV9wY1RvQ29kZU9yaWdpbk1hcDsKIAogICAgICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0
aW9uKiwgdm9pZCo+IG1faW5zdHJ1Y3Rpb25Ub01hdGhJQzsKICAgICAgICAgSGFzaE1hcDxjb25z
dCBJbnN0cnVjdGlvbiosIFVuaXF1ZVJlZjxNYXRoSUNHZW5lcmF0aW9uU3RhdGU+PiBtX2luc3Ry
dWN0aW9uVG9NYXRoSUNHZW5lcmF0aW9uU3RhdGU7CkBAIC0xMDUyLDYgKzEwNTQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2NhbkJlT3B0aW1pemVkT3JJbmxpbmVkOwogICAg
ICAgICBib29sIG1fc2hvdWxkRW1pdFByb2ZpbGluZzsKICAgICAgICAgQnl0ZWNvZGVJbmRleCBt
X2xvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXg7CisKKyAgICAgICAgUmVmUHRyPERpcmVjdEpJVENv
ZGU+IG1faml0Q29kZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwCShyZXZpc2lvbiAyNzc2ODYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQsMTUgKzQ0LDE1IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbXBpbGVJblRo
cmVhZCgpCiAgICAgewotICAgICAgICBtX2ppdC5jb21waWxlV2l0aG91dExpbmtpbmcoSklUQ29t
cGlsYXRpb25DYW5GYWlsKTsKKyAgICAgICAgbV9qaXQuY29tcGlsZUFuZExpbmtXaXRob3V0Rmlu
YWxpemluZyhKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogICAgICAgICAKICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgbV9pc0ZpbmlzaGVkQ29tcGlsaW5nID0gdHJ1
ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaW5hbGl6ZSgpCisgICAgdm9pZCBmaW5hbGl6ZShi
b29sIG5lZWRzRmVuY2UpCiAgICAgewotICAgICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQg
PSBtX2ppdC5saW5rKCk7CisgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IG1faml0
LmZpbmFsaXplT25NYWluVGhyZWFkKCk7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7CiAgICAg
ICAgIGNhc2UgQ29tcGlsYXRpb25GYWlsZWQ6CiAgICAgICAgICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKG1fY29kZUJsb2NrLCAiZGVsYXlKSVRDb21waWxlIiwgKCJjb21waWxhdGlvbiBmYWlsZWQi
KSk7CkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5t
X2RpZEZhaWxKSVRDb21waWxhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGNhc2UgQ29tcGlsYXRpb25TdWNjZXNzZnVsOgorICAgICAgICAgICAgaWYgKG5lZWRzRmVu
Y2UpCisgICAgICAgICAgICAgICAgV1RGOjpjcm9zc01vZGlmeWluZ0NvZGVGZW5jZSgpOwogICAg
ICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiICAgIEpJVCBjb21w
aWxhdGlvbiBzdWNjZXNzZnVsLiIpOwogICAgICAgICAgICAgbV9jb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5pbnN0YWxsQ29kZShtX2NvZGVCbG9jayk7CiAgICAgICAgICAgICBtX2NvZGVC
bG9jay0+aml0U29vbigpOwpAQCAtODAsMTEgKzgyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1faXNGaW5pc2hlZENvbXBpbGluZzsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIHZvaWQg
Y29tcGlsZU5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBsb29wT1NSRW50
cnlCeXRlY29kZUluZGV4KQorICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVPbk1haW5UaHJlYWROb3co
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5kZXggbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJ
bmRleCkKICAgICB7CiAgICAgICAgIFBsYW4gcGxhbihjb2RlQmxvY2ssIGxvb3BPU1JFbnRyeUJ5
dGVjb2RlSW5kZXgpOwogICAgICAgICBwbGFuLmNvbXBpbGVJblRocmVhZCgpOwotICAgICAgICBw
bGFuLmZpbmFsaXplKCk7CisgICAgICAgIHBsYW4uZmluYWxpemUoZmFsc2UpOwogICAgIH0KICAg
ICAKIHByaXZhdGU6CkBAIC0yMzUsNyArMjM3LDcgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGls
ZUxhdGVyKENvZGVCbG9jawogICAgIH0KICAgICAKICAgICBpZiAoIU9wdGlvbnM6OnVzZUNvbmN1
cnJlbnRKSVQoKSkgewotICAgICAgICBQbGFuOjpjb21waWxlTm93KGNvZGVCbG9jaywgbG9vcE9T
UkVudHJ5Qnl0ZWNvZGVJbmRleCk7CisgICAgICAgIFBsYW46OmNvbXBpbGVPbk1haW5UaHJlYWRO
b3coY29kZUJsb2NrLCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKQEAgLTI3Myw0NSArMjc1LDEzIEBAIHZvaWQgSklUV29ya2xpc3Q6OmNv
bXBpbGVMYXRlcihDb2RlQmxvY2sKICAgICAvLyBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgaXNzdWUu
IElmIHRoZSBjb25jdXJyZW50IEpJVCB0aHJlYWQgaXMgY29udm95ZWQsIHdlIHJldmVydCB0byBt
YWluCiAgICAgLy8gdGhyZWFkIGNvbXBpbGVzLiBUaGlzIGlzIHByb2JhYmx5IG5vdCBhcyBnb29k
IGFzIGlmIHdlIGhhZCBtdWx0aXBsZSBKSVQgdGhyZWFkcy4gTWF5YmUgd2UKICAgICAvLyBjYW4g
ZG8gdGhhdCBzb21lZGF5LgotICAgIFBsYW46OmNvbXBpbGVOb3coY29kZUJsb2NrLCBsb29wT1NS
RW50cnlCeXRlY29kZUluZGV4KTsKLX0KLQotdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZU5vdyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBsb29wT1NSRW50cnlCeXRlY29kZUlu
ZGV4KQotewotICAgIFZNJiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKLSAgICBEZWZlckdDIGRlZmVy
R0Modm0uaGVhcCk7Ci0gICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVFR5cGU6Oklu
dGVycHJldGVyVGh1bmspCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIGlzUGxhbm5l
ZDsKLSAgICB7Ci0gICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwotICAgICAgICBp
c1BsYW5uZWQgPSBtX3BsYW5uZWQuY29udGFpbnMoY29kZUJsb2NrKTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKGlzUGxhbm5lZCkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VD
b25jdXJyZW50SklUKCkpOwotICAgICAgICAvLyBUaGlzIGlzIGV4cGVuc2l2ZSwgYnV0IHByb2Jh
Ymx5IGdvb2QgZW5vdWdoLgotICAgICAgICBjb21wbGV0ZUFsbEZvclZNKHZtKTsKLSAgICB9Ci0g
ICAgCi0gICAgLy8gTm93IGl0IG1pZ2h0IGJlIGNvbXBpbGVkIQotICAgIGlmIChjb2RlQmxvY2st
PmppdFR5cGUoKSAhPSBKSVRUeXBlOjpJbnRlcnByZXRlclRodW5rKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgLy8gV2UgZG8gdGhpcyBpbiBjYXNlIHdlIGhhZCBwcmV2aW91c2x5IGF0dGVt
cHRlZCwgYW5kIHRoZW4gZmFpbGVkLCB0byBjb21waWxlIHdpdGggdGhlCi0gICAgLy8gYmFzZWxp
bmUgSklULgotICAgIGNvZGVCbG9jay0+cmVzZXRKSVREYXRhKCk7Ci0gICAgCi0gICAgLy8gT0ss
IGp1c3QgY29tcGlsZSBpdC4KLSAgICBKSVQ6OmNvbXBpbGUodm0sIGNvZGVCbG9jaywgSklUQ29t
cGlsYXRpb25NdXN0U3VjY2VlZCwgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJbmRleCk7Ci0gICAgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUoY29kZUJsb2NrKTsKKyAgICBQ
bGFuOjpjb21waWxlT25NYWluVGhyZWFkTm93KGNvZGVCbG9jaywgbG9vcE9TUkVudHJ5Qnl0ZWNv
ZGVJbmRleCk7CiB9CiAKIHZvaWQgSklUV29ya2xpc3Q6OmZpbmFsaXplUGxhbnMoUGxhbnMmIG15
UGxhbnMpCiB7CiAgICAgZm9yIChSZWZQdHI8UGxhbj4mIHBsYW4gOiBteVBsYW5zKSB7Ci0gICAg
ICAgIHBsYW4tPmZpbmFsaXplKCk7CisgICAgICAgIHBsYW4tPmZpbmFsaXplKHRydWUpOwogICAg
ICAgICAKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7CiAgICAgICAgIG1fcGxh
bm5lZC5yZW1vdmUocGxhbi0+Y29kZUJsb2NrKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRXb3JrbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUV29ya2xpc3QuaAkocmV2aXNpb24gMjc3Njg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBvbGwoVk0mKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVMYXRl
cihDb2RlQmxvY2sqLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXggPSBC
eXRlY29kZUluZGV4KDApKTsKLSAgICB2b2lkIGNvbXBpbGVOb3coQ29kZUJsb2NrKiwgQnl0ZWNv
ZGVJbmRleCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleCgwKSk7CiAg
ICAgCiAgICAgc3RhdGljIEpJVFdvcmtsaXN0JiBlbnN1cmVHbG9iYWxXb3JrbGlzdCgpOwogICAg
IHN0YXRpYyBKSVRXb3JrbGlzdCogZXhpc3RpbmdHbG9iYWxXb3JrbGlzdE9yTnVsbCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428998</attachid>
            <date>2021-05-18 16:39:31 -0700</date>
            <delta_ts>2021-05-18 16:55:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>12480</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIxLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IExpbmsgQmFzZWxpbmUgSklUIGNvZGUgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTQwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBKSVQ6
OmxpbmsoKSBhYmxlIHRvIHJ1biBvbiBjb21waWxlciB0aHJlYWRzLgorICAgICAgICBNb3N0IG9m
IHdoYXQgdGhlIGZ1bmN0aW9uIHdhcyBhbHJlYWR5IGRvaW5nIGhhcHBpbHkgcmVtYWlucyB0aGUK
KyAgICAgICAgc2FtZS4gVGhpcyBwYXRjaCBtb3ZlcyBhIGZldyBvcGVyYXRpb25zIHRvIEpJVDo6
ZmluYWxpemVPbk1haW5UaHJlYWQKKyAgICAgICAgZm9yIHRoaW5ncyB0aGF0IGNhbid0IGhhcHBl
biBvbiB0aGUgY29tcGlsZXIgdGhyZWFkOgorICAgICAgICAtIEFkZGluZyBkYXRhIHRvIHNvbWUg
Z2xvYmFsIGhhc2ggdGFibGVzIHdoaWNoIGFyZW4ndCBzeW5jaHJvbml6ZWQuCisgICAgICAgIC0g
U2V0dGluZyB0aGUgSklUQ29kZS4KKyAgICAgICAgLSBTZXR0aW5nIHRoZSBjb2RlIHBvaW50ZXIg
Zm9yIGV4Y2VwdGlvbiBoYW5kbGVycy4KKyAgICAgICAgLSBTb21lIG90aGVyIG1ldGFkYXRhIHRo
ZSBTYW1wbGluZyBQcm9maWxlciBsb29rcyBhdC4KKworICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKSVQ6OmZpbmFsaXplT25NYWlu
VGhyZWFkKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZVdpdGhvdXRMaW5raW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVFdvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
V29ya2xpc3Q6OlBsYW46OmNvbXBpbGVJblRocmVhZCk6CisgICAgICAgIChKU0M6OkpJVFdvcmts
aXN0OjpQbGFuOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjpj
b21waWxlT25NYWluVGhyZWFkTm93KToKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNvbXBp
bGVMYXRlcik6CisgICAgICAgIChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlT25NYWluVGhyZWFk
Tm93KToKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmZpbmFsaXplUGxhbnMpOgorICAgICAg
ICAoSlNDOjpKSVRXb3JrbGlzdDo6UGxhbjo6Y29tcGlsZU5vdyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpJVFdvcmtsaXN0Ojpjb21waWxlTm93KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklUV29ya2xpc3QuaDoKKwogMjAyMS0wNS0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgRGF0YSBDYWxsIElDcyB0aGF0IGRvbid0IHJlcGF0Y2ggYW5k
IHVzZSB0aGVtIGluIHRoZSBiYXNlbGluZSBKSVQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHJldmlzaW9uIDI3NzY4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcyLDcgKzY3Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcygpCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmNvbXBpbGVXaXRob3V0
TGlua2luZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCit2b2lkIEpJVDo6Y29tcGlsZUFu
ZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAg
ICAgTW9ub3RvbmljVGltZSBiZWZvcmUgeyB9OwogICAgIGlmIChVTkxJS0VMWShjb21wdXRlQ29t
cGlsZVRpbWVzKCkpKQpAQCAtODQ2LDE0ICs4NDYsMTYgQEAgdm9pZCBKSVQ6OmNvbXBpbGVXaXRo
b3V0TGlua2luZyhKSVRDb21waQogICAgICAgICAKICAgICAgICAgZGF0YUxvZygiT3B0aW1pemVk
ICIsIGNvZGVCbG9ja05hbWUsICIgd2l0aCBCYXNlbGluZSBKSVQgaW50byAiLCBtX2xpbmtCdWZm
ZXItPnNpemUoKSwgIiBieXRlcyBpbiAiLCAoYWZ0ZXIgLSBiZWZvcmUpLm1pbGxpc2Vjb25kcygp
LCAiIG1zLlxuIik7CiAgICAgfQorCisgICAgbGluaygpOwogfQogCi1Db21waWxhdGlvblJlc3Vs
dCBKSVQ6OmxpbmsoKQordm9pZCBKSVQ6OmxpbmsoKQogewogICAgIExpbmtCdWZmZXImIHBhdGNo
QnVmZmVyID0gKm1fbGlua0J1ZmZlcjsKICAgICAKICAgICBpZiAocGF0Y2hCdWZmZXIuZGlkRmFp
bFRvQWxsb2NhdGUoKSkKLSAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVkOworICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBUcmFuc2xhdGUgdlBDIG9mZnNldHMgaW50byBhZGRyZXNzZXMg
aW4gSklUIGdlbmVyYXRlZCBjb2RlLCBmb3Igc3dpdGNoIHRhYmxlcy4KICAgICBmb3IgKGF1dG8m
IHJlY29yZCA6IG1fc3dpdGNoZXMpIHsKQEAgLTg5MSwxMiArODkzLDYgQEAgQ29tcGlsYXRpb25S
ZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9jb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgKytpKSB7
Ci0gICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gbV9jb2RlQmxvY2stPmV4Y2VwdGlvbkhh
bmRsZXIoaSk7Ci0gICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMzk0MzMzMTg+Lgot
ICAgICAgICBoYW5kbGVyLm5hdGl2ZUNvZGUgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEV4Y2Vw
dGlvbkhhbmRsZXJQdHJUYWc+KG1fbGFiZWxzW2hhbmRsZXIudGFyZ2V0XSk7Ci0gICAgfQotCiAj
aWYgRU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCiAgICAgaWYgKCFtX2V4Y2VwdGlvbkNoZWNrcy5l
bXB0eSgpKQogICAgICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZXhjZXB0aW9uQ2hlY2tzLCBDb2Rl
TG9jYXRpb25MYWJlbCh2bSgpLmdldENUSVN0dWIoaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKS5y
ZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpKTsKQEAgLTk3NywxMiArOTczLDExIEBAIENvbXBpbGF0
aW9uUmVzdWx0IEpJVDo6bGluaygpCiAgICAgICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlTWFw
KGppdENvZGVNYXBCdWlsZGVyLmZpbmFsaXplKCkpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxv
Y2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4obV9hcml0eUNoZWNrKTsKLQogICAgIGlmIChVTkxJS0VM
WShPcHRpb25zOjpkdW1wRGlzYXNzZW1ibHkoKSkpIHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXIt
PmR1bXAocGF0Y2hCdWZmZXIpOwogICAgICAgICBwYXRjaEJ1ZmZlci5kaWRBbHJlYWR5RGlzYXNz
ZW1ibGUoKTsKICAgICB9CisKICAgICBpZiAoVU5MSUtFTFkobV9jb21waWxhdGlvbikpIHsKICAg
ICAgICAgaWYgKE9wdGlvbnM6OmRpc2Fzc2VtYmxlQmFzZWxpbmVGb3JQcm9maWxlcigpKQogICAg
ICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmlsZXIobV9jb21waWxhdGlvbi5n
ZXQoKSwgcGF0Y2hCdWZmZXIpOwpAQCAtOTkwLDI1ICs5ODUsNDMgQEAgQ29tcGlsYXRpb25SZXN1
bHQgSklUOjpsaW5rKCkKICAgICB9CiAKICAgICBpZiAobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIuZGlkQnVpbGRNYXBwaW5nKCkpCi0gICAgICAgIG1fY29kZUJsb2NrLT5zZXRQQ1RvQ29kZU9y
aWdpbk1hcChtYWtlVW5pcXVlPFBDVG9Db2RlT3JpZ2luTWFwPihXVEZNb3ZlKG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyKSwgcGF0Y2hCdWZmZXIpKTsKKyAgICAgICAgbV9wY1RvQ29kZU9yaWdp
bk1hcCA9IG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcik7CiAgICAgCiAgICAgQ29kZVJlZjxKU0VudHJ5
UHRyVGFnPiByZXN1bHQgPSBGSU5BTElaRV9DT0RFKAogICAgICAgICBwYXRjaEJ1ZmZlciwgSlNF
bnRyeVB0clRhZywKICAgICAgICAgIkJhc2VsaW5lIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmlu
ZyhDb2RlQmxvY2tXaXRoSklUVHlwZShtX2NvZGVCbG9jaywgSklUVHlwZTo6QmFzZWxpbmVKSVQp
KS5kYXRhKCkpOwogICAgIAotICAgIG1fdm0tPm1hY2hpbmVDb2RlQnl0ZXNQZXJCeXRlY29kZVdv
cmRGb3JCYXNlbGluZUpJVC0+YWRkKAotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJlc3Vs
dC5zaXplKCkpIC8KLSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zU2l6ZSgpKSk7Ci0KICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9jb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgIG1fY29kZUJsb2NrLT5zaHJpbmtU
b0ZpdChsb2NrZXIsIENvZGVCbG9jazo6U2hyaW5rTW9kZTo6TGF0ZVNocmluayk7CiAgICAgfQot
ICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlKAotICAgICAgICBhZG9wdFJlZigqbmV3IERpcmVj
dEpJVENvZGUocmVzdWx0LCB3aXRoQXJpdHlDaGVjaywgSklUVHlwZTo6QmFzZWxpbmVKSVQpKSk7
CisKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gd2l0aEFyaXR5Q2hl
Y2sgPSBwYXRjaEJ1ZmZlci5sb2NhdGlvbk9mPEpTRW50cnlQdHJUYWc+KG1fYXJpdHlDaGVjayk7
CisgICAgbV9qaXRDb2RlID0gYWRvcHRSZWYoKm5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0
aEFyaXR5Q2hlY2ssIEpJVFR5cGU6OkJhc2VsaW5lSklUKSk7CiAKICAgICBpZiAoSklUSW50ZXJu
YWw6OnZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2dGKCJKSVQgZ2VuZXJhdGVkIGNvZGUgZm9yICVw
IGF0IFslcCwgJXApLlxuIiwgbV9jb2RlQmxvY2ssIHJlc3VsdC5leGVjdXRhYmxlTWVtb3J5KCkt
PnN0YXJ0KCkudW50YWdnZWRQdHIoKSwgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+ZW5kKCku
dW50YWdnZWRQdHIoKSk7Cit9CisKK0NvbXBpbGF0aW9uUmVzdWx0IEpJVDo6ZmluYWxpemVPbk1h
aW5UaHJlYWQoKQoreworICAgIGlmICghbV9qaXRDb2RlKQorICAgICAgICByZXR1cm4gQ29tcGls
YXRpb25GYWlsZWQ7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY29kZUJsb2NrLT5u
dW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7ICsraSkgeworICAgICAgICBIYW5kbGVySW5mbyYg
aGFuZGxlciA9IG1fY29kZUJsb2NrLT5leGNlcHRpb25IYW5kbGVyKGkpOworICAgICAgICAvLyBG
SVhNRTogPHJkYXI6Ly9wcm9ibGVtLzM5NDMzMzE4Pi4KKyAgICAgICAgaGFuZGxlci5uYXRpdmVD
b2RlID0gbV9jb2RlQmxvY2stPmppdENvZGVNYXAoKS5maW5kKEJ5dGVjb2RlSW5kZXgoaGFuZGxl
ci50YXJnZXQpKS5yZXRhZ2dlZDxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPigpOworICAgIH0KKwor
ICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwKQorICAgICAgICBtX2NvZGVCbG9jay0+c2V0UENU
b0NvZGVPcmlnaW5NYXAoV1RGTW92ZShtX3BjVG9Db2RlT3JpZ2luTWFwKSk7CisKKyAgICBtX3Zt
LT5tYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQtPmFkZCgKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2ppdENvZGUtPnNpemUoKSkgLworICAgICAgICBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCkpKTsKKwor
ICAgIG1fY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1faml0Q29kZS5yZWxlYXNlTm9uTnVsbCgpKTsK
IAogICAgIHJldHVybiBDb21waWxhdGlvblN1Y2Nlc3NmdWw7CiB9CkBAIC0xMDE2LDggKzEwMjks
OCBAQCBDb21waWxhdGlvblJlc3VsdCBKSVQ6OmxpbmsoKQogQ29tcGlsYXRpb25SZXN1bHQgSklU
Ojpwcml2YXRlQ29tcGlsZShKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgZG9N
YWluVGhyZWFkUHJlcGFyYXRpb25CZWZvcmVDb21waWxlKCk7Ci0gICAgY29tcGlsZVdpdGhvdXRM
aW5raW5nKGVmZm9ydCk7Ci0gICAgcmV0dXJuIGxpbmsoKTsKKyAgICBjb21waWxlQW5kTGlua1dp
dGhvdXRGaW5hbGl6aW5nKGVmZm9ydCk7CisgICAgcmV0dXJuIGZpbmFsaXplT25NYWluVGhyZWFk
KCk7CiB9CiAKIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUV4Y2VwdGlvbkhhbmRsZXJzKCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjc3Njg2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDggKzIxNCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFZNJiB2bSgpIHsgcmV0dXJuICpKU0ludGVyZmFj
ZUpJVDo6dm0oKTsgfQogCi0gICAgICAgIHZvaWQgY29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENv
bXBpbGF0aW9uRWZmb3J0KTsKLSAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgbGluaygpOworICAg
ICAgICB2b2lkIGNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25F
ZmZvcnQpOworICAgICAgICBDb21waWxhdGlvblJlc3VsdCBmaW5hbGl6ZU9uTWFpblRocmVhZCgp
OwogCiAgICAgICAgIHZvaWQgZG9NYWluVGhyZWFkUHJlcGFyYXRpb25CZWZvcmVDb21waWxlKCk7
CiAgICAgICAgIApAQCAtMjcwLDYgKzI3MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHByaXZhdGVDb21waWxlTWFpblBhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUxpbmtQYXNzKCk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKTsKKyAg
ICAgICAgdm9pZCBsaW5rKCk7CiAgICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHByaXZhdGVDb21w
aWxlKEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgcHJpdmF0
ZUNvbXBpbGVHZXRCeVZhbChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm8qLCBS
ZXR1cm5BZGRyZXNzUHRyLCBKSVRBcnJheU1vZGUpOwpAQCAtMTA0NCw2ICsxMDQ1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlcjo6Q29tcGlsYXRpb24+IG1fY29t
cGlsYXRpb247CiAKICAgICAgICAgUENUb0NvZGVPcmlnaW5NYXBCdWlsZGVyIG1fcGNUb0NvZGVP
cmlnaW5NYXBCdWlsZGVyOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVPcmlnaW5N
YXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7CiAKICAgICAgICAgSGFzaE1hcDxjb25zdCBJbnN0cnVj
dGlvbiosIHZvaWQqPiBtX2luc3RydWN0aW9uVG9NYXRoSUM7CiAgICAgICAgIEhhc2hNYXA8Y29u
c3QgSW5zdHJ1Y3Rpb24qLCBVbmlxdWVSZWY8TWF0aElDR2VuZXJhdGlvblN0YXRlPj4gbV9pbnN0
cnVjdGlvblRvTWF0aElDR2VuZXJhdGlvblN0YXRlOwpAQCAtMTA1Miw2ICsxMDU0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9jYW5CZU9wdGltaXplZE9ySW5saW5lZDsKICAg
ICAgICAgYm9vbCBtX3Nob3VsZEVtaXRQcm9maWxpbmc7CiAgICAgICAgIEJ5dGVjb2RlSW5kZXgg
bV9sb29wT1NSRW50cnlCeXRlY29kZUluZGV4OworCisgICAgICAgIFJlZlB0cjxEaXJlY3RKSVRD
b2RlPiBtX2ppdENvZGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdvcmtsaXN0LmNwcAkocmV2aXNpb24gMjc3Njg2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDE1ICs0NCwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW5U
aHJlYWQoKQogICAgIHsKLSAgICAgICAgbV9qaXQuY29tcGlsZVdpdGhvdXRMaW5raW5nKEpJVENv
bXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgICAgIG1faml0LmNvbXBpbGVBbmRMaW5rV2l0aG91dEZp
bmFsaXppbmcoSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKICAgICAgICAgCiAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIG1faXNGaW5pc2hlZENvbXBpbGluZyA9IHRy
dWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmluYWxpemUoKQorICAgIHZvaWQgZmluYWxpemUo
Ym9vbCBuZWVkc0ZlbmNlKQogICAgIHsKLSAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0
ID0gbV9qaXQubGluaygpOworICAgICAgICBDb21waWxhdGlvblJlc3VsdCByZXN1bHQgPSBtX2pp
dC5maW5hbGl6ZU9uTWFpblRocmVhZCgpOwogICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgewogICAg
ICAgICBjYXNlIENvbXBpbGF0aW9uRmFpbGVkOgogICAgICAgICAgICAgQ09ERUJMT0NLX0xPR19F
VkVOVChtX2NvZGVCbG9jaywgImRlbGF5SklUQ29tcGlsZSIsICgiY29tcGlsYXRpb24gZmFpbGVk
IikpOwpAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+
bV9kaWRGYWlsSklUQ29tcGlsYXRpb24gPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIENvbXBpbGF0aW9uU3VjY2Vzc2Z1bDoKKyAgICAgICAgICAgIGlmIChuZWVkc0Zl
bmNlKQorICAgICAgICAgICAgICAgIFdURjo6Y3Jvc3NNb2RpZnlpbmdDb2RlRmVuY2UoKTsKICAg
ICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBKSVQgY29t
cGlsYXRpb24gc3VjY2Vzc2Z1bC4iKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+aW5zdGFsbENvZGUobV9jb2RlQmxvY2spOwogICAgICAgICAgICAgbV9jb2Rl
QmxvY2stPmppdFNvb24oKTsKQEAgLTgwLDExICs4MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2lzRmluaXNoZWRDb21waWxpbmc7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyB2b2lk
IGNvbXBpbGVOb3coQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5kZXggbG9vcE9TUkVu
dHJ5Qnl0ZWNvZGVJbmRleCkKKyAgICBzdGF0aWMgdm9pZCBjb21waWxlT25NYWluVGhyZWFkTm93
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUJ5dGVjb2Rl
SW5kZXgpCiAgICAgewogICAgICAgICBQbGFuIHBsYW4oY29kZUJsb2NrLCBsb29wT1NSRW50cnlC
eXRlY29kZUluZGV4KTsKICAgICAgICAgcGxhbi5jb21waWxlSW5UaHJlYWQoKTsKLSAgICAgICAg
cGxhbi5maW5hbGl6ZSgpOworICAgICAgICBwbGFuLmZpbmFsaXplKGZhbHNlKTsKICAgICB9CiAg
ICAgCiBwcml2YXRlOgpAQCAtMjM1LDcgKzIzNyw3IEBAIHZvaWQgSklUV29ya2xpc3Q6OmNvbXBp
bGVMYXRlcihDb2RlQmxvY2sKICAgICB9CiAgICAgCiAgICAgaWYgKCFPcHRpb25zOjp1c2VDb25j
dXJyZW50SklUKCkpIHsKLSAgICAgICAgUGxhbjo6Y29tcGlsZU5vdyhjb2RlQmxvY2ssIGxvb3BP
U1JFbnRyeUJ5dGVjb2RlSW5kZXgpOworICAgICAgICBQbGFuOjpjb21waWxlT25NYWluVGhyZWFk
Tm93KGNvZGVCbG9jaywgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC0yNzMsNDUgKzI3NSwxMyBAQCB2b2lkIEpJVFdvcmtsaXN0Ojpj
b21waWxlTGF0ZXIoQ29kZUJsb2NrCiAgICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3Vl
LiBJZiB0aGUgY29uY3VycmVudCBKSVQgdGhyZWFkIGlzIGNvbnZveWVkLCB3ZSByZXZlcnQgdG8g
bWFpbgogICAgIC8vIHRocmVhZCBjb21waWxlcy4gVGhpcyBpcyBwcm9iYWJseSBub3QgYXMgZ29v
ZCBhcyBpZiB3ZSBoYWQgbXVsdGlwbGUgSklUIHRocmVhZHMuIE1heWJlIHdlCiAgICAgLy8gY2Fu
IGRvIHRoYXQgc29tZWRheS4KLSAgICBQbGFuOjpjb21waWxlTm93KGNvZGVCbG9jaywgbG9vcE9T
UkVudHJ5Qnl0ZWNvZGVJbmRleCk7Ci19Ci0KLXZvaWQgSklUV29ya2xpc3Q6OmNvbXBpbGVOb3co
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlSW5kZXggbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJ
bmRleCkKLXsKLSAgICBWTSYgdm0gPSBjb2RlQmxvY2stPnZtKCk7Ci0gICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwotICAgIGlmIChjb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRUeXBlOjpJ
bnRlcnByZXRlclRodW5rKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBpc1BsYW5u
ZWQ7Ci0gICAgewotICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKLSAgICAgICAg
aXNQbGFubmVkID0gbV9wbGFubmVkLmNvbnRhaW5zKGNvZGVCbG9jayk7Ci0gICAgfQotICAgIAot
ICAgIGlmIChpc1BsYW5uZWQpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNl
Q29uY3VycmVudEpJVCgpKTsKLSAgICAgICAgLy8gVGhpcyBpcyBleHBlbnNpdmUsIGJ1dCBwcm9i
YWJseSBnb29kIGVub3VnaC4KLSAgICAgICAgY29tcGxldGVBbGxGb3JWTSh2bSk7Ci0gICAgfQot
ICAgIAotICAgIC8vIE5vdyBpdCBtaWdodCBiZSBjb21waWxlZCEKLSAgICBpZiAoY29kZUJsb2Nr
LT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJUaHVuaykKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIC8vIFdlIGRvIHRoaXMgaW4gY2FzZSB3ZSBoYWQgcHJldmlvdXNseSBhdHRl
bXB0ZWQsIGFuZCB0aGVuIGZhaWxlZCwgdG8gY29tcGlsZSB3aXRoIHRoZQotICAgIC8vIGJhc2Vs
aW5lIEpJVC4KLSAgICBjb2RlQmxvY2stPnJlc2V0SklURGF0YSgpOwotICAgIAotICAgIC8vIE9L
LCBqdXN0IGNvbXBpbGUgaXQuCi0gICAgSklUOjpjb21waWxlKHZtLCBjb2RlQmxvY2ssIEpJVENv
bXBpbGF0aW9uTXVzdFN1Y2NlZWQsIGxvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXgpOwotICAgIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKGNvZGVCbG9jayk7CisgICAg
UGxhbjo6Y29tcGlsZU9uTWFpblRocmVhZE5vdyhjb2RlQmxvY2ssIGxvb3BPU1JFbnRyeUJ5dGVj
b2RlSW5kZXgpOwogfQogCiB2b2lkIEpJVFdvcmtsaXN0OjpmaW5hbGl6ZVBsYW5zKFBsYW5zJiBt
eVBsYW5zKQogewogICAgIGZvciAoUmVmUHRyPFBsYW4+JiBwbGFuIDogbXlQbGFucykgewotICAg
ICAgICBwbGFuLT5maW5hbGl6ZSgpOworICAgICAgICBwbGFuLT5maW5hbGl6ZSh0cnVlKTsKICAg
ICAgICAgCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCptX2xvY2spOwogICAgICAgICBtX3Bs
YW5uZWQucmVtb3ZlKHBsYW4tPmNvZGVCbG9jaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUV29ya2xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFdvcmtsaXN0LmgJKHJldmlzaW9uIDI3NzY4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUV29ya2xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwb2xsKFZNJik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlTGF0
ZXIoQ29kZUJsb2NrKiwgQnl0ZWNvZGVJbmRleCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4ID0g
Qnl0ZWNvZGVJbmRleCgwKSk7Ci0gICAgdm9pZCBjb21waWxlTm93KENvZGVCbG9jayosIEJ5dGVj
b2RlSW5kZXggbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXgoMCkpOwog
ICAgIAogICAgIHN0YXRpYyBKSVRXb3JrbGlzdCYgZW5zdXJlR2xvYmFsV29ya2xpc3QoKTsKICAg
ICBzdGF0aWMgSklUV29ya2xpc3QqIGV4aXN0aW5nR2xvYmFsV29ya2xpc3RPck51bGwoKTsK
</data>
<flag name="review"
          id="450065"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429000</attachid>
            <date>2021-05-18 16:55:18 -0700</date>
            <delta_ts>2021-05-19 09:35:02 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>12526</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDIxLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IExpbmsgQmFzZWxpbmUgSklUIGNvZGUgb2ZmIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1OTQwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIEpJVDo6
bGluaygpIGFibGUgdG8gcnVuIG9uIGNvbXBpbGVyIHRocmVhZHMuCisgICAgICAgIE1vc3Qgb2Yg
d2hhdCB0aGUgZnVuY3Rpb24gd2FzIGFscmVhZHkgZG9pbmcgaGFwcGlseSByZW1haW5zIHRoZQor
ICAgICAgICBzYW1lLiBUaGlzIHBhdGNoIG1vdmVzIGEgZmV3IG9wZXJhdGlvbnMgdG8gSklUOjpm
aW5hbGl6ZU9uTWFpblRocmVhZAorICAgICAgICBmb3IgdGhpbmdzIHRoYXQgY2FuJ3QgaGFwcGVu
IG9uIHRoZSBjb21waWxlciB0aHJlYWQ6CisgICAgICAgIC0gQWRkaW5nIGRhdGEgdG8gc29tZSBn
bG9iYWwgaGFzaCB0YWJsZXMgd2hpY2ggYXJlbid0IHN5bmNocm9uaXplZC4KKyAgICAgICAgLSBT
ZXR0aW5nIHRoZSBKSVRDb2RlLgorICAgICAgICAtIFNldHRpbmcgdGhlIGNvZGUgcG9pbnRlciBm
b3IgZXhjZXB0aW9uIGhhbmRsZXJzLgorICAgICAgICAtIFNvbWUgb3RoZXIgbWV0YWRhdGEgdGhl
IFNhbXBsaW5nIFByb2ZpbGVyIGxvb2tzIGF0LgorCisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAg
ICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgIChKU0M6OkpJVDo6ZmluYWxpemVPbk1haW5U
aHJlYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKEpT
Qzo6SklUOjpjb21waWxlV2l0aG91dExpbmtpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVQuaDoKKyAgICAgICAgKiBqaXQvSklUV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpKSVRX
b3JrbGlzdDo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKToKKyAgICAgICAgKEpTQzo6SklUV29ya2xp
c3Q6OlBsYW46OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OlBsYW46OmNv
bXBpbGVPbk1haW5UaHJlYWROb3cpOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6Y29tcGls
ZUxhdGVyKToKKyAgICAgICAgKEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVPbk1haW5UaHJlYWRO
b3cpOgorICAgICAgICAoSlNDOjpKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyk6CisgICAgICAg
IChKU0M6OkpJVFdvcmtsaXN0OjpQbGFuOjpjb21waWxlTm93KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SklUV29ya2xpc3Q6OmNvbXBpbGVOb3cpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9K
SVRXb3JrbGlzdC5oOgorCiAyMDIxLTA1LTE4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBEYXRhIENhbGwgSUNzIHRoYXQgZG9uJ3QgcmVwYXRjaCBhbmQg
dXNlIHRoZW0gaW4gdGhlIGJhc2VsaW5lIEpJVApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjc3Njg2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKCkKICNlbmRpZgogfQogCi12b2lkIEpJVDo6Y29tcGlsZVdpdGhvdXRM
aW5raW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKK3ZvaWQgSklUOjpjb21waWxlQW5k
TGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICAg
ICBNb25vdG9uaWNUaW1lIGJlZm9yZSB7IH07CiAgICAgaWYgKFVOTElLRUxZKGNvbXB1dGVDb21w
aWxlVGltZXMoKSkpCkBAIC04NDYsMTQgKzg0NiwxNiBAQCB2b2lkIEpJVDo6Y29tcGlsZVdpdGhv
dXRMaW5raW5nKEpJVENvbXBpCiAgICAgICAgIAogICAgICAgICBkYXRhTG9nKCJPcHRpbWl6ZWQg
IiwgY29kZUJsb2NrTmFtZSwgIiB3aXRoIEJhc2VsaW5lIEpJVCBpbnRvICIsIG1fbGlua0J1ZmZl
ci0+c2l6ZSgpLCAiIGJ5dGVzIGluICIsIChhZnRlciAtIGJlZm9yZSkubWlsbGlzZWNvbmRzKCks
ICIgbXMuXG4iKTsKICAgICB9CisKKyAgICBsaW5rKCk7CiB9CiAKLUNvbXBpbGF0aW9uUmVzdWx0
IEpJVDo6bGluaygpCit2b2lkIEpJVDo6bGluaygpCiB7CiAgICAgTGlua0J1ZmZlciYgcGF0Y2hC
dWZmZXIgPSAqbV9saW5rQnVmZmVyOwogICAgIAogICAgIGlmIChwYXRjaEJ1ZmZlci5kaWRGYWls
VG9BbGxvY2F0ZSgpKQotICAgICAgICByZXR1cm4gQ29tcGlsYXRpb25GYWlsZWQ7CisgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFRyYW5zbGF0ZSB2UEMgb2Zmc2V0cyBpbnRvIGFkZHJlc3NlcyBp
biBKSVQgZ2VuZXJhdGVkIGNvZGUsIGZvciBzd2l0Y2ggdGFibGVzLgogICAgIGZvciAoYXV0byYg
cmVjb3JkIDogbV9zd2l0Y2hlcykgewpAQCAtODkxLDEyICs4OTMsNiBAQCBDb21waWxhdGlvblJl
c3VsdCBKSVQ6OmxpbmsoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyArK2kpIHsK
LSAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBtX2NvZGVCbG9jay0+ZXhjZXB0aW9uSGFu
ZGxlcihpKTsKLSAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8zOTQzMzMxOD4uCi0g
ICAgICAgIGhhbmRsZXIubmF0aXZlQ29kZSA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8RXhjZXB0
aW9uSGFuZGxlclB0clRhZz4obV9sYWJlbHNbaGFuZGxlci50YXJnZXRdKTsKLSAgICB9Ci0KICNp
ZiBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKICAgICBpZiAoIW1fZXhjZXB0aW9uQ2hlY2tzLmVt
cHR5KCkpCiAgICAgICAgIHBhdGNoQnVmZmVyLmxpbmsobV9leGNlcHRpb25DaGVja3MsIENvZGVM
b2NhdGlvbkxhYmVsKHZtKCkuZ2V0Q1RJU3R1YihoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IpLnJl
dGFnZ2VkQ29kZTxOb1B0clRhZz4oKSkpOwpAQCAtOTc3LDEyICs5NzMsMTEgQEAgQ29tcGlsYXRp
b25SZXN1bHQgSklUOjpsaW5rKCkKICAgICAgICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGVNYXAo
aml0Q29kZU1hcEJ1aWxkZXIuZmluYWxpemUoKSk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHdpdGhBcml0eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9j
YXRpb25PZjxKU0VudHJ5UHRyVGFnPihtX2FyaXR5Q2hlY2spOwotCiAgICAgaWYgKFVOTElLRUxZ
KE9wdGlvbnM6OmR1bXBEaXNhc3NlbWJseSgpKSkgewogICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+
ZHVtcChwYXRjaEJ1ZmZlcik7CiAgICAgICAgIHBhdGNoQnVmZmVyLmRpZEFscmVhZHlEaXNhc3Nl
bWJsZSgpOwogICAgIH0KKwogICAgIGlmIChVTkxJS0VMWShtX2NvbXBpbGF0aW9uKSkgewogICAg
ICAgICBpZiAoT3B0aW9uczo6ZGlzYXNzZW1ibGVCYXNlbGluZUZvclByb2ZpbGVyKCkpCiAgICAg
ICAgICAgICBtX2Rpc2Fzc2VtYmxlci0+cmVwb3J0VG9Qcm9maWxlcihtX2NvbXBpbGF0aW9uLmdl
dCgpLCBwYXRjaEJ1ZmZlcik7CkBAIC05OTAsMjUgKzk4NSw0NSBAQCBDb21waWxhdGlvblJlc3Vs
dCBKSVQ6OmxpbmsoKQogICAgIH0KIAogICAgIGlmIChtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRl
ci5kaWRCdWlsZE1hcHBpbmcoKSkKLSAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3Jp
Z2luTWFwKG1ha2VVbmlxdWU8UENUb0NvZGVPcmlnaW5NYXA+KFdURk1vdmUobV9wY1RvQ29kZU9y
aWdpbk1hcEJ1aWxkZXIpLCBwYXRjaEJ1ZmZlcikpOworICAgICAgICBtX3BjVG9Db2RlT3JpZ2lu
TWFwID0gbWFrZVVuaXF1ZTxQQ1RvQ29kZU9yaWdpbk1hcD4oV1RGTW92ZShtX3BjVG9Db2RlT3Jp
Z2luTWFwQnVpbGRlciksIHBhdGNoQnVmZmVyKTsKICAgICAKICAgICBDb2RlUmVmPEpTRW50cnlQ
dHJUYWc+IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCiAgICAgICAgIHBhdGNoQnVmZmVyLCBKU0Vu
dHJ5UHRyVGFnLAogICAgICAgICAiQmFzZWxpbmUgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCkp
LmRhdGEoKSk7CiAgICAgCi0gICAgbV92bS0+bWFjaGluZUNvZGVCeXRlc1BlckJ5dGVjb2RlV29y
ZEZvckJhc2VsaW5lSklULT5hZGQoCi0gICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVzdWx0
LnNpemUoKSkgLwotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnNTaXplKCkpKTsKLQogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2NvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgbV9jb2RlQmxvY2stPnNocmlua1Rv
Rml0KGxvY2tlciwgQ29kZUJsb2NrOjpTaHJpbmtNb2RlOjpMYXRlU2hyaW5rKTsKICAgICB9Ci0g
ICAgbV9jb2RlQmxvY2stPnNldEpJVENvZGUoCi0gICAgICAgIGFkb3B0UmVmKCpuZXcgRGlyZWN0
SklUQ29kZShyZXN1bHQsIHdpdGhBcml0eUNoZWNrLCBKSVRUeXBlOjpCYXNlbGluZUpJVCkpKTsK
KworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVj
ayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2Y8SlNFbnRyeVB0clRhZz4obV9hcml0eUNoZWNrKTsK
KyAgICBtX2ppdENvZGUgPSBhZG9wdFJlZigqbmV3IERpcmVjdEpJVENvZGUocmVzdWx0LCB3aXRo
QXJpdHlDaGVjaywgSklUVHlwZTo6QmFzZWxpbmVKSVQpKTsKIAogICAgIGlmIChKSVRJbnRlcm5h
bDo6dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0YoIkpJVCBnZW5lcmF0ZWQgY29kZSBmb3IgJXAg
YXQgWyVwLCAlcCkuXG4iLCBtX2NvZGVCbG9jaywgcmVzdWx0LmV4ZWN1dGFibGVNZW1vcnkoKS0+
c3RhcnQoKS51bnRhZ2dlZFB0cigpLCByZXN1bHQuZXhlY3V0YWJsZU1lbW9yeSgpLT5lbmQoKS51
bnRhZ2dlZFB0cigpKTsKK30KKworQ29tcGlsYXRpb25SZXN1bHQgSklUOjpmaW5hbGl6ZU9uTWFp
blRocmVhZCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7
CisKKyAgICBpZiAoIW1faml0Q29kZSkKKyAgICAgICAgcmV0dXJuIENvbXBpbGF0aW9uRmFpbGVk
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZFeGNl
cHRpb25IYW5kbGVycygpOyArK2kpIHsKKyAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBt
X2NvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKyAgICAgICAgLy8gRklYTUU6IDxyZGFy
Oi8vcHJvYmxlbS8zOTQzMzMxOD4uCisgICAgICAgIGhhbmRsZXIubmF0aXZlQ29kZSA9IG1fY29k
ZUJsb2NrLT5qaXRDb2RlTWFwKCkuZmluZChCeXRlY29kZUluZGV4KGhhbmRsZXIudGFyZ2V0KSku
cmV0YWdnZWQ8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4oKTsKKyAgICB9CisKKyAgICBpZiAobV9w
Y1RvQ29kZU9yaWdpbk1hcCkKKyAgICAgICAgbV9jb2RlQmxvY2stPnNldFBDVG9Db2RlT3JpZ2lu
TWFwKFdURk1vdmUobV9wY1RvQ29kZU9yaWdpbk1hcCkpOworCisgICAgbV92bS0+bWFjaGluZUNv
ZGVCeXRlc1BlckJ5dGVjb2RlV29yZEZvckJhc2VsaW5lSklULT5hZGQoCisgICAgICAgIHN0YXRp
Y19jYXN0PGRvdWJsZT4obV9qaXRDb2RlLT5zaXplKCkpIC8KKyAgICAgICAgc3RhdGljX2Nhc3Q8
ZG91YmxlPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpKSk7CisKKyAgICBtX2NvZGVC
bG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICByZXR1
cm4gQ29tcGlsYXRpb25TdWNjZXNzZnVsOwogfQpAQCAtMTAxNiw4ICsxMDMxLDggQEAgQ29tcGls
YXRpb25SZXN1bHQgSklUOjpsaW5rKCkKIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6cHJpdmF0ZUNv
bXBpbGUoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogewogICAgIGRvTWFpblRocmVhZFBy
ZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpOwotICAgIGNvbXBpbGVXaXRob3V0TGlua2luZyhlZmZv
cnQpOwotICAgIHJldHVybiBsaW5rKCk7CisgICAgY29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxp
emluZyhlZmZvcnQpOworICAgIHJldHVybiBmaW5hbGl6ZU9uTWFpblRocmVhZCgpOwogfQogCiB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVFeGNlcHRpb25IYW5kbGVycygpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDI3NzY4NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNCw4ICsyMTQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBWTSYgdm0oKSB7IHJldHVybiAqSlNJbnRlcmZhY2VKSVQ6OnZtKCk7
IH0KIAotICAgICAgICB2b2lkIGNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkVm
Zm9ydCk7Ci0gICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IGxpbmsoKTsKKyAgICAgICAgdm9pZCBj
b21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0KTsKKyAg
ICAgICAgQ29tcGlsYXRpb25SZXN1bHQgZmluYWxpemVPbk1haW5UaHJlYWQoKTsKIAogICAgICAg
ICB2b2lkIGRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpOwogICAgICAgICAK
QEAgLTI3MCw2ICsyNzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCk7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVMaW5rUGFzcygp
OwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7CisgICAgICAgIHZvaWQg
bGluaygpOwogICAgICAgICBDb21waWxhdGlvblJlc3VsdCBwcml2YXRlQ29tcGlsZShKSVRDb21w
aWxhdGlvbkVmZm9ydCk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlR2V0
QnlWYWwoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZvKiwgUmV0dXJuQWRkcmVz
c1B0ciwgSklUQXJyYXlNb2RlKTsKQEAgLTEwNDQsNiArMTA0NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWZQdHI8UHJvZmlsZXI6OkNvbXBpbGF0aW9uPiBtX2NvbXBpbGF0aW9uOwog
CiAgICAgICAgIFBDVG9Db2RlT3JpZ2luTWFwQnVpbGRlciBtX3BjVG9Db2RlT3JpZ2luTWFwQnVp
bGRlcjsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBDVG9Db2RlT3JpZ2luTWFwPiBtX3BjVG9D
b2RlT3JpZ2luTWFwOwogCiAgICAgICAgIEhhc2hNYXA8Y29uc3QgSW5zdHJ1Y3Rpb24qLCB2b2lk
Kj4gbV9pbnN0cnVjdGlvblRvTWF0aElDOwogICAgICAgICBIYXNoTWFwPGNvbnN0IEluc3RydWN0
aW9uKiwgVW5pcXVlUmVmPE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT4+IG1faW5zdHJ1Y3Rpb25Ub01h
dGhJQ0dlbmVyYXRpb25TdGF0ZTsKQEAgLTEwNTIsNiArMTA1NCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBib29sIG1fY2FuQmVPcHRpbWl6ZWRPcklubGluZWQ7CiAgICAgICAgIGJvb2wg
bV9zaG91bGRFbWl0UHJvZmlsaW5nOwogICAgICAgICBCeXRlY29kZUluZGV4IG1fbG9vcE9TUkVu
dHJ5Qnl0ZWNvZGVJbmRleDsKKworICAgICAgICBSZWZQdHI8RGlyZWN0SklUQ29kZT4gbV9qaXRD
b2RlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDI3NzY4NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCwx
NSArNDQsMTUgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29tcGlsZUluVGhyZWFkKCkKICAg
ICB7Ci0gICAgICAgIG1faml0LmNvbXBpbGVXaXRob3V0TGlua2luZyhKSVRDb21waWxhdGlvbkNh
bkZhaWwpOworICAgICAgICBtX2ppdC5jb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJ
VENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIAogICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvY2spOwogICAgICAgICBtX2lzRmluaXNoZWRDb21waWxpbmcgPSB0cnVlOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGZpbmFsaXplKCkKKyAgICB2b2lkIGZpbmFsaXplKGJvb2wgbmVlZHNG
ZW5jZSkKICAgICB7Ci0gICAgICAgIENvbXBpbGF0aW9uUmVzdWx0IHJlc3VsdCA9IG1faml0Lmxp
bmsoKTsKKyAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVzdWx0ID0gbV9qaXQuZmluYWxpemVP
bk1haW5UaHJlYWQoKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBD
b21waWxhdGlvbkZhaWxlZDoKICAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQobV9jb2Rl
QmxvY2ssICJkZWxheUpJVENvbXBpbGUiLCAoImNvbXBpbGF0aW9uIGZhaWxlZCIpKTsKQEAgLTYx
LDYgKzYxLDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9jb2RlQmxvY2stPm1fZGlkRmFpbEpJ
VENvbXBpbGF0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBD
b21waWxhdGlvblN1Y2Nlc3NmdWw6CisgICAgICAgICAgICBpZiAobmVlZHNGZW5jZSkKKyAgICAg
ICAgICAgICAgICBXVEY6OmNyb3NzTW9kaWZ5aW5nQ29kZUZlbmNlKCk7CiAgICAgICAgICAgICBk
YXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICIgICAgSklUIGNvbXBpbGF0aW9uIHN1
Y2Nlc3NmdWwuIik7CiAgICAgICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
Pmluc3RhbGxDb2RlKG1fY29kZUJsb2NrKTsKICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5qaXRT
b29uKCk7CkBAIC04MCwxMSArODIsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pc0Zp
bmlzaGVkQ29tcGlsaW5nOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgdm9pZCBjb21waWxlTm93
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUJ5dGVjb2Rl
SW5kZXgpCisgICAgc3RhdGljIHZvaWQgY29tcGlsZU9uTWFpblRocmVhZE5vdyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVJbmRleCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4KQogICAg
IHsKICAgICAgICAgUGxhbiBwbGFuKGNvZGVCbG9jaywgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJbmRl
eCk7CiAgICAgICAgIHBsYW4uY29tcGlsZUluVGhyZWFkKCk7Ci0gICAgICAgIHBsYW4uZmluYWxp
emUoKTsKKyAgICAgICAgcGxhbi5maW5hbGl6ZShmYWxzZSk7CiAgICAgfQogICAgIAogcHJpdmF0
ZToKQEAgLTIzNSw3ICsyMzcsNyBAQCB2b2lkIEpJVFdvcmtsaXN0Ojpjb21waWxlTGF0ZXIoQ29k
ZUJsb2NrCiAgICAgfQogICAgIAogICAgIGlmICghT3B0aW9uczo6dXNlQ29uY3VycmVudEpJVCgp
KSB7Ci0gICAgICAgIFBsYW46OmNvbXBpbGVOb3coY29kZUJsb2NrLCBsb29wT1NSRW50cnlCeXRl
Y29kZUluZGV4KTsKKyAgICAgICAgUGxhbjo6Y29tcGlsZU9uTWFpblRocmVhZE5vdyhjb2RlQmxv
Y2ssIGxvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMjczLDQ1ICsyNzUsMTMgQEAgdm9pZCBKSVRXb3JrbGlzdDo6Y29tcGlsZUxhdGVy
KENvZGVCbG9jawogICAgIC8vIFRoaXMgd29ya3MgYXJvdW5kIHRoZSBpc3N1ZS4gSWYgdGhlIGNv
bmN1cnJlbnQgSklUIHRocmVhZCBpcyBjb252b3llZCwgd2UgcmV2ZXJ0IHRvIG1haW4KICAgICAv
LyB0aHJlYWQgY29tcGlsZXMuIFRoaXMgaXMgcHJvYmFibHkgbm90IGFzIGdvb2QgYXMgaWYgd2Ug
aGFkIG11bHRpcGxlIEpJVCB0aHJlYWRzLiBNYXliZSB3ZQogICAgIC8vIGNhbiBkbyB0aGF0IHNv
bWVkYXkuCi0gICAgUGxhbjo6Y29tcGlsZU5vdyhjb2RlQmxvY2ssIGxvb3BPU1JFbnRyeUJ5dGVj
b2RlSW5kZXgpOwotfQotCi12b2lkIEpJVFdvcmtsaXN0Ojpjb21waWxlTm93KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUluZGV4IGxvb3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXgpCi17Ci0g
ICAgVk0mIHZtID0gY29kZUJsb2NrLT52bSgpOwotICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKLSAgICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUVHlwZTo6SW50ZXJwcmV0ZXJU
aHVuaykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGJvb2wgaXNQbGFubmVkOwotICAgIHsK
LSAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIoKm1fbG9jayk7Ci0gICAgICAgIGlzUGxhbm5lZCA9
IG1fcGxhbm5lZC5jb250YWlucyhjb2RlQmxvY2spOwotICAgIH0KLSAgICAKLSAgICBpZiAoaXNQ
bGFubmVkKSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUNvbmN1cnJlbnRK
SVQoKSk7Ci0gICAgICAgIC8vIFRoaXMgaXMgZXhwZW5zaXZlLCBidXQgcHJvYmFibHkgZ29vZCBl
bm91Z2guCi0gICAgICAgIGNvbXBsZXRlQWxsRm9yVk0odm0pOwotICAgIH0KLSAgICAKLSAgICAv
LyBOb3cgaXQgbWlnaHQgYmUgY29tcGlsZWQhCi0gICAgaWYgKGNvZGVCbG9jay0+aml0VHlwZSgp
ICE9IEpJVFR5cGU6OkludGVycHJldGVyVGh1bmspCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICAvLyBXZSBkbyB0aGlzIGluIGNhc2Ugd2UgaGFkIHByZXZpb3VzbHkgYXR0ZW1wdGVkLCBhbmQg
dGhlbiBmYWlsZWQsIHRvIGNvbXBpbGUgd2l0aCB0aGUKLSAgICAvLyBiYXNlbGluZSBKSVQuCi0g
ICAgY29kZUJsb2NrLT5yZXNldEpJVERhdGEoKTsKLSAgICAKLSAgICAvLyBPSywganVzdCBjb21w
aWxlIGl0LgotICAgIEpJVDo6Y29tcGlsZSh2bSwgY29kZUJsb2NrLCBKSVRDb21waWxhdGlvbk11
c3RTdWNjZWVkLCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4KTsKLSAgICBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZShjb2RlQmxvY2spOworICAgIFBsYW46OmNvbXBp
bGVPbk1haW5UaHJlYWROb3coY29kZUJsb2NrLCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4KTsK
IH0KIAogdm9pZCBKSVRXb3JrbGlzdDo6ZmluYWxpemVQbGFucyhQbGFucyYgbXlQbGFucykKIHsK
ICAgICBmb3IgKFJlZlB0cjxQbGFuPiYgcGxhbiA6IG15UGxhbnMpIHsKLSAgICAgICAgcGxhbi0+
ZmluYWxpemUoKTsKKyAgICAgICAgcGxhbi0+ZmluYWxpemUodHJ1ZSk7CiAgICAgICAgIAogICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAgICAgbV9wbGFubmVkLnJlbW92
ZShwbGFuLT5jb2RlQmxvY2soKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFdvcmtsaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRX
b3JrbGlzdC5oCShyZXZpc2lvbiAyNzc2ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFdvcmtsaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgcG9sbChWTSYpOwogICAgIAogICAgIHZvaWQgY29tcGlsZUxhdGVyKENvZGVCbG9j
ayosIEJ5dGVjb2RlSW5kZXggbG9vcE9TUkVudHJ5Qnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5k
ZXgoMCkpOwotICAgIHZvaWQgY29tcGlsZU5vdyhDb2RlQmxvY2sqLCBCeXRlY29kZUluZGV4IGxv
b3BPU1JFbnRyeUJ5dGVjb2RlSW5kZXggPSBCeXRlY29kZUluZGV4KDApKTsKICAgICAKICAgICBz
dGF0aWMgSklUV29ya2xpc3QmIGVuc3VyZUdsb2JhbFdvcmtsaXN0KCk7CiAgICAgc3RhdGljIEpJ
VFdvcmtsaXN0KiBleGlzdGluZ0dsb2JhbFdvcmtsaXN0T3JOdWxsKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>