<?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>185813</bug_id>
          
          <creation_ts>2018-05-20 23:00:16 -0700</creation_ts>
          <short_desc>[JSC] Remove duplicate methods in JSInterfaceJIT</short_desc>
          <delta_ts>2018-05-21 22:47:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1425584</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-20 23:00:16 -0700</bug_when>
    <thetext>[JSC] Remove duplicate methods in JSInterfaceJIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425585</commentid>
    <comment_count>1</comment_count>
      <attachid>340828</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-20 23:01:02 -0700</bug_when>
    <thetext>Created attachment 340828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425625</commentid>
    <comment_count>2</comment_count>
      <attachid>340843</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 05:55:57 -0700</bug_when>
    <thetext>Created attachment 340843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425629</commentid>
    <comment_count>3</comment_count>
      <attachid>340846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 06:13:19 -0700</bug_when>
    <thetext>Created attachment 340846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425968</commentid>
    <comment_count>4</comment_count>
      <attachid>340846</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-21 17:21:34 -0700</bug_when>
    <thetext>Comment on attachment 340846
Patch

r=me if 32-bit is working</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426043</commentid>
    <comment_count>5</comment_count>
      <attachid>340955</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 22:14:46 -0700</bug_when>
    <thetext>Created attachment 340955
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426044</commentid>
    <comment_count>6</comment_count>
      <attachid>340846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 22:16:39 -0700</bug_when>
    <thetext>Comment on attachment 340846
Patch

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

&gt; Source/JavaScriptCore/jit/ThunkGenerators.cpp:382
&gt; +    JSInterfaceJIT::Jump exceptionHandler = jit.branchTestPtr(JSInterfaceJIT::NonZero, JSInterfaceJIT::AbsoluteAddress(vm-&gt;addressOfException()));

Oh, we do not have branchTestPtr(cond, AbsoluteAddress) for 32bit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426046</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-05-21 22:46:33 -0700</bug_when>
    <thetext>Committed r232048: &lt;https://trac.webkit.org/changeset/232048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426047</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-21 22:47:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/40441671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340828</attachid>
            <date>2018-05-20 23:01:02 -0700</date>
            <delta_ts>2018-05-21 05:55:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185813-20180521150101.patch</filename>
            <type>text/plain</type>
            <size>29596</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTlmYTI4ZGYxN2U4ODEwODllZGVjZjAzMTJlZmM4MTQxOGQ2NWY4Li5kYzgyY2MzZTU5MTBkYTRj
MTUyODEwMWI1YjcwMjhkMWNiOGVhNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2OCBAQAorMjAxOC0wNS0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgZHVwbGljYXRlIG1ldGhvZHMgaW4gSlNJbnRl
cmZhY2VKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWUgbWV0aG9kcyBvZiBKU0ludGVyZmFjZUpJVCBhcmUgZHVwbGljYXRlIHdpdGggQXNzZW1i
bHlIZWxwZXJzJyBvbmVzLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlc2Ugb25lcyBh
bmQgdXNlIEFzc2VtYmx5SGVscGVycycgb25lcyBpbnN0ZWFkLgorCisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcik6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcik6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBh
cmVVbnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0
SW50VG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OnVwZGF0ZVRvcENhbGxG
cmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEluaXRSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTdG9yZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlSW50MzIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
dG9yZUNlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTdG9yZUJvb2wpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRUYWdCb29sKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2lzX2VtcHR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5l
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
c19jZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19vYmplY3Qp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5ld0Z1
bmNFeHByQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAg
KEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50MzIpOgorICAgICAgICAoSlNDOjpKU0lu
dGVyZmFjZUpJVDo6ZW1pdExvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJ
VDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VK
SVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpKU0ludGVy
ZmFjZUpJVDo6dGFnRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6
OnBheWxvYWRGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6aW50
UGF5bG9hZEZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjppbnRU
YWdGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFRhZ0lu
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjphZGRyZXNzRm9yKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5Eb3VibGUpOgorICAgICAgICAqIGppdC9U
aHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjphcml0eUZpeHVwR2VuZXJhdG9yKToK
KwogMjAxOC0wNS0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmVydCB0aGUgQjMgY29tcGlsZXIgcGlwZWxpbmUncyB0cmVhdG1lbnQgb2YgdGFpbGR1cApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNTYyNTE5
OTFhYzkxMTU0ZDY5Yzc3ZjE0YmFmNmU5ZmMzYmI3ZDA5MS4uZTNhOGJhNzZlYjc5Mzk0YmE4Mzcw
OWI4YWI2MTQyMGQ0NDdkNGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCkBAIC0xMDkxLDYgKzEwOTEsMTEgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJz
IDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgcmV0dXJuIGFkZHJlc3NGb3Ioc3Rh
dGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7CiAgICAgfQogCisgICAgc3RhdGlj
IEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIEdQUlJlZyBi
YXNlR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkp
OworICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlR1BSLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgVGFnT2Zmc2V0KTsKKyAgICB9CiAgICAgc3RhdGljIEFk
ZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgewogICAg
ICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKSk7CkBAIC0xMTAxLDYgKzExMDYs
MTEgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAg
ICAgICAgcmV0dXJuIHRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQp
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9yKFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIsIEdQUlJlZyBiYXNlR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNl
R1BSLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgUGF5bG9h
ZE9mZnNldCk7CisgICAgfQogICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3IoVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7CiAgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVn
aXN0ZXIuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGI5NmFhMjI0MzNh
YWJkYTUwZWE4ZGE5ZjNhOTk1ZDkwNGI3OTc5NTcuLmMzODUyMjIyYzVhYTEyNDhiZDYwMTI3M2E2
YmQyMWJjNGNmOTUxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDQ5LDggKzQ0OSw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51
bWJlcihSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQo
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKIAotICAgICAgICB2
b2lkIGVtaXRUYWdCb29sKFJlZ2lzdGVySUQpOwotCiAgICAgICAgIHZvaWQgY29tcGlsZUdldEJ5
SWRIb3RQYXRoKGludCBiYXNlVlJlZywgY29uc3QgSWRlbnRpZmllciopOwogCiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0
aWMuY3BwCmluZGV4IDJiM2ZlOTBjY2VjZmE5YTM2MDA4ZDAwNGM0OWQwOGM2ODMyODg3ZTMuLjM5
ODFkMDM4ODE4OTcxM2Y2YjViNTVkZTZhNTUwYmUwMDI0ZTAyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3Vuc2lnbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbnQocmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKExlc3NUaGFuLCBy
ZWdUMCwgVHJ1c3RlZEltbTMyKDApKSk7Ci0gICAgZW1pdFRhZ0ludChyZWdUMCwgcmVnVDApOwor
ICAgIGJveEludDMyKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKQEAgLTMyMiw3ICszMjIsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWQoaW50IGRzdCwgaW50IG9wMSwgaW50IG9wMiwg
UmVsYXRpb25hbENvbmRpdGlvbiBjbwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhv
cDEsIHJlZ1QwLCBvcDIsIHJlZ1QxKTsKICAgICAgICAgY29tcGFyZTMyKGNvbmRpdGlvbiwgcmVn
VDAsIHJlZ1QxLCByZWdUMCk7CiAgICAgfQotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoc3JjRHN0LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50
KHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVyZmxvdywgVHJ1c3RlZElt
bTMyKDEpLCByZWdUMCkpOwotICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1QwKTsKKyAgICBib3hJ
bnQzMihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKHNyY0RzdCk7CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChy
ZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3ViMzIoT3ZlcmZsb3csIFRydXN0ZWRJbW0z
MigxKSwgcmVnVDApKTsKLSAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7CisgICAgYm94SW50
MzIocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihzcmNEc3QpOwogfQogCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bW9kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSnVtcCBudW1lcmF0b3JQ
b3NpdGl2ZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVnVDQsIFRydXN0ZWRJbW0z
MigwKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDMyKFplcm8sIGVkeCkpOwogICAgIG51
bWVyYXRvclBvc2l0aXZlLmxpbmsodGhpcyk7Ci0gICAgZW1pdFRhZ0ludChlZHgsIHJlZ1QwKTsK
KyAgICBib3hJbnQzMihlZHgsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCmluZGV4IDlhNGI3MzdjODRhYWRlNmRhMzdjMzcxZDg1NjdlZWM5ZWY1MDYwNTUuLmE3
MGExYTNhOTFlNjYxYThjNGFkZTQyYWNjMjAwNTNlMDVjYmMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC05MCwxMCArOTAsMTAgQEAgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIEpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMpCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0UHV0SW50VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBpbnQg
ZW50cnkpCiB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MihJbnQzMlRhZyksIGludFRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKLSAgICBz
dG9yZTMyKGZyb20sIGludFBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7Cisg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSW50MzJUYWcpLCB0YWdGb3IoZW50cnkpKTsKKyAgICBz
dG9yZTMyKGZyb20sIHBheWxvYWRGb3IoZW50cnkpKTsKICNlbHNlCi0gICAgc3RvcmU2NChmcm9t
LCBhZGRyZXNzRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgIHN0b3JlNjQoZnJv
bSwgYWRkcmVzc0ZvcihlbnRyeSkpOwogI2VuZGlmCiB9CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogI2Vsc2UKICAgICB1
aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLmJp
dHMoKTsKICNlbmRpZgotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIGlu
dFRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7CisgICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhhdCB0aGlzIGlzIG5l
ZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9wIGNhbGwgZnJhbWUgb24K
ICAgICAvLyB0aGUgQysrIHNpZGUuCkBAIC0zOTYsNiArMzk2LDExIEBAIEFMV0FZU19JTkxJTkUg
ZG91YmxlIEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50RG91YmxlKGludCBzcmMpCiAgICAgcmV0dXJu
IGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzRG91YmxlKCk7CiB9CiAKK0FMV0FZU19JTkxJTkUg
dm9pZCBKSVQ6OmVtaXRJbml0UmVnaXN0ZXIoaW50IGRzdCkKK3sKKyAgICBzdG9yZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCBhZGRyZXNzRm9yKGRzdCkpOworfQorCiAjaWYgVVNFKEpTVkFM
VUUzMl82NCkKIAogaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZFRhZyhpbnQgaW5kZXgsIFJlZ2lz
dGVySUQgdGFnKQpAQCAtNDQ1LDE0ICs0NTAsMTUgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9h
ZChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFZpcnR1YWxSZWdpc3RlciB0YXJnZXQgeyBp
bmRleCB9OwogICAgIGlmIChwYXlsb2FkID09IGJhc2UpIHsgLy8gYXZvaWQgc3RvbXBpbmcgYmFz
ZQotICAgICAgICBsb2FkMzIodGFnRm9yKGluZGV4LCBiYXNlKSwgdGFnKTsKLSAgICAgICAgbG9h
ZDMyKHBheWxvYWRGb3IoaW5kZXgsIGJhc2UpLCBwYXlsb2FkKTsKKyAgICAgICAgbG9hZDMyKHRh
Z0Zvcih0YXJnZXQsIGJhc2UpLCB0YWcpOworICAgICAgICBsb2FkMzIocGF5bG9hZEZvcih0YXJn
ZXQsIGJhc2UpLCBwYXlsb2FkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvYWQz
MihwYXlsb2FkRm9yKGluZGV4LCBiYXNlKSwgcGF5bG9hZCk7Ci0gICAgbG9hZDMyKHRhZ0Zvcihp
bmRleCwgYmFzZSksIHRhZyk7CisgICAgbG9hZDMyKHBheWxvYWRGb3IodGFyZ2V0LCBiYXNlKSwg
cGF5bG9hZCk7CisgICAgbG9hZDMyKHRhZ0Zvcih0YXJnZXQsIGJhc2UpLCB0YWcpOwogfQogCiBp
bmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkMihpbnQgaW5kZXgxLCBSZWdpc3RlcklEIHRhZzEsIFJl
Z2lzdGVySUQgcGF5bG9hZDEsIGludCBpbmRleDIsIFJlZ2lzdGVySUQgdGFnMiwgUmVnaXN0ZXJJ
RCBwYXlsb2FkMikKQEAgLTQ4MiwzNiArNDg4LDM3IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdExv
YWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKQogCiBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRTdG9yZShpbnQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklE
IHBheWxvYWQsIFJlZ2lzdGVySUQgYmFzZSkKIHsKLSAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxv
YWRGb3IoaW5kZXgsIGJhc2UpKTsKLSAgICBzdG9yZTMyKHRhZywgdGFnRm9yKGluZGV4LCBiYXNl
KSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHRhcmdldCB7IGluZGV4IH07CisgICAgc3RvcmUzMihw
YXlsb2FkLCBwYXlsb2FkRm9yKHRhcmdldCwgYmFzZSkpOworICAgIHN0b3JlMzIodGFnLCB0YWdG
b3IodGFyZ2V0LCBiYXNlKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlSW50MzIo
aW50IGluZGV4LCBSZWdpc3RlcklEIHBheWxvYWQsIGJvb2wgaW5kZXhJc0ludDMyKQogewotICAg
IHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsK
KyAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgpKTsKICAgICBpZiAoIWluZGV4
SXNJbnQzMikKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcp
LCB0YWdGb3IoaW5kZXgsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgdGFnRm9yKGluZGV4KSk7CiB9CiAKIGlubGlu
ZSB2b2lkIEpJVDo6ZW1pdFN0b3JlSW50MzIoaW50IGluZGV4LCBUcnVzdGVkSW1tMzIgcGF5bG9h
ZCwgYm9vbCBpbmRleElzSW50MzIpCiB7Ci0gICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9y
KGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9h
ZEZvcihpbmRleCkpOwogICAgIGlmICghaW5kZXhJc0ludDMyKQotICAgICAgICBzdG9yZTMyKFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHRhZ0ZvcihpbmRleCwgY2FsbEZyYW1lUmVn
aXN0ZXIpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcp
LCB0YWdGb3IoaW5kZXgpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmVDZWxsKGlu
dCBpbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkLCBib29sIGluZGV4SXNDZWxsKQogewotICAgIHN0
b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAg
ICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgpKTsKICAgICBpZiAoIWluZGV4SXND
ZWxsKQotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgdGFn
Rm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgdGFnRm9yKGluZGV4KSk7CiB9CiAKIGlubGluZSB2b2lk
IEpJVDo6ZW1pdFN0b3JlQm9vbChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCwgYm9vbCBp
bmRleElzQm9vbCkKIHsKLSAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgsIGNh
bGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKGluZGV4
KSk7CiAgICAgaWYgKCFpbmRleElzQm9vbCkKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Qm9vbGVhblRhZyksIHRhZ0ZvcihpbmRleCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsK
KyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksIHRhZ0Zv
cihpbmRleCkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZURvdWJsZShpbnQgaW5k
ZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSkKQEAgLTUyMSwxMyArNTI4LDkgQEAgaW5saW5lIHZvaWQg
SklUOjplbWl0U3RvcmVEb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCiAKIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlKGludCBpbmRleCwgY29uc3QgSlNWYWx1ZSBjb25zdGFu
dCwgUmVnaXN0ZXJJRCBiYXNlKQogewotICAgIHN0b3JlMzIoSW1tMzIoY29uc3RhbnQucGF5bG9h
ZCgpKSwgcGF5bG9hZEZvcihpbmRleCwgYmFzZSkpOwotICAgIHN0b3JlMzIoSW1tMzIoY29uc3Rh
bnQudGFnKCkpLCB0YWdGb3IoaW5kZXgsIGJhc2UpKTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6ZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KQotewotICAgIGVtaXRTdG9yZShkc3QsIGpz
VW5kZWZpbmVkKCkpOworICAgIFZpcnR1YWxSZWdpc3RlciB0YXJnZXQgeyBpbmRleCB9OworICAg
IHN0b3JlMzIoSW1tMzIoY29uc3RhbnQucGF5bG9hZCgpKSwgcGF5bG9hZEZvcih0YXJnZXQsIGJh
c2UpKTsKKyAgICBzdG9yZTMyKEltbTMyKGNvbnN0YW50LnRhZygpKSwgdGFnRm9yKHRhcmdldCwg
YmFzZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpCkBAIC01ODksNyArNTkyLDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihpbnQgc3JjLCBSZWdpc3RlcklE
IGRzdCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvYWQ2NChBZGRyZXNzKGNhbGxG
cmFtZVJlZ2lzdGVyLCBzcmMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgZHN0KTsKKyAgICBsb2FkNjQo
YWRkcmVzc0ZvcihzcmMpLCBkc3QpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGludCBzcmMsIEpTVmFsdWVSZWdzIGRzdCkKQEAgLTYyMCw3ICs2
MjMsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudEludChpbnQg
c3JjKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGlu
dCBkc3QsIFJlZ2lzdGVySUQgZnJvbSkKIHsKLSAgICBzdG9yZTY0KGZyb20sIEFkZHJlc3MoY2Fs
bEZyYW1lUmVnaXN0ZXIsIGRzdCAqIHNpemVvZihSZWdpc3RlcikpKTsKKyAgICBzdG9yZTY0KGZy
b20sIGFkZHJlc3NGb3IoZHN0KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoaW50IGRzdCwgSlNWYWx1ZVJlZ3MgZnJvbSkKQEAgLTYzMywxMSAr
NjM2LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihW
aXJ0dWFsUmVnaXN0ZXIgZHN0LCBSZWdpc3RlcklEIGYKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdC5vZmZzZXQoKSwgZnJvbSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRJbml0UmVnaXN0ZXIoaW50IGRzdCkKLXsKLSAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBk
c3QgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci19Ci0KIEFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJ
VDo6ZW1pdEp1bXBJZkJvdGhKU0NlbGxzKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcy
LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7CiAgICAgbW92ZShyZWcxLCBzY3JhdGNoKTsKQEAgLTcw
NiwxMSArNzA0LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlm
Tm90TnVtYmVyKFJlZ2lzdGVySUQgcmVnKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90TnVt
YmVyKHJlZykpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0VGFnQm9vbChSZWdp
c3RlcklEIHJlZykKLXsKLSAgICBvcjMyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
PihWYWx1ZUZhbHNlKSksIHJlZyk7Ci19Ci0KIGlubGluZSBJbnN0cnVjdGlvbiogSklUOjpjb3Bp
ZWRJbnN0cnVjdGlvbihJbnN0cnVjdGlvbiogaW5zdCkKIHsKICAgICByZXR1cm4gJm1faW5zdHJ1
Y3Rpb25zW21fY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChpbnN0KV07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA4ODQ2YjI0YWZlYzcyZWFlZDRmM2U3Y2Y5
OTQzNWI1YmY5OWY3MDU0Li5jNmYxMjU4MmJlYjBjYTkyOWE1ZmVmOGY0NTFjYjM5ODRhZDdlMjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEyNSw3ICsx
MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICAvLyBDaGVjayB0aGF0IGNvbnN0cnVjdG9y
ICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJyBpLmUuIHRoZSBvYmplY3QgaXMgbm90IGEg
Qy1BUEkgdXNlciBub3IgYSBib3VuZCBmdW5jdGlvbi4KICAgICB0ZXN0OChaZXJvLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgcmVnVDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1Qw
KTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlz
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19lbXB0eShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUsIHJlZ1QwKTsKICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCByZWdUMCk7CiAKLSAgICBlbWl0VGFnQm9vbChyZWdU
MCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKICAgICBkb25l
LmxpbmsodGhpcyk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVn
VDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOwogfQogCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfYm9vbGVh
bihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7CiAgICAgdGVzdDY0KFplcm8sIHJlZ1QwLCBU
cnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSwgcmVnVDApOwotICAgIGVtaXRU
YWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1Qw
IH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMjQyLDcgKzI0
Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1Qw
KTsKICAgICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVn
VDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0K
IApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBl
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSnVtcCBpc05vdENlbGwgPSBi
cmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSksIHJl
Z1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNW
YWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKICAgICBpc05v
dENlbGwubGluayh0aGlzKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
c19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wIGlzTm90
Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAKICAgICBjb21wYXJlOChBYm92ZU9yRXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoT2JqZWN0VHlwZSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAg
Ym94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKQEAgLTQxNiw3ICs0MTYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kLCByZWdUMSk7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIGNvbXBh
cmUzMihFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDAp
OworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0K
IApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwLCByZWdU
MSwgcmVnVDIpOwogICAgIGNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7
Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVS
ZWdzIHsgcmVnVDAgfSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQgSklUOjpj
b21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBDb21waWxl
T3BTdHJpY3RFcVR5CiAgICAgICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdU
MCk7CiAgICAgZWxzZQogICAgICAgICBjb21wYXJlNjQoTm90RXF1YWwsIHJlZ1QxLCByZWdUMCwg
cmVnVDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBK
U1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OwogfQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlz
KTsKICAgICB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CiAKLSAgICBl
bWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiAKIH0KQEAgLTc3Nyw3
ICs3NzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogICAgIHdhc05v
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKIAotICAgIGVtaXRUYWdCb29sKHJl
Z1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtODY5LDcgKzg2OSw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46CiAgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKIAogICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwgcmVnVDEpOwotICAgIGVt
aXRUYWdCb29sKHJldHVyblZhbHVlR1BSKTsKKyAgICBib3hCb29sZWFuKHJldHVyblZhbHVlR1BS
LCBKU1ZhbHVlUmVncyB7IHJldHVyblZhbHVlR1BSIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVHUFIpOwog
fQogCkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT4KIAogICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwgcmVnVDEpOwogICAgIHhvcjMy
KFRydXN0ZWRJbW0zMigweDEpLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmV0dXJuVmFsdWVH
UFIpOworICAgIGJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIEpTVmFsdWVSZWdzIHsgcmV0dXJu
VmFsdWVHUFIgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKQEAgLTkxNSw3ICs5MTUsNyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20oSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY29u
c3RydWN0b3IsIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGhhc0luc3RhbmNl
VmFsdWUsIHJlZ1QyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0
b20sIHJlZ1QwLCByZWdUMSwgcmVnVDIpOwotICAgIGVtaXRUYWdCb29sKHJldHVyblZhbHVlR1BS
KTsKKyAgICBib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCBKU1ZhbHVlUmVncyB7IHJldHVyblZh
bHVlR1BSIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQ
Uik7CiB9CiAKQEAgLTEwNDEsMTIgKzEwNDEsMTIgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhw
ckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kLCByZWdUMCk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2hJZk5vdFVuZGVm
aW5lZChyZWdUMCk7Ci0gICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc2l6ZW9mKFJlZ2lzdGVy
KSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCwgcmVnVDApOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJhbmNoMzIo
Tm90RXF1YWwsIHRhZ0ZvcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOwotICAgIGVtaXRTdG9yZShkc3QsIGpzVW5k
ZWZpbmVkKCkpOwogI2VuZGlmCisgICAgc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwg
YWRkcmVzc0Zvcihkc3QpKTsKKwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICBub3RVbmRl
ZmluZWRTY29wZS5saW5rKHRoaXMpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCAyMzUxOTczZDRmOTI2NGVlZGY4ZDU0NDY3YjM2NzZk
ZjUxOWVjZDg4Li40MTZiNWY2OTA4ZWRlMjYxZTljMzBkMDBlYTQ3ZTMzMTg0MjAxMDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC00NCwyMiArNDQs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0jaWYgVVNFKEpT
VkFMVUUzMl82NCkKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludDMyVGFnID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTVmFsdWU6OkludDMyVGFnKTsKLSNlbHNlCi0gICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBJbnQzMlRhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUYWdU
eXBlTnVtYmVyID4+IDMyKTsKLSNlbmRpZgogICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZEpT
Q2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkKTsK
ICAgICAgICAgaW5saW5lIEp1bXAgZW1pdExvYWRJbnQzMih1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0
ZXJJbmRleCwgUmVnaXN0ZXJJRCBkc3QpOwogICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZERv
dWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgRlBSZWdpc3RlcklEIGRzdCwgUmVn
aXN0ZXJJRCBzY3JhdGNoKTsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGlubGlu
ZSBKdW1wIGVtaXRKdW1wSWZOb3RKU0NlbGwodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgp
OwotICAgICAgICBpbmxpbmUgQWRkcmVzcyB0YWdGb3IoaW50IGluZGV4LCBSZWdpc3RlcklEIGJh
c2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0jZW5kaWYKLQotI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsK
ICNlbmRpZgogCiAgICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoaW50
IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rl
cik7CkBAIC02NywxMSArNTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIGludCBlbnRyeSk7CiAgICAgICAgIHZv
aWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIGludCBlbnRy
eSk7CiAKLSAgICAgICAgaW5saW5lIEFkZHJlc3MgcGF5bG9hZEZvcihpbnQgaW5kZXgsIFJlZ2lz
dGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgaW5saW5lIEFkZHJlc3Mg
aW50UGF5bG9hZEZvcihpbnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lz
dGVyKTsKLSAgICAgICAgaW5saW5lIEFkZHJlc3MgaW50VGFnRm9yKGludCBpbmRleCwgUmVnaXN0
ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBpbmxpbmUgQWRkcmVzcyBh
ZGRyZXNzRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIp
OwotCiAgICAgICAgIFZNKiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KIAogICAgICAgICBW
TSogbV92bTsKQEAgLTEwMSwyOCArODYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbG9h
ZFB0cihwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgZHN0KTsKICAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3Ioc3RhdGljX2Nhc3Q8aW50Pih2aXJ0dWFsUmVn
aXN0ZXJJbmRleCkpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICB9Ci0g
ICAgCi0gICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjp0
YWdGb3IoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAgewot
ICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVySW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7Ci0gICAgfQotICAgIAotICAgIGlubGlu
ZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6cGF5bG9hZEZvcihpbnQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsK
LSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0
dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIEpTSW50ZXJm
YWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjppbnRQYXlsb2FkRm9yKGludCB2aXJ0dWFs
UmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBh
eWxvYWRGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgsIGJhc2UpOwotICAgIH0KLQotICAgIGlubGlu
ZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6aW50VGFnRm9yKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgYmFzZSk7Ci0gICAgfQogCiAgICAgaW5s
aW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZERvdWJsZSh1
bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKQogICAgIHsKQEAgLTE2OCwzMyArMTMxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICAgICAgcmV0dXJuIG5vdE51bWJlcjsKICAgICB9
Ci0KLSAgICAvLyBvcGVyYW5kIGlzIGludDMyX3QsIG11c3QgaGF2ZSBiZWVuIHplcm8tZXh0ZW5k
ZWQgaWYgcmVnaXN0ZXIgaXMgNjQtYml0LgotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVy
ZmFjZUpJVDo6ZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAg
IHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3Qp
OwotICAgICAgICBvcjY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZGVzdCk7Ci0gICAgfQotI2Vu
ZGlmCi0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRk
cmVzcyBKU0ludGVyZmFjZUpJVDo6cGF5bG9hZEZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgs
IFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXJJ
bmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICAgICAgcmV0dXJuIGFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgsIGJhc2UpOwotICAgIH0KLQotICAgIGlubGluZSBK
U0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6aW50UGF5bG9hZEZvcihpbnQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsK
LSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0
dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwotICAgIH0KLSAgICBpbmxp
bmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OmludFRhZ0ZvcihpbnQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsK
LSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0
dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9PRkZTRVRPRihF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAgfQogI2VuZGlmCiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKGludCBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQpAQCAt
MjA1LDMzICsxNDEsMjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9t
LCBpbnQgZW50cnkpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0b3Jl
UHRyKGZyb20sIHBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgICAg
IHN0b3JlUHRyKGZyb20sIHBheWxvYWRGb3IoZW50cnkpKTsKICNlbHNlCi0gICAgICAgIHN0b3Jl
NjQoZnJvbSwgYWRkcmVzc0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAg
c3RvcmU2NChmcm9tLCBhZGRyZXNzRm9yKGVudHJ5KSk7CiAjZW5kaWYKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
cih2b2lkKiB2YWx1ZSwgaW50IGVudHJ5KQogICAgIHsKLSAgICAgICAgc3RvcmVQdHIoVHJ1c3Rl
ZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9m
KFJlZ2lzdGVyKSkpOworICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHZhbHVlKSwgYWRk
cmVzc0ZvcihlbnRyeSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVy
ZmFjZUpJVDo6ZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIGlu
dCBlbnRyeSkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgc3RvcmUzMihU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVn
aXN0ZXIpKTsKLSAgICAgICAgc3RvcmUzMihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5LCBjYWxsRnJh
bWVSZWdpc3RlcikpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgdGFnRm9yKGVudHJ5KSk7CisgICAgICAgIHN0b3JlMzIoZnJvbSwgcGF5bG9hZEZvcihl
bnRyeSkpOwogI2Vsc2UKLSAgICAgICAgc3RvcmU2NChmcm9tLCBhZGRyZXNzRm9yKGVudHJ5LCBj
YWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBzdG9yZTY0KGZyb20sIGFkZHJlc3NGb3IoZW50
cnkpKTsKICNlbmRpZgogICAgIH0KIAotICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVz
cyBKU0ludGVyZmFjZUpJVDo6YWRkcmVzc0ZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJl
Z2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRl
eCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3Mo
YmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXpl
b2YoUmVnaXN0ZXIpKSk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCmluZGV4IGYyODIzMjFhNDY5YjA1ZWVjMTllOTdkOThhYjcxYzQ3M2ZmN2YxNWQu
LjJkZGFhNWFkOWZjMjRmY2E4NzMwOTYxODUzZTU3MGYxNDQ2ZTUxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCkBAIC0xMzUsNyArMTM1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKdW1wIGxvd05vblplcm8gPSBicmFu
Y2hUZXN0UHRyKE5vblplcm8sIHJlZ1QxKTsKICAgICAgICAgICAgIEp1bXAgaGlnaE5vblplcm8g
PSBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKDApLCByZWdUMCk7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihJbnQzMlRh
ZyksIHJlZ1QxKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMy
VGFnKSwgcmVnVDEpOwogICAgICAgICAgICAgbG93Tm9uWmVyby5saW5rKHRoaXMpOwogICAgICAg
ICAgICAgaGlnaE5vblplcm8ubGluayh0aGlzKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDZlN2U2MzEzZGNmM2UwZWJjMGU4
N2VmZDYyNzBmMjM2NWVkOTAyMzEuLjc1MTNmMjJjNDI0NTNlOTYzMWQ5OWNiMzc2NDRjZWYzODY0
OWE2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKQEAgLTQ3NiwxNiArNDc2LDE2IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihWTSogdm0pCiAjICBlbmRpZgogICAgIGppdC50YWdS
ZXR1cm5BZGRyZXNzKCk7CiAjaWYgQ1BVKEFSTTY0KSAmJiBVU0UoUE9JTlRFUl9QUk9GSUxJTkcp
Ci0gICAgaml0LmxvYWRQdHIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIEdQUkluZm86OnJlZ1Qz
KTsKKyAgICBqaXQubG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQo
KSksIEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuYWRkUHRyKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGV4dHJhVGVtcCk7CiAgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1QzLCBleHRy
YVRlbXApOwogICAgIFB0clRhZyB0ZW1wUmV0dXJuUENUYWcgPSBzdGF0aWNfY2FzdDxQdHJUYWc+
KHJhbmRvbSgpKTsKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cih0
ZW1wUmV0dXJuUENUYWcpLCBleHRyYVRlbXApOwogICAgIGppdC50YWdQdHIoR1BSSW5mbzo6cmVn
VDMsIGV4dHJhVGVtcCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QzLCBKU0ludGVy
ZmFjZUpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpy
ZXR1cm5QQ09mZnNldCgpKSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QzLCBhZGRy
ZXNzRm9yKENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlmCiAgICAgaml0Lm1v
dmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VK
SVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5s
b2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihKU0lu
dGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
KSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4gdXNlCkBAIC01MzIsMTIgKzUzMiwxMiBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3Io
Vk0qIHZtKQogICAgIGRvbmUubGluaygmaml0KTsKIAogI2lmIENQVShBUk02NCkgJiYgVVNFKFBP
SU5URVJfUFJPRklMSU5HKQotICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWU6
OnJldHVyblBDT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIodGVtcFJldHVyblBDVGFnKSwgZXh0cmFUZW1wKTsKICAg
ICBqaXQudW50YWdQdHIoR1BSSW5mbzo6cmVnVDMsIGV4dHJhVGVtcCk7CiAgICAgaml0LmFkZFB0
cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBleHRyYVRlbXApOwogICAgIGppdC50YWdQdHIo
R1BSSW5mbzo6cmVnVDMsIGV4dHJhVGVtcCk7Ci0gICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QzLCBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
Q2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSk7CisgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OnJlZ1QzLCBhZGRyZXNzRm9yKENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlm
CiAKICMgIGlmIENQVShYODZfNjQpCkBAIC01NDksNyArNTQ5LDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNKiB2bSkKICAgICBq
aXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBlbmRpZgogICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QzKTsK
LSAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHNpemVvZihS
ZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKKyAgICBqaXQubG9hZDMy
KGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEpTSW50ZXJmYWNlSklU
Ojphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZElt
bTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSwgSlNJbnRlcmZhY2VKSVQ6OmFy
Z3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBzbG90
cyB3ZSBjYW4gdXNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340843</attachid>
            <date>2018-05-21 05:55:57 -0700</date>
            <delta_ts>2018-05-21 06:13:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185813-20180521215556.patch</filename>
            <type>text/plain</type>
            <size>30635</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTlmYTI4ZGYxN2U4ODEwODllZGVjZjAzMTJlZmM4MTQxOGQ2NWY4Li4yMDhkOTVmNzU4OTViNzY3
ZmJjZjcyMTI1ZjA2NzE1YWYzN2M3OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAxOC0wNS0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgZHVwbGljYXRlIG1ldGhvZHMgaW4gSlNJbnRl
cmZhY2VKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWUgbWV0aG9kcyBvZiBKU0ludGVyZmFjZUpJVCBhcmUgZHVwbGljYXRlIHdpdGggQXNzZW1i
bHlIZWxwZXJzJyBvbmVzLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlc2Ugb25lcyBh
bmQgdXNlIEFzc2VtYmx5SGVscGVycycgb25lcyBpbnN0ZWFkLgorCisgICAgICAgICogaml0L0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcik6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcik6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Vuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X2NvbXBh
cmVVbnNpZ25lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6
CisgICAgICAgICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29t
cGlsZU9wQ2FsbCk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0UHV0SW50VG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OnVw
ZGF0ZVRvcENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEluaXRSZWdpc3Rlcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
dG9yZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlSW50MzIpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTdG9yZUNlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTdG9yZUJvb2wp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRUYWdCb29sKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2lzX2VtcHR5KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2lzX3VuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19ib29sZWFuKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX251bWJlcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9pc19jZWxsX3dpdGhfdHlwZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pc19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJp
Y3RFcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQu
aDoKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkSW50MzIpOgorICAgICAg
ICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpK
U0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6
SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAo
SlNDOjpKU0ludGVyZmFjZUpJVDo6dGFnRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJ
bnRlcmZhY2VKSVQ6OnBheWxvYWRGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVy
ZmFjZUpJVDo6aW50UGF5bG9hZEZvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSW50ZXJm
YWNlSklUOjppbnRUYWdGb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJ
VDo6ZW1pdFRhZ0ludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjph
ZGRyZXNzRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
OgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpyZXR1cm5Eb3VibGUpOgorICAg
ICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjphcml0eUZpeHVw
R2VuZXJhdG9yKToKKwogMjAxOC0wNS0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmVydCB0aGUgQjMgY29tcGlsZXIgcGlwZWxpbmUncyB0cmVhdG1lbnQg
b2YgdGFpbGR1cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgK
aW5kZXggNTYyNTE5OTFhYzkxMTU0ZDY5Yzc3ZjE0YmFmNmU5ZmMzYmI3ZDA5MS4uZTNhOGJhNzZl
Yjc5Mzk0YmE4MzcwOWI4YWI2MTQyMGQ0NDdkNGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC0xMDkxLDYgKzEwOTEsMTEgQEAgY2xhc3MgQXNz
ZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgcmV0dXJuIGFk
ZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7CiAgICAgfQog
CisgICAgc3RhdGljIEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIsIEdQUlJlZyBiYXNlR1BSKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rl
ci5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlR1BSLCB2aXJ0dWFsUmVn
aXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpICsgVGFnT2Zmc2V0KTsKKyAgICB9CiAg
ICAgc3RhdGljIEFkZHJlc3MgdGFnRm9yKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIp
CiAgICAgewogICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKSk7CkBAIC0x
MTAxLDYgKzExMDYsMTEgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3JvQXNz
ZW1ibGVyIHsKICAgICAgICAgcmV0dXJuIHRhZ0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0
ZXI+KG9wZXJhbmQpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9yKFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIsIEdQUlJlZyBiYXNlR1BSKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOworICAgICAgICByZXR1cm4g
QWRkcmVzcyhiYXNlR1BSLCB2aXJ0dWFsUmVnaXN0ZXIub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0
ZXIpICsgUGF5bG9hZE9mZnNldCk7CisgICAgfQogICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRG
b3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICB7CiAgICAgICAgIEFTU0VS
VCh2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4
IGI5NmFhMjI0MzNhYWJkYTUwZWE4ZGE5ZjNhOTk1ZDkwNGI3OTc5NTcuLmMzODUyMjIyYzVhYTEy
NDhiZDYwMTI3M2E2YmQyMWJjNGNmOTUxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAt
NDQ5LDggKzQ0OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdE51bWJlcihSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbnQoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsK
IAotICAgICAgICB2b2lkIGVtaXRUYWdCb29sKFJlZ2lzdGVySUQpOwotCiAgICAgICAgIHZvaWQg
Y29tcGlsZUdldEJ5SWRIb3RQYXRoKGludCBiYXNlVlJlZywgY29uc3QgSWRlbnRpZmllciopOwog
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEFyaXRobWV0aWMuY3BwCmluZGV4IDJiM2ZlOTBjY2VjZmE5YTM2MDA4ZDAwNGM0OWQwOGM2
ODMyODg3ZTMuLjM5ODFkMDM4ODE4OTcxM2Y2YjViNTVkZTZhNTUwYmUwMDI0ZTAyNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcApAQCAtMjQxLDcgKzI0
MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVkKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMy
KExlc3NUaGFuLCByZWdUMCwgVHJ1c3RlZEltbTMyKDApKSk7Ci0gICAgZW1pdFRhZ0ludChyZWdU
MCwgcmVnVDApOworICAgIGJveEludDMyKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0LCByZWdUMCk7CiB9CiAKQEAgLTMyMiw3
ICszMjIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlVW5zaWduZWQoaW50IGRzdCwgaW50IG9w
MSwgaW50IG9wMiwgUmVsYXRpb25hbENvbmRpdGlvbiBjbwogICAgICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVycyhvcDEsIHJlZ1QwLCBvcDIsIHJlZ1QxKTsKICAgICAgICAgY29tcGFyZTMyKGNv
bmRpdGlvbiwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CiAgICAgfQotICAgIGVtaXRUYWdCb29sKHJl
Z1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtNDM0LDcgKzQzNCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2luYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVyZmxv
dywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMCkpOwotICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1Qw
KTsKKyAgICBib3hJbnQzMihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCk7CiB9CiAKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEludChyZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3ViMzIoT3ZlcmZsb3cs
IFRydXN0ZWRJbW0zMigxKSwgcmVnVDApKTsKLSAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7
CisgICAgYm94SW50MzIocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihzcmNEc3QpOwogfQogCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSnVt
cCBudW1lcmF0b3JQb3NpdGl2ZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVnVDQs
IFRydXN0ZWRJbW0zMigwKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDMyKFplcm8sIGVk
eCkpOwogICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmsodGhpcyk7Ci0gICAgZW1pdFRhZ0ludChl
ZHgsIHJlZ1QwKTsKKyAgICBib3hJbnQzMihlZHgsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKaW5kZXggZDFlZmJlOTdkNTU3YjMwMTFiNjRlYjg1
Yjc5MmEwZWUwODZlMDZkYy4uODhiZWYxMmNlYjk1NjhiYmFjODY4ODQ5ZDgyNDVlY2YyMmI3ZTAx
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMjYx
LDcgKzI2MSw3IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUlELCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2lnbmVkIGNhCiAgICAgfSAvLyBTUCBob2xkcyBu
ZXdDYWxsRnJhbWUgKyBzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQyksIHdpdGggQXJndW1lbnRDb3Vu
dCBpbml0aWFsaXplZC4KICAgICAKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0
ZUluZGV4KGluc3RydWN0aW9uKS5iaXRzKCk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9j
YXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQsIGNhbGxGcmFt
ZVJlZ2lzdGVyKSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFn
Rm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICBlbWl0TG9hZChjYWxsZWUs
IHJlZ1QxLCByZWdUMCk7IC8vIHJlZ1QxLCByZWdUMCBob2xkcyBjYWxsZWUuCiAKICAgICBzdG9y
ZTMyKHJlZ1QwLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojpj
YWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNl
dCAtIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAppbmRleCA5YTRiNzM3Yzg0YWFkZTZkYTM3YzM3MWQ4NTY3ZWVjOWVmNTA2MDU1
Li5kYjc5OTNiMWIyZDFmMjJkNDkxZTE3OGI4YWVkMDIyMWZhNDRkNDlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtOTAsMTAgKzkwLDEwIEBAIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBKSVQ6OmdldENvbnN0YW50T3BlcmFuZChpbnQgc3JjKQogQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdFB1dEludFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwg
aW50IGVudHJ5KQogewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoSW50MzJUYWcpLCBpbnRUYWdGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7Ci0g
ICAgc3RvcmUzMihmcm9tLCBpbnRQYXlsb2FkRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3Rlcikp
OworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgdGFnRm9yKGVu
dHJ5KSk7CisgICAgc3RvcmUzMihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5KSk7CiAjZWxzZQotICAg
IHN0b3JlNjQoZnJvbSwgYWRkcmVzc0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAg
ICBzdG9yZTY0KGZyb20sIGFkZHJlc3NGb3IoZW50cnkpKTsKICNlbmRpZgogfQogCkBAIC0xNDEs
NyArMTQxLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKCkK
ICNlbHNlCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlT2Zmc2V0KS5iaXRzKCk7CiAjZW5kaWYKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2Nh
dGlvbkJpdHMpLCBpbnRUYWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOworICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVTbG90
Ojphcmd1bWVudENvdW50KSk7CiAgICAgCiAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRo
YXQgdGhpcyBpcyBuZWVkZWQuIEpJVE9wZXJhdGlvbnMgdGVuZCB0byB1cGRhdGUgdGhlIHRvcCBj
YWxsIGZyYW1lIG9uCiAgICAgLy8gdGhlIEMrKyBzaWRlLgpAQCAtMzk2LDYgKzM5NiwxMSBAQCBB
TFdBWVNfSU5MSU5FIGRvdWJsZSBKSVQ6OmdldE9wZXJhbmRDb25zdGFudERvdWJsZShpbnQgc3Jj
KQogICAgIHJldHVybiBnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0RvdWJsZSgpOwogfQogCitB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SW5pdFJlZ2lzdGVyKGludCBkc3QpCit7CisgICAg
c3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgYWRkcmVzc0Zvcihkc3QpKTsKK30KKwog
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdExvYWRUYWcoaW50
IGluZGV4LCBSZWdpc3RlcklEIHRhZykKQEAgLTQ0NSwxNCArNDUwLDE1IEBAIGlubGluZSB2b2lk
IEpJVDo6ZW1pdExvYWQoaW50IGluZGV4LCBSZWdpc3RlcklEIHRhZywgUmVnaXN0ZXJJRCBwYXls
b2FkLCBSZWdpc3RlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgdGFyZ2V0IHsgaW5kZXggfTsKICAgICBpZiAocGF5bG9hZCA9PSBiYXNlKSB7IC8vIGF2b2lk
IHN0b21waW5nIGJhc2UKLSAgICAgICAgbG9hZDMyKHRhZ0ZvcihpbmRleCwgYmFzZSksIHRhZyk7
Ci0gICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKGluZGV4LCBiYXNlKSwgcGF5bG9hZCk7CisgICAg
ICAgIGxvYWQzMih0YWdGb3IodGFyZ2V0LCBiYXNlKSwgdGFnKTsKKyAgICAgICAgbG9hZDMyKHBh
eWxvYWRGb3IodGFyZ2V0LCBiYXNlKSwgcGF5bG9hZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBsb2FkMzIocGF5bG9hZEZvcihpbmRleCwgYmFzZSksIHBheWxvYWQpOwotICAgIGxv
YWQzMih0YWdGb3IoaW5kZXgsIGJhc2UpLCB0YWcpOworICAgIGxvYWQzMihwYXlsb2FkRm9yKHRh
cmdldCwgYmFzZSksIHBheWxvYWQpOworICAgIGxvYWQzMih0YWdGb3IodGFyZ2V0LCBiYXNlKSwg
dGFnKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZDIoaW50IGluZGV4MSwgUmVnaXN0
ZXJJRCB0YWcxLCBSZWdpc3RlcklEIHBheWxvYWQxLCBpbnQgaW5kZXgyLCBSZWdpc3RlcklEIHRh
ZzIsIFJlZ2lzdGVySUQgcGF5bG9hZDIpCkBAIC00ODIsMzYgKzQ4OCwzNyBAQCBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1
ZSkKIAogaW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmUoaW50IGluZGV4LCBSZWdpc3RlcklEIHRh
ZywgUmVnaXN0ZXJJRCBwYXlsb2FkLCBSZWdpc3RlcklEIGJhc2UpCiB7Ci0gICAgc3RvcmUzMihw
YXlsb2FkLCBwYXlsb2FkRm9yKGluZGV4LCBiYXNlKSk7Ci0gICAgc3RvcmUzMih0YWcsIHRhZ0Zv
cihpbmRleCwgYmFzZSkpOworICAgIFZpcnR1YWxSZWdpc3RlciB0YXJnZXQgeyBpbmRleCB9Owor
ICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcih0YXJnZXQsIGJhc2UpKTsKKyAgICBzdG9y
ZTMyKHRhZywgdGFnRm9yKHRhcmdldCwgYmFzZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRTdG9yZUludDMyKGludCBpbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkLCBib29sIGluZGV4SXNJ
bnQzMikKIHsKLSAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgsIGNhbGxGcmFt
ZVJlZ2lzdGVyKSk7CisgICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKGluZGV4KSk7CiAg
ICAgaWYgKCFpbmRleElzSW50MzIpCi0gICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSwgdGFnRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHRhZ0ZvcihpbmRleCkp
OwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZUludDMyKGludCBpbmRleCwgVHJ1c3Rl
ZEltbTMyIHBheWxvYWQsIGJvb2wgaW5kZXhJc0ludDMyKQogewotICAgIHN0b3JlMzIocGF5bG9h
ZCwgcGF5bG9hZEZvcihpbmRleCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMyKHBh
eWxvYWQsIHBheWxvYWRGb3IoaW5kZXgpKTsKICAgICBpZiAoIWluZGV4SXNJbnQzMikKLSAgICAg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCB0YWdGb3IoaW5kZXgs
IGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkludDMyVGFnKSwgdGFnRm9yKGluZGV4KSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1p
dFN0b3JlQ2VsbChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCwgYm9vbCBpbmRleElzQ2Vs
bCkKIHsKLSAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgsIGNhbGxGcmFtZVJl
Z2lzdGVyKSk7CisgICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKGluZGV4KSk7CiAgICAg
aWYgKCFpbmRleElzQ2VsbCkKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZyksIHRhZ0ZvcihpbmRleCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHRhZ0ZvcihpbmRleCkpOwogfQog
CiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZUJvb2woaW50IGluZGV4LCBSZWdpc3RlcklEIHBh
eWxvYWQsIGJvb2wgaW5kZXhJc0Jvb2wpCiB7Ci0gICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2Fk
Rm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5
bG9hZEZvcihpbmRleCkpOwogICAgIGlmICghaW5kZXhJc0Jvb2wpCi0gICAgICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpLCB0YWdGb3IoaW5kZXgsIGNhbGxGcmFt
ZVJlZ2lzdGVyKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xl
YW5UYWcpLCB0YWdGb3IoaW5kZXgpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmVE
b3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCkBAIC01MjEsMTMgKzUyOCw5IEBA
IGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlRG91YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklE
IHZhbHVlKQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZShpbnQgaW5kZXgsIGNvbnN0IEpT
VmFsdWUgY29uc3RhbnQsIFJlZ2lzdGVySUQgYmFzZSkKIHsKLSAgICBzdG9yZTMyKEltbTMyKGNv
bnN0YW50LnBheWxvYWQoKSksIHBheWxvYWRGb3IoaW5kZXgsIGJhc2UpKTsKLSAgICBzdG9yZTMy
KEltbTMyKGNvbnN0YW50LnRhZygpKSwgdGFnRm9yKGluZGV4LCBiYXNlKSk7Ci19Ci0KLUFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRJbml0UmVnaXN0ZXIoaW50IGRzdCkKLXsKLSAgICBlbWl0
U3RvcmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0IHsg
aW5kZXggfTsKKyAgICBzdG9yZTMyKEltbTMyKGNvbnN0YW50LnBheWxvYWQoKSksIHBheWxvYWRG
b3IodGFyZ2V0LCBiYXNlKSk7CisgICAgc3RvcmUzMihJbW0zMihjb25zdGFudC50YWcoKSksIHRh
Z0Zvcih0YXJnZXQsIGJhc2UpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4KQpAQCAtNTg5LDcgKzU5Miw3
IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoaW50IHNy
YywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBsb2FkNjQo
QWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgc3JjICogc2l6ZW9mKFJlZ2lzdGVyKSksIGRzdCk7
CisgICAgbG9hZDY0KGFkZHJlc3NGb3Ioc3JjKSwgZHN0KTsKIH0KIAogQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihpbnQgc3JjLCBKU1ZhbHVlUmVncyBkc3Qp
CkBAIC02MjAsNyArNjIzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29u
c3RhbnRJbnQoaW50IHNyYykKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihpbnQgZHN0LCBSZWdpc3RlcklEIGZyb20pCiB7Ci0gICAgc3RvcmU2NChmcm9t
LCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBkc3QgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Cisg
ICAgc3RvcmU2NChmcm9tLCBhZGRyZXNzRm9yKGRzdCkpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGludCBkc3QsIEpTVmFsdWVSZWdzIGZyb20p
CkBAIC02MzMsMTEgKzYzNiw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIGRzdCwgUmVnaXN0ZXJJRCBmCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3Qub2Zmc2V0KCksIGZyb20pOwogfQogCi1BTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0SW5pdFJlZ2lzdGVyKGludCBkc3QpCi17Ci0gICAgc3RvcmU2NChUcnVz
dGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJh
bWVSZWdpc3RlciwgZHN0ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotfQotCiBBTFdBWVNfSU5MSU5F
IEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZCb3RoSlNDZWxscyhSZWdpc3RlcklEIHJlZzEsIFJl
Z2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogewogICAgIG1vdmUocmVnMSwgc2Ny
YXRjaCk7CkBAIC03MDYsMTEgKzcwNCw2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRK
dW1wU2xvd0Nhc2VJZk5vdE51bWJlcihSZWdpc3RlcklEIHJlZykKICAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdE51bWJlcihyZWcpKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dFRhZ0Jvb2woUmVnaXN0ZXJJRCByZWcpCi17Ci0gICAgb3IzMihUcnVzdGVkSW1tMzIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWcpOwotfQotCiBpbmxpbmUgSW5zdHJ1Y3Rp
b24qIEpJVDo6Y29waWVkSW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24qIGluc3QpCiB7CiAgICAgcmV0
dXJuICZtX2luc3RydWN0aW9uc1ttX2NvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoaW5zdCldOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggODg0NmIyNGFmZWM3
MmVhZWQ0ZjNlN2NmOTk0MzViNWJmOTlmNzA1NC4uYzZmMTI1ODJiZWIwY2E5MjlhNWZlZjhmNDUx
Y2IzOTg0YWQ3ZTIyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0
YW5jZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgLy8gQ2hlY2sgdGhh
dCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScgaS5lLiB0aGUgb2Jq
ZWN0IGlzIG5vdCBhIEMtQVBJIHVzZXIgbm9yIGEgYm91bmQgZnVuY3Rpb24uCiAgICAgdGVzdDgo
WmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSksIHJlZ1QwKTsKLSAgICBlbWl0
VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdU
MCB9KTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKICAgICBjdXN0b21oYXNJbnN0YW5jZVZh
bHVlLmxpbmsodGhpcyk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
ZW1wdHkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpKSwgcmVnVDApOwogCi0gICAgZW1p
dFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVn
VDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC0yMTksNyAr
MjE5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhp
cyk7CiAgICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2lzX2Jvb2xlYW4oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgeG9yNjQoVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVnVDApOwogICAgIHRlc3Q2NCha
ZXJvLCByZWdUMCwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSksIHJlZ1Qw
KTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1
ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAK
QEAgLTI0Miw3ICsyNDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19udW1iZXIoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7CiAgICAgdGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVh
bihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCk7CiB9CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19j
ZWxsX3dpdGhfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEp1bXAg
aXNOb3RDZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIGNvbXBhcmU4KEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKHR5cGUpLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xl
YW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgSnVtcCBkb25lID0ganVtcCgp
OwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfb2JqZWN0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgSnVtcCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgY29tcGFy
ZTgoQWJvdmVPckVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wo
cmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAg
ICAgSnVtcCBkb25lID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CkBAIC00
MTYsNyArNDE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwg
cmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCwgcmVnVDEsIHJlZ1Qy
KTsKICAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGVtaXRU
YWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1Qw
IH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiB9CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCwgY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElu
dChyZWdUMCwgcmVnVDEsIHJlZ1QyKTsKICAgICBjb21wYXJlMzIoTm90RXF1YWwsIHJlZ1QxLCBy
ZWdUMCwgcmVnVDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJl
Z1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KQEAgLTQ5NCw3ICs0OTQsNyBA
QCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgQ29tcGlsZU9wU3RyaWN0RXFUeQogICAgICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1Qx
LCByZWdUMCwgcmVnVDApOwogICAgIGVsc2UKICAgICAgICAgY29tcGFyZTY0KE5vdEVxdWFsLCBy
ZWdUMSwgcmVnVDAsIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKIAogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0KTsKIH0KQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9l
cV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgd2FzTm90SW1tZWRp
YXRlLmxpbmsodGhpcyk7CiAgICAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRo
aXMpOwogCi0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpT
VmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwog
CiB9CkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlz
KTsKICAgICB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CiAKLSAgICBl
bWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTg2OSw3
ICs4NjksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OgogICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CiAKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVFcSwgcmVnVDAsIHJl
Z1QxKTsKLSAgICBlbWl0VGFnQm9vbChyZXR1cm5WYWx1ZUdQUik7CisgICAgYm94Qm9vbGVhbihy
ZXR1cm5WYWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgeyByZXR1cm5WYWx1ZUdQUiB9KTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVy
blZhbHVlR1BSKTsKIH0KIApAQCAtODc5LDcgKzg3OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9uZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+CiAKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVFcSwgcmVnVDAsIHJlZ1Qx
KTsKICAgICB4b3IzMihUcnVzdGVkSW1tMzIoMHgxKSwgcmVnVDApOwotICAgIGVtaXRUYWdCb29s
KHJldHVyblZhbHVlR1BSKTsKKyAgICBib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCBKU1ZhbHVl
UmVncyB7IHJldHVyblZhbHVlR1BSIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCkBAIC05
MTUsNyArOTE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjwKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGNvbnN0cnVjdG9yLCByZWdUMSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihoYXNJbnN0YW5jZVZhbHVlLCByZWdUMik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25J
bnN0YW5jZU9mQ3VzdG9tLCByZWdUMCwgcmVnVDEsIHJlZ1QyKTsKLSAgICBlbWl0VGFnQm9vbChy
ZXR1cm5WYWx1ZUdQUik7CisgICAgYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgSlNWYWx1ZVJl
Z3MgeyByZXR1cm5WYWx1ZUdQUiB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwg
cmV0dXJuVmFsdWVHUFIpOwogfQogCkBAIC0xMDQxLDEyICsxMDQxLDEyIEBAIHZvaWQgSklUOjpl
bWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogICAgIG5vdFVuZGVmaW5lZFNjb3BlID0gYnJh
bmNoSWZOb3RVbmRlZmluZWQocmVnVDApOwotICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIHNp
emVvZihSZWdpc3RlcikgKiBkc3QpKTsKICNlbHNlCiAgICAgZW1pdExvYWRQYXlsb2FkKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwKTsKICAgICBub3RVbmRlZmluZWRTY29w
ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKLSAgICBlbWl0U3Rv
cmUoZHN0LCBqc1VuZGVmaW5lZCgpKTsKICNlbmRpZgorICAgIHN0b3JlVHJ1c3RlZFZhbHVlKGpz
VW5kZWZpbmVkKCksIGFkZHJlc3NGb3IoZHN0KSk7CisKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7
CiAgICAgbm90VW5kZWZpbmVkU2NvcGUubGluayh0aGlzKTsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKaW5kZXggMjM1MTk3M2Q0ZjkyNjRlZWRm
OGQ1NDQ2N2IzNjc2ZGY1MTllY2Q4OC4uNDE2YjVmNjkwOGVkZTI2MWU5YzMwZDAwZWE0N2UzMzE4
NDIwMTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFj
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApA
QCAtNDQsMjIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0K
IAotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnQzMlRhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlOjpJbnQzMlRhZyk7Ci0jZWxz
ZQotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW50MzJUYWcgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oVGFnVHlwZU51bWJlciA+PiAzMik7Ci0jZW5kaWYKICAgICAgICAgaW5saW5lIEp1
bXAgZW1pdExvYWRKU0NlbGwodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVy
SUQgcGF5bG9hZCk7CiAgICAgICAgIGlubGluZSBKdW1wIGVtaXRMb2FkSW50MzIodW5zaWduZWQg
dmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgZHN0KTsKICAgICAgICAgaW5saW5lIEp1
bXAgZW1pdExvYWREb3VibGUodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIEZQUmVnaXN0
ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgICAgICBpbmxpbmUgSnVtcCBlbWl0SnVtcElmTm90SlNDZWxsKHVuc2lnbmVkIHZpcnR1YWxS
ZWdpc3RlckluZGV4KTsKLSAgICAgICAgaW5saW5lIEFkZHJlc3MgdGFnRm9yKGludCBpbmRleCwg
UmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotI2VuZGlmCi0KLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICB2b2lkIGVtaXRUYWdJbnQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCk7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKGludCBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2Fs
bEZyYW1lUmVnaXN0ZXIpOwpAQCAtNjcsMTEgKzU3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBpbnQgZW50cnkp
OwogICAgICAgICB2b2lkIGVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBm
cm9tLCBpbnQgZW50cnkpOwogCi0gICAgICAgIGlubGluZSBBZGRyZXNzIHBheWxvYWRGb3IoaW50
IGluZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGlu
bGluZSBBZGRyZXNzIGludFBheWxvYWRGb3IoaW50IGluZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBj
YWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGlubGluZSBBZGRyZXNzIGludFRhZ0ZvcihpbnQg
aW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgaW5s
aW5lIEFkZHJlc3MgYWRkcmVzc0ZvcihpbnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxG
cmFtZVJlZ2lzdGVyKTsKLQogICAgICAgICBWTSogdm0oKSBjb25zdCB7IHJldHVybiBtX3ZtOyB9
CiAKICAgICAgICAgVk0qIG1fdm07CkBAIC0xMDEsMjggKzg2LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGxvYWRQdHIocGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCksIGRzdCk7
CiAgICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9yKHN0YXRpY19jYXN0PGlu
dD4odmlydHVhbFJlZ2lzdGVySW5kZXgpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFn
KSk7CiAgICAgfQotICAgIAotICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0lu
dGVyZmFjZUpJVDo6dGFnRm9yKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBi
YXNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3RlckluZGV4IDwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1YWxSZWdpc3RlckluZGV4KSAqIHNpemVvZihSZWdpc3Rl
cikpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpOwotICAgIH0KLSAg
ICAKLSAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OnBh
eWxvYWRGb3IoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVySW5kZXggPCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpOwotICAgIH0KLQotICAgIGlu
bGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6aW50UGF5bG9hZEZv
cihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4LCBiYXNlKTsKLSAgICB9
Ci0KLSAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6Omlu
dFRhZ0ZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0YWdGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgsIGJhc2UpOwotICAg
IH0KIAogICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1p
dExvYWREb3VibGUodW5zaWduZWQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIEZQUmVnaXN0ZXJJRCBk
c3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7CkBAIC0xNjgsMzMgKzEzMSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAgIHJldHVybiBub3RO
dW1iZXI7CiAgICAgfQotCi0gICAgLy8gb3BlcmFuZCBpcyBpbnQzMl90LCBtdXN0IGhhdmUgYmVl
biB6ZXJvLWV4dGVuZGVkIGlmIHJlZ2lzdGVyIGlzIDY0LWJpdC4KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRUYWdJbnQoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1v
dmUoc3JjLCBkZXN0KTsKLSAgICAgICAgb3I2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGRlc3Qp
OwotICAgIH0KLSNlbmRpZgotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpbmxpbmUgSlNJbnRl
cmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OnBheWxvYWRGb3IoaW50IHZpcnR1YWxS
ZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAgewotICAgICAgICBBU1NFUlQodmly
dHVhbFJlZ2lzdGVySW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAg
IHJldHVybiBhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4LCBiYXNlKTsKLSAgICB9Ci0K
LSAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OmludFBh
eWxvYWRGb3IoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVySW5kZXggPCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsKLSAg
ICB9Ci0gICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjpp
bnRUYWdGb3IoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAg
ewotICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVySW5kZXggPCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkgKyBPQkpF
Q1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykpOwotICAgIH0K
ICNlbmRpZgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihpbnQgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVy
SUQgZnJvbSkKQEAgLTIwNSwzMyArMTQxLDI3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJl
Z2lzdGVySUQgZnJvbSwgaW50IGVudHJ5KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQot
ICAgICAgICBzdG9yZVB0cihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3Rl
cikpOworICAgICAgICBzdG9yZVB0cihmcm9tLCBwYXlsb2FkRm9yKGVudHJ5KSk7CiAjZWxzZQot
ICAgICAgICBzdG9yZTY0KGZyb20sIGFkZHJlc3NGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVy
KSk7CisgICAgICAgIHN0b3JlNjQoZnJvbSwgYWRkcmVzc0ZvcihlbnRyeSkpOwogI2VuZGlmCiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIGludCBlbnRyeSkKICAgICB7Ci0gICAgICAgIHN0
b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBl
bnRyeSAqIHNpemVvZihSZWdpc3RlcikpKTsKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0
cih2YWx1ZSksIGFkZHJlc3NGb3IoZW50cnkpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRDZWxsVG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0
ZXJJRCBmcm9tLCBpbnQgZW50cnkpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAg
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0YWdGb3IoZW50cnks
IGNhbGxGcmFtZVJlZ2lzdGVyKSk7Ci0gICAgICAgIHN0b3JlMzIoZnJvbSwgcGF5bG9hZEZvcihl
bnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZyksIHRhZ0ZvcihlbnRyeSkpOworICAgICAgICBzdG9yZTMyKGZyb20s
IHBheWxvYWRGb3IoZW50cnkpKTsKICNlbHNlCi0gICAgICAgIHN0b3JlNjQoZnJvbSwgYWRkcmVz
c0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAgc3RvcmU2NChmcm9tLCBh
ZGRyZXNzRm9yKGVudHJ5KSk7CiAjZW5kaWYKICAgICB9CiAKLSAgICBpbmxpbmUgSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IoaW50IHZpcnR1YWxSZWdp
c3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAgewotICAgICAgICBBU1NFUlQodmlydHVh
bFJlZ2lzdGVySW5kZXggPCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgIHJl
dHVybiBBZGRyZXNzKGJhc2UsIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVy
SW5kZXgpICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwotICAgIH0KLQogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1NwZWNpYWxpemVkVGh1bmtKSVQuaAppbmRleCBmMjgyMzIxYTQ2OWIwNWVlYzE5ZTk3ZDk4YWI3
MWM0NzNmZjdmMTVkLi4yZGRhYTVhZDlmYzI0ZmNhODczMDk2MTg1M2U1NzBmMTQ0NmU1MTY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApA
QCAtMTM1LDcgKzEzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSnVtcCBsb3dO
b25aZXJvID0gYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMSk7CiAgICAgICAgICAgICBKdW1w
IGhpZ2hOb25aZXJvID0gYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCk7CiAgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwotICAgICAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoSW50MzJUYWcpLCByZWdUMSk7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpJbnQzMlRhZyksIHJlZ1QxKTsKICAgICAgICAgICAgIGxvd05vblplcm8ubGluayh0
aGlzKTsKICAgICAgICAgICAgIGhpZ2hOb25aZXJvLmxpbmsodGhpcyk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCA2ZTdlNjMx
M2RjZjNlMGViYzBlODdlZmQ2MjcwZjIzNjVlZDkwMjMxLi43NTEzZjIyYzQyNDUzZTk2MzFkOTlj
YjM3NjQ0Y2VmMzg2NDlhNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCkBAIC00NzYsMTYgKzQ3NiwxNiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0qIHZtKQogIyAgZW5kaWYK
ICAgICBqaXQudGFnUmV0dXJuQWRkcmVzcygpOwogI2lmIENQVShBUk02NCkgJiYgVVNFKFBPSU5U
RVJfUFJPRklMSU5HKQotICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpLCBH
UFJJbmZvOjpyZWdUMyk7CisgICAgaml0LmxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWU6OnJl
dHVyblBDT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMyk7CiAgICAgaml0LmFkZFB0cihKU0ludGVy
ZmFjZUpJVDo6VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBleHRyYVRlbXApOwogICAgIGppdC51bnRhZ1B0cihHUFJJbmZv
OjpyZWdUMywgZXh0cmFUZW1wKTsKICAgICBQdHJUYWcgdGVtcFJldHVyblBDVGFnID0gc3RhdGlj
X2Nhc3Q8UHRyVGFnPihyYW5kb20oKSk7CiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW1QdHIodGVtcFJldHVyblBDVGFnKSwgZXh0cmFUZW1wKTsKICAgICBqaXQudGFnUHRy
KEdQUkluZm86OnJlZ1QzLCBleHRyYVRlbXApOwotICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpy
ZWdUMywgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOworICAgIGppdC5zdG9yZVB0cihHUFJJbmZv
OjpyZWdUMywgYWRkcmVzc0ZvcihDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0KCkpKTsKICNlbmRp
ZgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QzKTsKLSAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
KEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJndW1l
bnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIy
KTsKKyAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjphZGRyZXNzRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKICAgICBq
aXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OmhlYWRlclNp
emVJblJlZ2lzdGVycyksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogCiAgICAgLy8g
Q2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgZXh0cmEgc2xvdHMgd2UgY2FuIHVzZQpAQCAtNTMyLDEy
ICs1MzIsMTIgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcml0eUZp
eHVwR2VuZXJhdG9yKFZNKiB2bSkKICAgICBkb25lLmxpbmsoJmppdCk7CiAKICNpZiBDUFUoQVJN
NjQpICYmIFVTRShQT0lOVEVSX1BST0ZJTElORykKLSAgICBqaXQubG9hZFB0cihKU0ludGVyZmFj
ZUpJVDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1
cm5QQ09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDMpOworICAgIGppdC5sb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKHRlbXBSZXR1cm5QQ1RhZyksIGV4
dHJhVGVtcCk7CiAgICAgaml0LnVudGFnUHRyKEdQUkluZm86OnJlZ1QzLCBleHRyYVRlbXApOwog
ICAgIGppdC5hZGRQdHIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVy
RnJhbWVBbmRQQykpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZXh0cmFUZW1wKTsKICAg
ICBqaXQudGFnUHRyKEdQUkluZm86OnJlZ1QzLCBleHRyYVRlbXApOwotICAgIGppdC5zdG9yZVB0
cihHUFJJbmZvOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOworICAgIGppdC5zdG9y
ZVB0cihHUFJJbmZvOjpyZWdUMywgYWRkcmVzc0ZvcihDYWxsRnJhbWU6OnJldHVyblBDT2Zmc2V0
KCkpKTsKICNlbmRpZgogCiAjICBpZiBDUFUoWDg2XzY0KQpAQCAtNTQ5LDcgKzU0OSw3IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihW
TSogdm0pCiAgICAgaml0LnBvcChKU0ludGVyZmFjZUpJVDo6cmVnVDQpOwogIyAgZW5kaWYKICAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNl
SklUOjpyZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhKU0lu
dGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291
bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7Cisg
ICAgaml0LmxvYWQzMihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpLCBK
U0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW0zMihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycyksIEpTSW50
ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhh
dmUgZXh0cmEgc2xvdHMgd2UgY2FuIHVzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340846</attachid>
            <date>2018-05-21 06:13:19 -0700</date>
            <delta_ts>2018-05-21 17:21:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185813-20180521221318.patch</filename>
            <type>text/plain</type>
            <size>30529</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTlmYTI4ZGYxN2U4ODEwODllZGVjZjAzMTJlZmM4MTQxOGQ2NWY4Li4wZGJjZTFmNzg3YzBlMDI4
YWZhZmM3YTg5YzEyMGE3ZTBkNWM0MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOC0wNS0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgZHVwbGljYXRlIG1ldGhvZHMgaW4gSlNJbnRl
cmZhY2VKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWUgbWV0aG9kcyBvZiBKU0ludGVyZmFjZUpJVCBhcmUgZHVwbGljYXRlIHdpdGggQXNzZW1i
bHlIZWxwZXJzJyBvbmVzLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlc2Ugb25lcyBh
bmQgdXNlIEFzc2VtYmx5SGVscGVycycgb25lcyBpbnN0ZWFkLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBhIGJpdCBjbGVhbnMgdXAgVGh1bmtHZW5lcmF0b3JzJyB1bm5lY2Vzc2FyeSBpZmRl
ZnMuCisKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVEFyaXRo
bWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdW5zaWduZWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbW9kKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcik6
CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SW5pdFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U3Rv
cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlQ2VsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFN0b3JlQm9vbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFRhZ0Jvb2wpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRlc19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3Vz
dG9tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAgICAg
ICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6
ZW1pdExvYWRJbnQzMik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZERv
dWJsZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dENlbGxUb0NhbGxG
cmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjp0YWdGb3IpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6cGF5bG9hZEZvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjppbnRQYXlsb2FkRm9yKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmludFRhZ0Zvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0VGFnSW50KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJldHVybkRvdWJsZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6Cisg
ICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFyaXR5Rml4
dXBHZW5lcmF0b3IpOgorCiAyMDE4LTA1LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2ZXJ0IHRoZSBCMyBjb21waWxlciBwaXBlbGluZSdzIHRyZWF0bWVu
dCBvZiB0YWlsZHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
aAppbmRleCA1NjI1MTk5MWFjOTExNTRkNjljNzdmMTRiYWY2ZTlmYzNiYjdkMDkxLi5lM2E4YmE3
NmViNzkzOTRiYTgzNzA5YjhhYjYxNDIwZDQ0N2Q0Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTEwOTEsNiArMTA5MSwxMSBAQCBjbGFzcyBB
c3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICByZXR1cm4g
YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKICAgICB9
CiAKKyAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlciwgR1BSUmVnIGJhc2VHUFIpCisgICAgeworICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lz
dGVyLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2VHUFIsIHZpcnR1YWxS
ZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikgKyBUYWdPZmZzZXQpOworICAgIH0K
ICAgICBzdGF0aWMgQWRkcmVzcyB0YWdGb3IoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3Rl
cikKICAgICB7CiAgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKTsKQEAg
LTExMDEsNiArMTEwNiwxMSBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXIgewogICAgICAgICByZXR1cm4gdGFnRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdp
c3Rlcj4ob3BlcmFuZCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBBZGRyZXNzIHBheWxvYWRGb3Io
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciwgR1BSUmVnIGJhc2VHUFIpCisgICAgewor
ICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKSk7CisgICAgICAgIHJldHVy
biBBZGRyZXNzKGJhc2VHUFIsIHZpcnR1YWxSZWdpc3Rlci5vZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikgKyBQYXlsb2FkT2Zmc2V0KTsKKyAgICB9CiAgICAgc3RhdGljIEFkZHJlc3MgcGF5bG9h
ZEZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggYjk2YWEyMjQzM2FhYmRhNTBlYThkYTlmM2E5OTVkOTA0Yjc5Nzk1Ny4uYzM4NTIyMjJjNWFh
MTI0OGJkNjAxMjczYTZiZDIxYmM0Y2Y5NTFiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC00NDksOCArNDQ5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBT
bG93Q2FzZUlmTm90TnVtYmVyKFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEludChSZWdpc3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklEIHNjcmF0Y2gp
OwogCi0gICAgICAgIHZvaWQgZW1pdFRhZ0Jvb2woUmVnaXN0ZXJJRCk7Ci0KICAgICAgICAgdm9p
ZCBjb21waWxlR2V0QnlJZEhvdFBhdGgoaW50IGJhc2VWUmVnLCBjb25zdCBJZGVudGlmaWVyKik7
CiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAKaW5kZXggMmIzZmU5MGNjZWNmYTlhMzYwMDhkMDA0YzQ5ZDA4
YzY4MzI4ODdlMy4uMzk4MWQwMzg4MTg5NzEzZjZiNWI1NWRlNmE1NTBiZTAwMjRlMDI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC0yNDEsNyAr
MjQxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWduZWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoTGVzc1RoYW4sIHJlZ1QwLCBUcnVzdGVkSW1tMzIoMCkpKTsKLSAgICBlbWl0VGFnSW50KHJl
Z1QwLCByZWdUMCk7CisgICAgYm94SW50MzIocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7
CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIApAQCAtMzIy
LDcgKzMyMiw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVVbnNpZ25lZChpbnQgZHN0LCBpbnQg
b3AxLCBpbnQgb3AyLCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvCiAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXJzKG9wMSwgcmVnVDAsIG9wMiwgcmVnVDEpOwogICAgICAgICBjb21wYXJlMzIo
Y29uZGl0aW9uLCByZWdUMCwgcmVnVDEsIHJlZ1QwKTsKICAgICB9Ci0gICAgZW1pdFRhZ0Jvb2wo
cmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC00MzQsNyArNDM0LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbnQocmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKE92ZXJm
bG93LCBUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKSk7Ci0gICAgZW1pdFRhZ0ludChyZWdUMCwgcmVn
VDApOworICAgIGJveEludDMyKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0KTsKIH0KIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0LCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hTdWIzMihPdmVyZmxv
dywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMCkpOwotICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1Qw
KTsKKyAgICBib3hJbnQzMihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCk7CiB9CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBK
dW1wIG51bWVyYXRvclBvc2l0aXZlID0gYnJhbmNoMzIoR3JlYXRlclRoYW5PckVxdWFsLCByZWdU
NCwgVHJ1c3RlZEltbTMyKDApKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoWmVybywg
ZWR4KSk7CiAgICAgbnVtZXJhdG9yUG9zaXRpdmUubGluayh0aGlzKTsKLSAgICBlbWl0VGFnSW50
KGVkeCwgcmVnVDApOworICAgIGJveEludDMyKGVkeCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAppbmRleCBkMWVmYmU5N2Q1NTdiMzAxMWI2NGVi
ODViNzkyYTBlZTA4NmUwNmRjLi44OGJlZjEyY2ViOTU2OGJiYWM4Njg4NDlkODI0NWVjZjIyYjdl
MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0y
NjEsNyArMjYxLDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSUQs
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5zaWduZWQgY2EKICAgICB9IC8vIFNQIGhvbGRz
IG5ld0NhbGxGcmFtZSArIHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSwgd2l0aCBBcmd1bWVudENv
dW50IGluaXRpYWxpemVkLgogICAgIAogICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxT
aXRlSW5kZXgoaW5zdHJ1Y3Rpb24pLmJpdHMoKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihs
b2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCwgY2FsbEZy
YW1lUmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0
YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkpOwogICAgIGVtaXRMb2FkKGNhbGxl
ZSwgcmVnVDEsIHJlZ1QwKTsgLy8gcmVnVDEsIHJlZ1QwIGhvbGRzIGNhbGxlZS4KIAogICAgIHN0
b3JlMzIocmVnVDAsIEFkZHJlc3Moc3RhY2tQb2ludGVyUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zm
c2V0IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCmluZGV4IDlhNGI3MzdjODRhYWRlNmRhMzdjMzcxZDg1NjdlZWM5ZWY1MDYw
NTUuLmRiNzk5M2IxYjJkMWYyMmQ0OTFlMTc4YjhhZWQwMjIxZmE0NGQ0OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC05MCwxMCArOTAsMTAgQEAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIEpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMpCiBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0UHV0SW50VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9t
LCBpbnQgZW50cnkpCiB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihJbnQzMlRhZyksIGludFRhZ0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsK
LSAgICBzdG9yZTMyKGZyb20sIGludFBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVy
KSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCB0YWdGb3Io
ZW50cnkpKTsKKyAgICBzdG9yZTMyKGZyb20sIHBheWxvYWRGb3IoZW50cnkpKTsKICNlbHNlCi0g
ICAgc3RvcmU2NChmcm9tLCBhZGRyZXNzRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOwor
ICAgIHN0b3JlNjQoZnJvbSwgYWRkcmVzc0ZvcihlbnRyeSkpOwogI2VuZGlmCiB9CiAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUo
KQogI2Vsc2UKICAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsU2l0ZUluZGV4KG1fYnl0
ZWNvZGVPZmZzZXQpLmJpdHMoKTsKICNlbmRpZgotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIGludFRhZ0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSk7Cisg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgdGFnRm9yKENhbGxGcmFtZVNs
b3Q6OmFyZ3VtZW50Q291bnQpKTsKICAgICAKICAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIg
dGhhdCB0aGlzIGlzIG5lZWRlZC4gSklUT3BlcmF0aW9ucyB0ZW5kIHRvIHVwZGF0ZSB0aGUgdG9w
IGNhbGwgZnJhbWUgb24KICAgICAvLyB0aGUgQysrIHNpZGUuCkBAIC0zOTYsNiArMzk2LDExIEBA
IEFMV0FZU19JTkxJTkUgZG91YmxlIEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50RG91YmxlKGludCBz
cmMpCiAgICAgcmV0dXJuIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzRG91YmxlKCk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRJbml0UmVnaXN0ZXIoaW50IGRzdCkKK3sKKyAg
ICBzdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBhZGRyZXNzRm9yKGRzdCkpOworfQor
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKIAogaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZFRhZyhp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnKQpAQCAtNDQ1LDE0ICs0NTAsMTUgQEAgaW5saW5lIHZv
aWQgSklUOjplbWl0TG9hZChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgdGFnLCBSZWdpc3RlcklEIHBh
eWxvYWQsIFJlZ2lzdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFZpcnR1YWxSZWdp
c3RlciB0YXJnZXQgeyBpbmRleCB9OwogICAgIGlmIChwYXlsb2FkID09IGJhc2UpIHsgLy8gYXZv
aWQgc3RvbXBpbmcgYmFzZQotICAgICAgICBsb2FkMzIodGFnRm9yKGluZGV4LCBiYXNlKSwgdGFn
KTsKLSAgICAgICAgbG9hZDMyKHBheWxvYWRGb3IoaW5kZXgsIGJhc2UpLCBwYXlsb2FkKTsKKyAg
ICAgICAgbG9hZDMyKHRhZ0Zvcih0YXJnZXQsIGJhc2UpLCB0YWcpOworICAgICAgICBsb2FkMzIo
cGF5bG9hZEZvcih0YXJnZXQsIGJhc2UpLCBwYXlsb2FkKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGxvYWQzMihwYXlsb2FkRm9yKGluZGV4LCBiYXNlKSwgcGF5bG9hZCk7Ci0gICAg
bG9hZDMyKHRhZ0ZvcihpbmRleCwgYmFzZSksIHRhZyk7CisgICAgbG9hZDMyKHBheWxvYWRGb3Io
dGFyZ2V0LCBiYXNlKSwgcGF5bG9hZCk7CisgICAgbG9hZDMyKHRhZ0Zvcih0YXJnZXQsIGJhc2Up
LCB0YWcpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkMihpbnQgaW5kZXgxLCBSZWdp
c3RlcklEIHRhZzEsIFJlZ2lzdGVySUQgcGF5bG9hZDEsIGludCBpbmRleDIsIFJlZ2lzdGVySUQg
dGFnMiwgUmVnaXN0ZXJJRCBwYXlsb2FkMikKQEAgLTQ4MiwzNiArNDg4LDM3IEBAIGlubGluZSB2
b2lkIEpJVDo6ZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklEIHZh
bHVlKQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZShpbnQgaW5kZXgsIFJlZ2lzdGVySUQg
dGFnLCBSZWdpc3RlcklEIHBheWxvYWQsIFJlZ2lzdGVySUQgYmFzZSkKIHsKLSAgICBzdG9yZTMy
KHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgsIGJhc2UpKTsKLSAgICBzdG9yZTMyKHRhZywgdGFn
Rm9yKGluZGV4LCBiYXNlKSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHRhcmdldCB7IGluZGV4IH07
CisgICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKHRhcmdldCwgYmFzZSkpOworICAgIHN0
b3JlMzIodGFnLCB0YWdGb3IodGFyZ2V0LCBiYXNlKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6
ZW1pdFN0b3JlSW50MzIoaW50IGluZGV4LCBSZWdpc3RlcklEIHBheWxvYWQsIGJvb2wgaW5kZXhJ
c0ludDMyKQogewotICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCwgY2FsbEZy
YW1lUmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgpKTsK
ICAgICBpZiAoIWluZGV4SXNJbnQzMikKLSAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpLCB0YWdGb3IoaW5kZXgsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAg
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgdGFnRm9yKGluZGV4
KSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlSW50MzIoaW50IGluZGV4LCBUcnVz
dGVkSW1tMzIgcGF5bG9hZCwgYm9vbCBpbmRleElzSW50MzIpCiB7Ci0gICAgc3RvcmUzMihwYXls
b2FkLCBwYXlsb2FkRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgIHN0b3JlMzIo
cGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCkpOwogICAgIGlmICghaW5kZXhJc0ludDMyKQotICAg
ICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHRhZ0ZvcihpbmRl
eCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpLCB0YWdGb3IoaW5kZXgpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjpl
bWl0U3RvcmVDZWxsKGludCBpbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkLCBib29sIGluZGV4SXND
ZWxsKQogewotICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCwgY2FsbEZyYW1l
UmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgpKTsKICAg
ICBpZiAoIWluZGV4SXNDZWxsKQotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgdGFnRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgdGFnRm9yKGluZGV4KSk7CiB9
CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlQm9vbChpbnQgaW5kZXgsIFJlZ2lzdGVySUQg
cGF5bG9hZCwgYm9vbCBpbmRleElzQm9vbCkKIHsKLSAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxv
YWRGb3IoaW5kZXgsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgc3RvcmUzMihwYXlsb2FkLCBw
YXlsb2FkRm9yKGluZGV4KSk7CiAgICAgaWYgKCFpbmRleElzQm9vbCkKLSAgICAgICAgc3RvcmUz
MihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksIHRhZ0ZvcihpbmRleCwgY2FsbEZy
YW1lUmVnaXN0ZXIpKTsKKyAgICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9v
bGVhblRhZyksIHRhZ0ZvcihpbmRleCkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9y
ZURvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSkKQEAgLTUyMSwxMyArNTI4LDkg
QEAgaW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmVEb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVy
SUQgdmFsdWUpCiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlKGludCBpbmRleCwgY29uc3Qg
SlNWYWx1ZSBjb25zdGFudCwgUmVnaXN0ZXJJRCBiYXNlKQogewotICAgIHN0b3JlMzIoSW1tMzIo
Y29uc3RhbnQucGF5bG9hZCgpKSwgcGF5bG9hZEZvcihpbmRleCwgYmFzZSkpOwotICAgIHN0b3Jl
MzIoSW1tMzIoY29uc3RhbnQudGFnKCkpLCB0YWdGb3IoaW5kZXgsIGJhc2UpKTsKLX0KLQotQUxX
QVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KQotewotICAgIGVt
aXRTdG9yZShkc3QsIGpzVW5kZWZpbmVkKCkpOworICAgIFZpcnR1YWxSZWdpc3RlciB0YXJnZXQg
eyBpbmRleCB9OworICAgIHN0b3JlMzIoSW1tMzIoY29uc3RhbnQucGF5bG9hZCgpKSwgcGF5bG9h
ZEZvcih0YXJnZXQsIGJhc2UpKTsKKyAgICBzdG9yZTMyKEltbTMyKGNvbnN0YW50LnRhZygpKSwg
dGFnRm9yKHRhcmdldCwgYmFzZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgpCkBAIC01ODksNyArNTky
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihpbnQg
c3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvYWQ2
NChBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzcmMgKiBzaXplb2YoUmVnaXN0ZXIpKSwgZHN0
KTsKKyAgICBsb2FkNjQoYWRkcmVzc0ZvcihzcmMpLCBkc3QpOwogfQogCiBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGludCBzcmMsIEpTVmFsdWVSZWdzIGRz
dCkKQEAgLTYyMCw3ICs2MjMsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRD
b25zdGFudEludChpbnQgc3JjKQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGludCBkc3QsIFJlZ2lzdGVySUQgZnJvbSkKIHsKLSAgICBzdG9yZTY0KGZy
b20sIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGRzdCAqIHNpemVvZihSZWdpc3RlcikpKTsK
KyAgICBzdG9yZTY0KGZyb20sIGFkZHJlc3NGb3IoZHN0KSk7CiB9CiAKIEFMV0FZU19JTkxJTkUg
dm9pZCBKSVQ6OmVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoaW50IGRzdCwgSlNWYWx1ZVJlZ3MgZnJv
bSkKQEAgLTYzMywxMSArNjM2LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgZHN0LCBSZWdpc3RlcklEIGYKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdC5vZmZzZXQoKSwgZnJvbSk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmVtaXRJbml0UmVnaXN0ZXIoaW50IGRzdCkKLXsKLSAgICBzdG9yZTY0KFRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxG
cmFtZVJlZ2lzdGVyLCBkc3QgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci19Ci0KIEFMV0FZU19JTkxJ
TkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkJvdGhKU0NlbGxzKFJlZ2lzdGVySUQgcmVnMSwg
UmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCiB7CiAgICAgbW92ZShyZWcxLCBz
Y3JhdGNoKTsKQEAgLTcwNiwxMSArNzA0LDYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dEp1bXBTbG93Q2FzZUlmTm90TnVtYmVyKFJlZ2lzdGVySUQgcmVnKQogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90TnVtYmVyKHJlZykpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0VGFnQm9vbChSZWdpc3RlcklEIHJlZykKLXsKLSAgICBvcjMyKFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlZyk7Ci19Ci0KIGlubGluZSBJbnN0cnVj
dGlvbiogSklUOjpjb3BpZWRJbnN0cnVjdGlvbihJbnN0cnVjdGlvbiogaW5zdCkKIHsKICAgICBy
ZXR1cm4gJm1faW5zdHJ1Y3Rpb25zW21fY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChpbnN0KV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA4ODQ2YjI0YWZl
YzcyZWFlZDRmM2U3Y2Y5OTQzNWI1YmY5OWY3MDU0Li5jNmYxMjU4MmJlYjBjYTkyOWE1ZmVmOGY0
NTFjYjM5ODRhZDdlMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9vdmVycmlkZXNfaGFzX2lu
c3RhbmNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICAvLyBDaGVjayB0
aGF0IGNvbnN0cnVjdG9yICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJyBpLmUuIHRoZSBv
YmplY3QgaXMgbm90IGEgQy1BUEkgdXNlciBub3IgYSBib3VuZCBmdW5jdGlvbi4KICAgICB0ZXN0
OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSwgcmVnVDApOwotICAgIGVt
aXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJl
Z1QwIH0pOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGN1c3RvbWhhc0luc3RhbmNl
VmFsdWUubGluayh0aGlzKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9p
c19lbXB0eShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCByZWdUMCk7CiAKLSAgICBl
bWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyBy
ZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTIxOSw3
ICsyMTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0
aGlzKTsKICAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAg
IGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfYm9vbGVhbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICB4b3I2NChUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7CiAgICAgdGVzdDY0
KFplcm8sIHJlZ1QwLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSwgcmVn
VDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0K
IApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX251bWJlcihJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIodmFsdWUsIHJlZ1QwKTsKICAgICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgcmVnVDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29s
ZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0KTsKIH0KIApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lz
X2NlbGxfd2l0aF90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSnVt
cCBpc05vdENlbGwgPSBicmFuY2hJZk5vdENlbGwocmVnVDApOwogCiAgICAgY29tcGFyZTgoRXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIodHlwZSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9v
bGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pc19vYmplY3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaElmTm90Q2VsbChyZWdUMCk7CiAKICAgICBjb21w
YXJlOChBYm92ZU9yRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9v
bChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsK
ICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKQEAg
LTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
LCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwLCByZWdUMSwgcmVn
VDIpOwogICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgZW1p
dFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVn
VDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKIH0KIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
cShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXJzKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwLCBjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW50KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIGNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDEs
IHJlZ1QwLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4o
cmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQpAQCAtNDk0LDcgKzQ5NCw3
IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uLCBDb21waWxlT3BTdHJpY3RFcVR5CiAgICAgICAgIGNvbXBhcmU2NChFcXVhbCwgcmVn
VDEsIHJlZ1QwLCByZWdUMCk7CiAgICAgZWxzZQogICAgICAgICBjb21wYXJlNjQoTm90RXF1YWws
IHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hC
b29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QpOwogfQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2VxX251bGwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB3YXNOb3RJbW1l
ZGlhdGUubGluayh0aGlzKTsKICAgICB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmso
dGhpcyk7CiAKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwg
SlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CiAKIH0KQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRo
aXMpOwogICAgIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKIAotICAg
IGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7
IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtODY5
LDcgKzg2OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46CiAgICAgbGlua0FsbFNsb3dDYXNl
cyhpdGVyKTsKIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwg
cmVnVDEpOwotICAgIGVtaXRUYWdCb29sKHJldHVyblZhbHVlR1BSKTsKKyAgICBib3hCb29sZWFu
KHJldHVyblZhbHVlR1BSLCBKU1ZhbHVlUmVncyB7IHJldHVyblZhbHVlR1BSIH0pOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0
dXJuVmFsdWVHUFIpOwogfQogCkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX25lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT4KIAogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwgcmVn
VDEpOwogICAgIHhvcjMyKFRydXN0ZWRJbW0zMigweDEpLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jv
b2wocmV0dXJuVmFsdWVHUFIpOworICAgIGJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIEpTVmFs
dWVSZWdzIHsgcmV0dXJuVmFsdWVHUFIgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKQEAg
LTkxNSw3ICs5MTUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9jdXN0b20o
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoY29uc3RydWN0b3IsIHJlZ1QxKTsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGhhc0luc3RhbmNlVmFsdWUsIHJlZ1QyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkluc3RhbmNlT2ZDdXN0b20sIHJlZ1QwLCByZWdUMSwgcmVnVDIpOwotICAgIGVtaXRUYWdCb29s
KHJldHVyblZhbHVlR1BSKTsKKyAgICBib3hCb29sZWFuKHJldHVyblZhbHVlR1BSLCBKU1ZhbHVl
UmVncyB7IHJldHVyblZhbHVlR1BSIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0
LCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKQEAgLTEwNDEsMTIgKzEwNDEsMTIgQEAgdm9pZCBKSVQ6
OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBi
cmFuY2hJZk5vdFVuZGVmaW5lZChyZWdUMCk7Ci0gICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwg
c2l6ZW9mKFJlZ2lzdGVyKSAqIGRzdCkpOwogI2Vsc2UKICAgICBlbWl0TG9hZFBheWxvYWQoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwogICAgIG5vdFVuZGVmaW5lZFNj
b3BlID0gYnJhbmNoMzIoTm90RXF1YWwsIHRhZ0ZvcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOwotICAgIGVtaXRT
dG9yZShkc3QsIGpzVW5kZWZpbmVkKCkpOwogI2VuZGlmCisgICAgc3RvcmVUcnVzdGVkVmFsdWUo
anNVbmRlZmluZWQoKSwgYWRkcmVzc0Zvcihkc3QpKTsKKwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKICAgICBub3RVbmRlZmluZWRTY29wZS5saW5rKHRoaXMpOwogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCAyMzUxOTczZDRmOTI2NGVl
ZGY4ZDU0NDY3YjM2NzZkZjUxOWVjZDg4Li40MTZiNWY2OTA4ZWRlMjYxZTljMzBkMDBlYTQ3ZTMz
MTg0MjAxMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
CkBAIC00NCwyMiArNDQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
fQogCi0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEludDMyVGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTVmFsdWU6OkludDMyVGFnKTsKLSNl
bHNlCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnQzMlRhZyA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihUYWdUeXBlTnVtYmVyID4+IDMyKTsKLSNlbmRpZgogICAgICAgICBpbmxpbmUg
SnVtcCBlbWl0TG9hZEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0
ZXJJRCBwYXlsb2FkKTsKICAgICAgICAgaW5saW5lIEp1bXAgZW1pdExvYWRJbnQzMih1bnNpZ25l
ZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBkc3QpOwogICAgICAgICBpbmxpbmUg
SnVtcCBlbWl0TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgRlBSZWdp
c3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CiAgICAgICAgIGlubGluZSBKdW1wIGVtaXRKdW1wSWZOb3RKU0NlbGwodW5zaWduZWQgdmlydHVh
bFJlZ2lzdGVySW5kZXgpOwotICAgICAgICBpbmxpbmUgQWRkcmVzcyB0YWdGb3IoaW50IGluZGV4
LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0jZW5kaWYKLQotI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KTsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJh
bWVIZWFkZXJQdHIoaW50IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBj
YWxsRnJhbWVSZWdpc3Rlcik7CkBAIC02NywxMSArNTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIGludCBlbnRy
eSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklE
IGZyb20sIGludCBlbnRyeSk7CiAKLSAgICAgICAgaW5saW5lIEFkZHJlc3MgcGF5bG9hZEZvcihp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAg
aW5saW5lIEFkZHJlc3MgaW50UGF5bG9hZEZvcihpbnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFzZSA9
IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSAgICAgICAgaW5saW5lIEFkZHJlc3MgaW50VGFnRm9yKGlu
dCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBp
bmxpbmUgQWRkcmVzcyBhZGRyZXNzRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2Fs
bEZyYW1lUmVnaXN0ZXIpOwotCiAgICAgICAgIFZNKiB2bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07
IH0KIAogICAgICAgICBWTSogbV92bTsKQEAgLTEwMSwyOCArODYsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbG9hZFB0cihwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4KSwgZHN0
KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3Ioc3RhdGljX2Nhc3Q8
aW50Pih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKTsKICAgICB9Ci0gICAgCi0gICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpT
SW50ZXJmYWNlSklUOjp0YWdGb3IoaW50IHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklE
IGJhc2UpCi0gICAgewotICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lzdGVySW5kZXggPCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgIHJldHVybiBBZGRyZXNzKGJhc2UsIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odmlydHVhbFJlZ2lzdGVySW5kZXgpICogc2l6ZW9mKFJlZ2lz
dGVyKSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSk7Ci0gICAgfQot
ICAgIAotICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6
cGF5bG9hZEZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSk7Ci0gICAgfQotCi0gICAg
aW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjppbnRQYXlsb2Fk
Rm9yKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgsIGJhc2UpOwotICAg
IH0KLQotICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6
aW50VGFnRm9yKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgYmFzZSk7Ci0g
ICAgfQogCiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgRlBSZWdpc3RlcklE
IGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKQEAgLTE2OCwzMyArMTMxLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICAgICAgcmV0dXJuIG5v
dE51bWJlcjsKICAgICB9Ci0KLSAgICAvLyBvcGVyYW5kIGlzIGludDMyX3QsIG11c3QgaGF2ZSBi
ZWVuIHplcm8tZXh0ZW5kZWQgaWYgcmVnaXN0ZXIgaXMgNjQtYml0LgotICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAg
bW92ZShzcmMsIGRlc3QpOwotICAgICAgICBvcjY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZGVz
dCk7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlubGluZSBKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6cGF5bG9hZEZvcihpbnQgdmlydHVh
bFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2
aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICAg
ICAgcmV0dXJuIGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgsIGJhc2UpOwotICAgIH0K
LQotICAgIGlubGluZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6aW50
UGF5bG9hZEZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpOwot
ICAgIH0KLSAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6
OmludFRhZ0ZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0
PHVuc2lnbmVkPih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSk7Ci0gICAg
fQogI2VuZGlmCiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKGludCBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0
ZXJJRCBmcm9tKQpAQCAtMjA1LDMzICsxNDEsMjcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
UmVnaXN0ZXJJRCBmcm9tLCBpbnQgZW50cnkpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Ci0gICAgICAgIHN0b3JlUHRyKGZyb20sIHBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lz
dGVyKSk7CisgICAgICAgIHN0b3JlUHRyKGZyb20sIHBheWxvYWRGb3IoZW50cnkpKTsKICNlbHNl
Ci0gICAgICAgIHN0b3JlNjQoZnJvbSwgYWRkcmVzc0ZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0
ZXIpKTsKKyAgICAgICAgc3RvcmU2NChmcm9tLCBhZGRyZXNzRm9yKGVudHJ5KSk7CiAjZW5kaWYK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgaW50IGVudHJ5KQogICAgIHsKLSAgICAgICAg
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIs
IGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1t
UHRyKHZhbHVlKSwgYWRkcmVzc0ZvcihlbnRyeSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRlcihSZWdp
c3RlcklEIGZyb20sIGludCBlbnRyeSkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAg
ICAgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHRhZ0ZvcihlbnRy
eSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKLSAgICAgICAgc3RvcmUzMihmcm9tLCBwYXlsb2FkRm9y
KGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSwgdGFnRm9yKGVudHJ5KSk7CisgICAgICAgIHN0b3JlMzIoZnJv
bSwgcGF5bG9hZEZvcihlbnRyeSkpOwogI2Vsc2UKLSAgICAgICAgc3RvcmU2NChmcm9tLCBhZGRy
ZXNzRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBzdG9yZTY0KGZyb20s
IGFkZHJlc3NGb3IoZW50cnkpKTsKICNlbmRpZgogICAgIH0KIAotICAgIGlubGluZSBKU0ludGVy
ZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6YWRkcmVzc0ZvcihpbnQgdmlydHVhbFJl
Z2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh2aXJ0
dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICAgICAg
cmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih2aXJ0dWFsUmVnaXN0
ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSk7Ci0gICAgfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCmluZGV4IGYyODIzMjFhNDY5YjA1ZWVjMTllOTdkOThh
YjcxYzQ3M2ZmN2YxNWQuLjJkZGFhNWFkOWZjMjRmY2E4NzMwOTYxODUzZTU3MGYxNDQ2ZTUxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
CkBAIC0xMzUsNyArMTM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBKdW1wIGxv
d05vblplcm8gPSBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QxKTsKICAgICAgICAgICAgIEp1
bXAgaGlnaE5vblplcm8gPSBicmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsKICAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW0zMihJbnQzMlRhZyksIHJlZ1QxKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSwgcmVnVDEpOwogICAgICAgICAgICAgbG93Tm9uWmVyby5saW5r
KHRoaXMpOwogICAgICAgICAgICAgaGlnaE5vblplcm8ubGluayh0aGlzKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCmluZGV4IDZlN2U2
MzEzZGNmM2UwZWJjMGU4N2VmZDYyNzBmMjM2NWVkOTAyMzEuLjhiZjY2MzEzNjIzN2M4NDVkYzJh
NmZlM2NlNzk0NDhlZjU2ZTZiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAKQEAgLTI2NSwxMiArMjY1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwgVGh1
bmtGdW4KICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAvLyBXZSdyZSBjb21pbmcgZnJvbSBh
IHNwZWNpYWxpemVkIHRodW5rIHRoYXQgaGFzIHNhdmVkIHRoZSBwcmlvciB0YWcgcmVnaXN0ZXJz
JyBjb250ZW50cy4KICAgICAgICAgLy8gUmVzdG9yZSB0aGVtIG5vdy4KLSNpZiBDUFUoQVJNNjQp
CiAgICAgICAgIGppdC5wb3BQYWlyKEpTSW50ZXJmYWNlSklUOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIEpTSW50ZXJmYWNlSklUOjp0YWdNYXNrUmVnaXN0ZXIpOwotI2Vsc2UKLSAgICAgICAgaml0
LnBvcChKU0ludGVyZmFjZUpJVDo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgaml0LnBvcChK
U0ludGVyZmFjZUpJVDo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSNlbmRpZgogI2VuZGlmCiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFnczoKQEAg
LTM4NCwxNSArMzc5LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNKiB2bSwgVGh1bmtGdW4KICNlbmRpZgogCiAgICAg
Ly8gQ2hlY2sgZm9yIGFuIGV4Y2VwdGlvbgotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lmxv
YWQ2NCh2bS0+YWRkcmVzc09mRXhjZXB0aW9uKCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7Ci0g
ICAgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgZXhjZXB0aW9uSGFuZGxlciA9IGppdC5icmFuY2hUZXN0
NjQoSlNJbnRlcmZhY2VKSVQ6Ok5vblplcm8sIEpTSW50ZXJmYWNlSklUOjpyZWdUMik7Ci0jZWxz
ZQotICAgIEpTSW50ZXJmYWNlSklUOjpKdW1wIGV4Y2VwdGlvbkhhbmRsZXIgPSBqaXQuYnJhbmNo
MzIoCi0gICAgICAgIEpTSW50ZXJmYWNlSklUOjpOb3RFcXVhbCwKLSAgICAgICAgSlNJbnRlcmZh
Y2VKSVQ6OkFic29sdXRlQWRkcmVzcyh2bS0+YWRkcmVzc09mRXhjZXB0aW9uKCkpLAotICAgICAg
ICBKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDApKTsKLSNlbmRpZgorICAgIEpTSW50ZXJm
YWNlSklUOjpKdW1wIGV4Y2VwdGlvbkhhbmRsZXIgPSBqaXQuYnJhbmNoVGVzdFB0cihKU0ludGVy
ZmFjZUpJVDo6Tm9uWmVybywgSlNJbnRlcmZhY2VKSVQ6OkFic29sdXRlQWRkcmVzcyh2bS0+YWRk
cmVzc09mRXhjZXB0aW9uKCkpKTsKIAogICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwog
ICAgIC8vIFJldHVybi4KQEAgLTQ4NSw3ICs0NzIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0qIHZtKQogICAgIGppdC5zdG9y
ZVB0cihHUFJJbmZvOjpyZWdUMywgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSkpOwogI2VuZGlmCiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJ
bnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENv
dW50ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwor
ICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5h
ZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUlu
UmVnaXN0ZXJzKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4gdXNlCkBAIC01NDksNyArNTM2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcml0eUZpeHVwR2Vu
ZXJhdG9yKFZNKiB2bSkKICAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjpyZWdUNCk7CiAjICBl
bmRpZgogICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QzKTsKLSAgICBqaXQubG9hZDMyKEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzKEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudCAqIHNpemVvZihSZWdpc3RlcikpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRH
UFIyKTsKKyAgICBqaXQubG9hZDMyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRD
b3VudCksIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihKU0lu
dGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJz
KSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgd2UgaGF2ZSBleHRyYSBzbG90cyB3ZSBjYW4gdXNlCg==
</data>
<flag name="review"
          id="359069"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340955</attachid>
            <date>2018-05-21 22:14:46 -0700</date>
            <delta_ts>2018-05-21 22:14:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-185813-20180522141445.patch</filename>
            <type>text/plain</type>
            <size>29770</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MDIxMWIyMzFhZWM2OTU0NTJmZmI0ZGY5MGQzNDBhMzk4MGFhMWZhLi4xNmYyZDE2ZTI2ZmIxMWVj
MzZkNGY0MDNjMjkwNzZmZWQ1NmM0MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxOC0wNS0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgZHVwbGljYXRlIG1ldGhvZHMgaW4gSlNJbnRl
cmZhY2VKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NTgxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNvbWUgbWV0aG9kcyBvZiBKU0ludGVyZmFjZUpJVCBhcmUgZHVwbGljYXRlIHdpdGggQXNzZW1i
bHlIZWxwZXJzJyBvbmVzLgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlc2Ugb25lcyBh
bmQgdXNlIEFzc2VtYmx5SGVscGVycycgb25lcyBpbnN0ZWFkLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWxzbyBhIGJpdCBjbGVhbnMgdXAgVGh1bmtHZW5lcmF0b3JzJyB1bm5lY2Vzc2FyeSBpZmRl
ZnMuCisKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpw
YXlsb2FkRm9yKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVEFyaXRo
bWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdW5zaWduZWQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2luYyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfbW9kKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxsKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcik6
CisgICAgICAgIChKU0M6OkpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SW5pdFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U3Rv
cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlQ2VsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFN0b3JlQm9vbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFRhZ0Jvb2wpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRlc19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfZW1wdHkpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xv
d19vcF9uZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3Vz
dG9tKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24pOgorICAgICAg
ICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6
ZW1pdExvYWRJbnQzMik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZERv
dWJsZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dENlbGxUb0NhbGxG
cmFtZUhlYWRlcik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjp0YWdGb3IpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6cGF5bG9hZEZvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjppbnRQYXlsb2FkRm9yKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmludFRhZ0Zvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0VGFnSW50KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmFkZHJlc3NGb3IpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJldHVybkRvdWJsZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6Cisg
ICAgICAgIChKU0M6Om5hdGl2ZUZvckdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFyaXR5Rml4
dXBHZW5lcmF0b3IpOgorCiAyMDE4LTA1LTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlbGFuZCBJbkJ5SWQgY2FjaGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGFhNjcxMmY1
OTk5NTRmZDM0YmU4NTRiY2ZiNTM3MzhhN2NiM2U0MmUuLmE4YmYzNGQzMWUxMzRiMzRhZjI4YTE2
NjU2YTMxOWNmNTQzNzI1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaApAQCAtMTA5MSw2ICsxMDkxLDExIEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIHJldHVybiBhZGRyZXNzRm9yKHN0YXRp
Y19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBB
ZGRyZXNzIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyLCBHUFJSZWcgYmFz
ZUdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKTsK
KyAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZUdQUiwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSArIFRhZ09mZnNldCk7CisgICAgfQogICAgIHN0YXRpYyBBZGRy
ZXNzIHRhZ0ZvcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCkpOwpAQCAtMTEwMSw2ICsxMTA2LDEx
IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAg
ICAgIHJldHVybiB0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7
CiAgICAgfQogCisgICAgc3RhdGljIEFkZHJlc3MgcGF5bG9hZEZvcihWaXJ0dWFsUmVnaXN0ZXIg
dmlydHVhbFJlZ2lzdGVyLCBHUFJSZWcgYmFzZUdQUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2
aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpKTsKKyAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZUdQ
UiwgdmlydHVhbFJlZ2lzdGVyLm9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSArIFBheWxvYWRP
ZmZzZXQpOworICAgIH0KICAgICBzdGF0aWMgQWRkcmVzcyBwYXlsb2FkRm9yKFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAgICAgewogICAgICAgICBBU1NFUlQodmlydHVhbFJlZ2lz
dGVyLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiOTZhYTIyNDMzYWFi
ZGE1MGVhOGRhOWYzYTk5NWQ5MDRiNzk3OTU3Li5jMzg1MjIyMmM1YWExMjQ4YmQ2MDEyNzNhNmJk
MjFiYzRjZjk1MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ0OSw4ICs0NDksNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1i
ZXIoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJl
Z2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAKLSAgICAgICAgdm9p
ZCBlbWl0VGFnQm9vbChSZWdpc3RlcklEKTsKLQogICAgICAgICB2b2lkIGNvbXBpbGVHZXRCeUlk
SG90UGF0aChpbnQgYmFzZVZSZWcsIGNvbnN0IElkZW50aWZpZXIqKTsKIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
LmNwcAppbmRleCAyYjNmZTkwY2NlY2ZhOWEzNjAwOGQwMDRjNDlkMDhjNjgzMjg4N2UzLi4zOTgx
ZDAzODgxODk3MTNmNmI1YjU1ZGU2YTU1MGJlMDAyNGUwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF91bnNpZ25lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW50KHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihMZXNzVGhhbiwgcmVn
VDAsIFRydXN0ZWRJbW0zMigwKSkpOwotICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1QwKTsKKyAg
ICBib3hJbnQzMihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfY29tcGFyZVVuc2lnbmVkKGludCBkc3QsIGludCBvcDEsIGludCBvcDIsIFJl
bGF0aW9uYWxDb25kaXRpb24gY28KICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3Ax
LCByZWdUMCwgb3AyLCByZWdUMSk7CiAgICAgICAgIGNvbXBhcmUzMihjb25kaXRpb24sIHJlZ1Qw
LCByZWdUMSwgcmVnVDApOwogICAgIH0KLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94
Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChy
ZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIFRydXN0ZWRJbW0z
MigxKSwgcmVnVDApKTsKLSAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7CisgICAgYm94SW50
MzIocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihzcmNEc3QpOwogfQogCkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
ZGVjKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVn
VDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN1YjMyKE92ZXJmbG93LCBUcnVzdGVkSW1tMzIo
MSksIHJlZ1QwKSk7Ci0gICAgZW1pdFRhZ0ludChyZWdUMCwgcmVnVDApOworICAgIGJveEludDMy
KHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoc3JjRHN0KTsKIH0KIApAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX21v
ZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEp1bXAgbnVtZXJhdG9yUG9z
aXRpdmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWwsIHJlZ1Q0LCBUcnVzdGVkSW1tMzIo
MCkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCBlZHgpKTsKICAgICBudW1l
cmF0b3JQb3NpdGl2ZS5saW5rKHRoaXMpOwotICAgIGVtaXRUYWdJbnQoZWR4LCByZWdUMCk7Cisg
ICAgYm94SW50MzIoZWR4LCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwCmluZGV4IGQxZWZiZTk3ZDU1N2IzMDExYjY0ZWI4NWI3OTJhMGVlMDg2ZTA2
ZGMuLjg4YmVmMTJjZWI5NTY4YmJhYzg2ODg0OWQ4MjQ1ZWNmMjJiN2UwMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2
b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCBjYQogICAgIH0gLy8gU1AgaG9sZHMgbmV3Q2FsbEZyYW1lICsg
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpLCB3aXRoIEFyZ3VtZW50Q291bnQgaW5pdGlhbGl6ZWQu
CiAgICAgCiAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbFNpdGVJbmRleChpbnN0cnVj
dGlvbikuYml0cygpOwotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRh
Z0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50LCBjYWxsRnJhbWVSZWdpc3RlcikpOwor
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIHRhZ0ZvcihDYWxsRnJhbWVT
bG90Ojphcmd1bWVudENvdW50KSk7CiAgICAgZW1pdExvYWQoY2FsbGVlLCByZWdUMSwgcmVnVDAp
OyAvLyByZWdUMSwgcmVnVDAgaG9sZHMgY2FsbGVlLgogCiAgICAgc3RvcmUzMihyZWdUMCwgQWRk
cmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIFBheWxvYWRPZmZzZXQgLSBzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5k
ZXggOWE0YjczN2M4NGFhZGU2ZGEzN2MzNzFkODU2N2VlYzllZjUwNjA1NS4uZGI3OTkzYjFiMmQx
ZjIyZDQ5MWUxNzhiOGFlZDAyMjFmYTQ0ZDQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKQEAgLTkwLDEwICs5MCwxMCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgSklU
OjpnZXRDb25zdGFudE9wZXJhbmQoaW50IHNyYykKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVt
aXRQdXRJbnRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIGludCBlbnRyeSkKIHsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEludDMyVGFn
KSwgaW50VGFnRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOwotICAgIHN0b3JlMzIoZnJv
bSwgaW50UGF5bG9hZEZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHRhZ0ZvcihlbnRyeSkpOworICAgIHN0
b3JlMzIoZnJvbSwgcGF5bG9hZEZvcihlbnRyeSkpOwogI2Vsc2UKLSAgICBzdG9yZTY0KGZyb20s
IGFkZHJlc3NGb3IoZW50cnksIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgc3RvcmU2NChmcm9t
LCBhZGRyZXNzRm9yKGVudHJ5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTQxLDcgKzE0MSw3IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBKSVQ6OnVwZGF0ZVRvcENhbGxGcmFtZSgpCiAjZWxzZQogICAgIHVp
bnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCkuYml0
cygpOwogI2VuZGlmCi0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgaW50
VGFnRm9yKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKTsKKyAgICBzdG9yZTMyKFRydXN0
ZWRJbW0zMihsb2NhdGlvbkJpdHMpLCB0YWdGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpOwogICAgIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMgaXMgbmVl
ZGVkLiBKSVRPcGVyYXRpb25zIHRlbmQgdG8gdXBkYXRlIHRoZSB0b3AgY2FsbCBmcmFtZSBvbgog
ICAgIC8vIHRoZSBDKysgc2lkZS4KQEAgLTM5Niw2ICszOTYsMTEgQEAgQUxXQVlTX0lOTElORSBk
b3VibGUgSklUOjpnZXRPcGVyYW5kQ29uc3RhbnREb3VibGUoaW50IHNyYykKICAgICByZXR1cm4g
Z2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNEb3VibGUoKTsKIH0KIAorQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6ZW1pdEluaXRSZWdpc3RlcihpbnQgZHN0KQoreworICAgIHN0b3JlVHJ1c3RlZFZh
bHVlKGpzVW5kZWZpbmVkKCksIGFkZHJlc3NGb3IoZHN0KSk7Cit9CisKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkVGFnKGludCBpbmRleCwgUmVnaXN0
ZXJJRCB0YWcpCkBAIC00NDUsMTQgKzQ1MCwxNSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2Fk
KGludCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcsIFJlZ2lzdGVySUQgcGF5bG9hZCwgUmVnaXN0ZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgVmlydHVhbFJlZ2lzdGVyIHRhcmdldCB7IGlu
ZGV4IH07CiAgICAgaWYgKHBheWxvYWQgPT0gYmFzZSkgeyAvLyBhdm9pZCBzdG9tcGluZyBiYXNl
Ci0gICAgICAgIGxvYWQzMih0YWdGb3IoaW5kZXgsIGJhc2UpLCB0YWcpOwotICAgICAgICBsb2Fk
MzIocGF5bG9hZEZvcihpbmRleCwgYmFzZSksIHBheWxvYWQpOworICAgICAgICBsb2FkMzIodGFn
Rm9yKHRhcmdldCwgYmFzZSksIHRhZyk7CisgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKHRhcmdl
dCwgYmFzZSksIHBheWxvYWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbG9hZDMy
KHBheWxvYWRGb3IoaW5kZXgsIGJhc2UpLCBwYXlsb2FkKTsKLSAgICBsb2FkMzIodGFnRm9yKGlu
ZGV4LCBiYXNlKSwgdGFnKTsKKyAgICBsb2FkMzIocGF5bG9hZEZvcih0YXJnZXQsIGJhc2UpLCBw
YXlsb2FkKTsKKyAgICBsb2FkMzIodGFnRm9yKHRhcmdldCwgYmFzZSksIHRhZyk7CiB9CiAKIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdExvYWQyKGludCBpbmRleDEsIFJlZ2lzdGVySUQgdGFnMSwgUmVn
aXN0ZXJJRCBwYXlsb2FkMSwgaW50IGluZGV4MiwgUmVnaXN0ZXJJRCB0YWcyLCBSZWdpc3RlcklE
IHBheWxvYWQyKQpAQCAtNDgyLDM2ICs0ODgsMzcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9h
ZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpCiAKIGlubGluZSB2
b2lkIEpJVDo6ZW1pdFN0b3JlKGludCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcsIFJlZ2lzdGVySUQg
cGF5bG9hZCwgUmVnaXN0ZXJJRCBiYXNlKQogewotICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9h
ZEZvcihpbmRleCwgYmFzZSkpOwotICAgIHN0b3JlMzIodGFnLCB0YWdGb3IoaW5kZXgsIGJhc2Up
KTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdGFyZ2V0IHsgaW5kZXggfTsKKyAgICBzdG9yZTMyKHBh
eWxvYWQsIHBheWxvYWRGb3IodGFyZ2V0LCBiYXNlKSk7CisgICAgc3RvcmUzMih0YWcsIHRhZ0Zv
cih0YXJnZXQsIGJhc2UpKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0U3RvcmVJbnQzMihp
bnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCwgYm9vbCBpbmRleElzSW50MzIpCiB7Ci0gICAg
c3RvcmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOwor
ICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCkpOwogICAgIGlmICghaW5kZXhJ
c0ludDMyKQotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyks
IHRhZ0ZvcihpbmRleCwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLCB0YWdGb3IoaW5kZXgpKTsKIH0KIAogaW5saW5l
IHZvaWQgSklUOjplbWl0U3RvcmVJbnQzMihpbnQgaW5kZXgsIFRydXN0ZWRJbW0zMiBwYXlsb2Fk
LCBib29sIGluZGV4SXNJbnQzMikKIHsKLSAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3Io
aW5kZXgsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgc3RvcmUzMihwYXlsb2FkLCBwYXlsb2Fk
Rm9yKGluZGV4KSk7CiAgICAgaWYgKCFpbmRleElzSW50MzIpCi0gICAgICAgIHN0b3JlMzIoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgdGFnRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdp
c3RlcikpOworICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyks
IHRhZ0ZvcihpbmRleCkpOwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTdG9yZUNlbGwoaW50
IGluZGV4LCBSZWdpc3RlcklEIHBheWxvYWQsIGJvb2wgaW5kZXhJc0NlbGwpCiB7Ci0gICAgc3Rv
cmUzMihwYXlsb2FkLCBwYXlsb2FkRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAg
IHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCkpOwogICAgIGlmICghaW5kZXhJc0Nl
bGwpCi0gICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0YWdG
b3IoaW5kZXgsIGNhbGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0YWdGb3IoaW5kZXgpKTsKIH0KIAogaW5saW5lIHZvaWQg
SklUOjplbWl0U3RvcmVCb29sKGludCBpbmRleCwgUmVnaXN0ZXJJRCBwYXlsb2FkLCBib29sIGlu
ZGV4SXNCb29sKQogewotICAgIHN0b3JlMzIocGF5bG9hZCwgcGF5bG9hZEZvcihpbmRleCwgY2Fs
bEZyYW1lUmVnaXN0ZXIpKTsKKyAgICBzdG9yZTMyKHBheWxvYWQsIHBheWxvYWRGb3IoaW5kZXgp
KTsKICAgICBpZiAoIWluZGV4SXNCb29sKQotICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCb29sZWFuVGFnKSwgdGFnRm9yKGluZGV4LCBjYWxsRnJhbWVSZWdpc3RlcikpOwor
ICAgICAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwgdGFnRm9y
KGluZGV4KSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFN0b3JlRG91YmxlKGludCBpbmRl
eCwgRlBSZWdpc3RlcklEIHZhbHVlKQpAQCAtNTIxLDEzICs1MjgsOSBAQCBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRTdG9yZURvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSkKIAogaW5s
aW5lIHZvaWQgSklUOjplbWl0U3RvcmUoaW50IGluZGV4LCBjb25zdCBKU1ZhbHVlIGNvbnN0YW50
LCBSZWdpc3RlcklEIGJhc2UpCiB7Ci0gICAgc3RvcmUzMihJbW0zMihjb25zdGFudC5wYXlsb2Fk
KCkpLCBwYXlsb2FkRm9yKGluZGV4LCBiYXNlKSk7Ci0gICAgc3RvcmUzMihJbW0zMihjb25zdGFu
dC50YWcoKSksIHRhZ0ZvcihpbmRleCwgYmFzZSkpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0SW5pdFJlZ2lzdGVyKGludCBkc3QpCi17Ci0gICAgZW1pdFN0b3JlKGRzdCwganNV
bmRlZmluZWQoKSk7CisgICAgVmlydHVhbFJlZ2lzdGVyIHRhcmdldCB7IGluZGV4IH07CisgICAg
c3RvcmUzMihJbW0zMihjb25zdGFudC5wYXlsb2FkKCkpLCBwYXlsb2FkRm9yKHRhcmdldCwgYmFz
ZSkpOworICAgIHN0b3JlMzIoSW1tMzIoY29uc3RhbnQudGFnKCkpLCB0YWdGb3IodGFyZ2V0LCBi
YXNlKSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCkKQEAgLTU4OSw3ICs1OTIsNyBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGludCBzcmMsIFJlZ2lzdGVySUQg
ZHN0KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbG9hZDY0KEFkZHJlc3MoY2FsbEZy
YW1lUmVnaXN0ZXIsIHNyYyAqIHNpemVvZihSZWdpc3RlcikpLCBkc3QpOworICAgIGxvYWQ2NChh
ZGRyZXNzRm9yKHNyYyksIGRzdCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoaW50IHNyYywgSlNWYWx1ZVJlZ3MgZHN0KQpAQCAtNjIwLDcgKzYy
Myw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW50KGludCBz
cmMpCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoaW50
IGRzdCwgUmVnaXN0ZXJJRCBmcm9tKQogewotICAgIHN0b3JlNjQoZnJvbSwgQWRkcmVzcyhjYWxs
RnJhbWVSZWdpc3RlciwgZHN0ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOworICAgIHN0b3JlNjQoZnJv
bSwgYWRkcmVzc0Zvcihkc3QpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihpbnQgZHN0LCBKU1ZhbHVlUmVncyBmcm9tKQpAQCAtNjMzLDExICs2
MzYsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0UHV0VmlydHVhbFJlZ2lzdGVyKFZp
cnR1YWxSZWdpc3RlciBkc3QsIFJlZ2lzdGVySUQgZgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0Lm9mZnNldCgpLCBmcm9tKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dEluaXRSZWdpc3RlcihpbnQgZHN0KQotewotICAgIHN0b3JlNjQoVHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGRz
dCAqIHNpemVvZihSZWdpc3RlcikpKTsKLX0KLQogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklU
OjplbWl0SnVtcElmQm90aEpTQ2VsbHMoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIs
IFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsKICAgICBtb3ZlKHJlZzEsIHNjcmF0Y2gpOwpAQCAtNzA2
LDExICs3MDQsNiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZO
b3ROdW1iZXIoUmVnaXN0ZXJJRCByZWcpCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3ROdW1i
ZXIocmVnKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdCb29sKFJlZ2lz
dGVySUQgcmVnKQotewotICAgIG9yMzIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KFZhbHVlRmFsc2UpKSwgcmVnKTsKLX0KLQogaW5saW5lIEluc3RydWN0aW9uKiBKSVQ6OmNvcGll
ZEluc3RydWN0aW9uKEluc3RydWN0aW9uKiBpbnN0KQogewogICAgIHJldHVybiAmbV9pbnN0cnVj
dGlvbnNbbV9jb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGluc3QpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDg4NDZiMjRhZmVjNzJlYWVkNGYzZTdjZjk5
NDM1YjViZjk5ZjcwNTQuLmM2ZjEyNTgyYmViMGNhOTI5YTVmZWY4ZjQ1MWNiMzk4NGFkN2UyMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2UoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3Ig
J0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnIGkuZS4gdGhlIG9iamVjdCBpcyBub3QgYSBD
LUFQSSB1c2VyIG5vciBhIGJvdW5kIGZ1bmN0aW9uLgogICAgIHRlc3Q4KFplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDAp
OworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgSnVt
cCBkb25lID0ganVtcCgpOwogCiAgICAgY3VzdG9taGFzSW5zdGFuY2VWYWx1ZS5saW5rKHRoaXMp
OwpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2VtcHR5KEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDApOwogICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksIHJlZ1QwKTsKIAotICAgIGVtaXRUYWdCb29sKHJlZ1Qw
KTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogCiAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwogICAgIGRvbmUu
bGluayh0aGlzKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdU
MCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCk7CiB9CiAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19ib29sZWFu
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxp
bnQzMl90PihWYWx1ZUZhbHNlKSksIHJlZ1QwKTsKICAgICB0ZXN0NjQoWmVybywgcmVnVDAsIFRy
dXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpLCByZWdUMCk7Ci0gICAgZW1pdFRh
Z0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAg
fSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC0yNDIsNyArMjQy
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDAp
OwogICAgIHRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdU
MCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFs
dWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQog
CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJy
YW5jaElmTm90Q2VsbChyZWdUMCk7CiAKICAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSwgcmVn
VDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1Zh
bHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGlzTm90
Q2VsbC5saW5rKHRoaXMpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lz
X29iamVjdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEp1bXAgaXNOb3RD
ZWxsID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKIAogICAgIGNvbXBhcmU4KEFib3ZlT3JFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihPYmplY3RUeXBlKSwgcmVnVDApOwotICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKKyAgICBi
b3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJlZ1QwIH0pOwogICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtNDE2LDcgKzQxNiw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCwgcmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1QxKTsKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDAsIHJlZ1QxLCByZWdUMik7CiAgICAgY29tcGFy
ZTMyKEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZWdUMCk7
CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogfQog
CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDAsIHJlZ1Qx
LCByZWdUMik7CiAgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsK
LSAgICBlbWl0VGFnQm9vbChyZWdUMCk7CisgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJl
Z3MgeyByZWdUMCB9KTsKIAogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBKSVQ6OmNv
bXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIENvbXBpbGVP
cFN0cmljdEVxVHkKICAgICAgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1Qw
KTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVnVDEsIHJlZ1QwLCBy
ZWdUMCk7Ci0gICAgZW1pdFRhZ0Jvb2wocmVnVDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpT
VmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CiB9CkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMp
OwogICAgIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKIAotICAgIGVt
aXRUYWdCb29sKHJlZ1QwKTsKKyAgICBib3hCb29sZWFuKHJlZ1QwLCBKU1ZhbHVlUmVncyB7IHJl
Z1QwIH0pOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIAogfQpAQCAtNzc3LDcg
Kzc3Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiAgICAgd2FzTm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwogCi0gICAgZW1pdFRhZ0Jvb2wocmVn
VDApOworICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC04NjksNyArODY5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5PjoKICAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOwogCiAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7Ci0gICAgZW1p
dFRhZ0Jvb2wocmV0dXJuVmFsdWVHUFIpOworICAgIGJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIs
IEpTVmFsdWVSZWdzIHsgcmV0dXJuVmFsdWVHUFIgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiB9
CiAKQEAgLTg3OSw3ICs4NzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5PgogCiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7CiAgICAgeG9yMzIo
VHJ1c3RlZEltbTMyKDB4MSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQm9vbChyZXR1cm5WYWx1ZUdQ
Uik7CisgICAgYm94Qm9vbGVhbihyZXR1cm5WYWx1ZUdQUiwgSlNWYWx1ZVJlZ3MgeyByZXR1cm5W
YWx1ZUdQUiB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BSKTsKIH0KIApAQCAtOTE1LDcgKzkxNSw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9pbnN0YW5jZW9mX2N1c3RvbShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihjb25z
dHJ1Y3RvciwgcmVnVDEpOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoaGFzSW5zdGFuY2VW
YWx1ZSwgcmVnVDIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1c3Rv
bSwgcmVnVDAsIHJlZ1QxLCByZWdUMik7Ci0gICAgZW1pdFRhZ0Jvb2wocmV0dXJuVmFsdWVHUFIp
OworICAgIGJveEJvb2xlYW4ocmV0dXJuVmFsdWVHUFIsIEpTVmFsdWVSZWdzIHsgcmV0dXJuVmFs
dWVHUFIgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BS
KTsKIH0KIApAQCAtMTA0MSwxMiArMTA0MSwxMiBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHBy
Q29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQsIHJlZ1QwKTsKICAgICBub3RVbmRlZmluZWRTY29wZSA9IGJyYW5jaElmTm90VW5kZWZp
bmVkKHJlZ1QwKTsKLSAgICBzdG9yZTY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBzaXplb2YoUmVnaXN0ZXIp
ICogZHN0KSk7CiAjZWxzZQogICAgIGVtaXRMb2FkUGF5bG9hZChjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kLCByZWdUMCk7CiAgICAgbm90VW5kZWZpbmVkU2NvcGUgPSBicmFuY2gzMihO
b3RFcXVhbCwgdGFnRm9yKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSk7Ci0gICAgZW1pdFN0b3JlKGRzdCwganNVbmRl
ZmluZWQoKSk7CiAjZW5kaWYKKyAgICBzdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBh
ZGRyZXNzRm9yKGRzdCkpOworCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIG5vdFVuZGVm
aW5lZFNjb3BlLmxpbmsodGhpcyk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IDIzNTE5NzNkNGY5MjY0ZWVkZjhkNTQ0NjdiMzY3NmRm
NTE5ZWNkODguLjQxNmI1ZjY5MDhlZGUyNjFlOWMzMGQwMGVhNDdlMzMxODQyMDEwNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKQEAgLTQ0LDIyICs0NCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSNpZiBVU0UoSlNW
QUxVRTMyXzY0KQotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW50MzJUYWcgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNWYWx1ZTo6SW50MzJUYWcpOwotI2Vsc2UKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEludDMyVGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRhZ1R5
cGVOdW1iZXIgPj4gMzIpOwotI2VuZGlmCiAgICAgICAgIGlubGluZSBKdW1wIGVtaXRMb2FkSlND
ZWxsKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIHBheWxvYWQpOwog
ICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9hZEludDMyKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3Rl
ckluZGV4LCBSZWdpc3RlcklEIGRzdCk7CiAgICAgICAgIGlubGluZSBKdW1wIGVtaXRMb2FkRG91
YmxlKHVuc2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJlZ2lzdGVySUQgZHN0LCBSZWdp
c3RlcklEIHNjcmF0Y2gpOwogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgaW5saW5l
IEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbCh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCk7
Ci0gICAgICAgIGlubGluZSBBZGRyZXNzIHRhZ0ZvcihpbnQgaW5kZXgsIFJlZ2lzdGVySUQgYmFz
ZSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKLSNlbmRpZgotCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgdm9pZCBlbWl0VGFnSW50KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwog
I2VuZGlmCiAKICAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihpbnQg
ZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVy
KTsKQEAgLTY3LDExICs1Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQ
dXRUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgaW50IGVudHJ5KTsKICAgICAgICAgdm9p
ZCBlbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgaW50IGVudHJ5
KTsKIAotICAgICAgICBpbmxpbmUgQWRkcmVzcyBwYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0
ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwotICAgICAgICBpbmxpbmUgQWRkcmVzcyBp
bnRQYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0
ZXIpOwotICAgICAgICBpbmxpbmUgQWRkcmVzcyBpbnRUYWdGb3IoaW50IGluZGV4LCBSZWdpc3Rl
cklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgICAgIGlubGluZSBBZGRyZXNzIGFk
ZHJlc3NGb3IoaW50IGluZGV4LCBSZWdpc3RlcklEIGJhc2UgPSBjYWxsRnJhbWVSZWdpc3Rlcik7
Ci0KICAgICAgICAgVk0qIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bTsgfQogCiAgICAgICAgIFZN
KiBtX3ZtOwpAQCAtMTAxLDI4ICs4Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsb2Fk
UHRyKHBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBkc3QpOwogICAgICAgICByZXR1
cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRhZ0ZvcihzdGF0aWNfY2FzdDxpbnQ+KHZpcnR1YWxSZWdp
c3RlckluZGV4KSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwogICAgIH0KLSAg
ICAKLSAgICBpbmxpbmUgSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OnRh
Z0ZvcihpbnQgdmlydHVhbFJlZ2lzdGVySW5kZXgsIFJlZ2lzdGVySUQgYmFzZSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCh2aXJ0dWFsUmVnaXN0ZXJJbmRleCA8IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KTsKLSAgICAgICAgcmV0dXJuIEFkZHJlc3MoYmFzZSwgKHN0YXRpY19jYXN0PHVuc2ln
bmVkPih2aXJ0dWFsUmVnaXN0ZXJJbmRleCkgKiBzaXplb2YoUmVnaXN0ZXIpKSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKTsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5l
IEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjpwYXlsb2FkRm9yKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHZpcnR1YWxSZWdpc3RlckluZGV4IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwot
ICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1
YWxSZWdpc3RlckluZGV4KSAqIHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNJbnRlcmZh
Y2VKSVQ6OkFkZHJlc3MgSlNJbnRlcmZhY2VKSVQ6OmludFBheWxvYWRGb3IoaW50IHZpcnR1YWxS
ZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAgewotICAgICAgICByZXR1cm4gcGF5
bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgYmFzZSk7Ci0gICAgfQotCi0gICAgaW5saW5l
IEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjppbnRUYWdGb3IoaW50IHZp
cnR1YWxSZWdpc3RlckluZGV4LCBSZWdpc3RlcklEIGJhc2UpCi0gICAgewotICAgICAgICByZXR1
cm4gdGFnRm9yKHZpcnR1YWxSZWdpc3RlckluZGV4LCBiYXNlKTsKLSAgICB9CiAKICAgICBpbmxp
bmUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkRG91YmxlKHVu
c2lnbmVkIHZpcnR1YWxSZWdpc3RlckluZGV4LCBGUFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklE
IHNjcmF0Y2gpCiAgICAgewpAQCAtMTY4LDMzICsxMzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgICAgICByZXR1cm4gbm90TnVtYmVyOwogICAgIH0K
LQotICAgIC8vIG9wZXJhbmQgaXMgaW50MzJfdCwgbXVzdCBoYXZlIGJlZW4gemVyby1leHRlbmRl
ZCBpZiByZWdpc3RlciBpcyA2NC1iaXQuCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJm
YWNlSklUOjplbWl0VGFnSW50KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAg
ewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7
Ci0gICAgICAgIG9yNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0jZW5k
aWYKLQotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRy
ZXNzIEpTSW50ZXJmYWNlSklUOjpwYXlsb2FkRm9yKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwg
UmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3Rlcklu
ZGV4IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAgICByZXR1cm4gYWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgYmFzZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIEpT
SW50ZXJmYWNlSklUOjpBZGRyZXNzIEpTSW50ZXJmYWNlSklUOjppbnRQYXlsb2FkRm9yKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHZpcnR1YWxSZWdpc3RlckluZGV4IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwot
ICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1
YWxSZWdpc3RlckluZGV4KSAqIHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSk7Ci0gICAgfQotICAgIGlubGlu
ZSBKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyBKU0ludGVyZmFjZUpJVDo6aW50VGFnRm9yKGludCB2
aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVnaXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKHZpcnR1YWxSZWdpc3RlckluZGV4IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwot
ICAgICAgICByZXR1cm4gQWRkcmVzcyhiYXNlLCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1
YWxSZWdpc3RlckluZGV4KSAqIHNpemVvZihSZWdpc3RlcikpICsgT0JKRUNUX09GRlNFVE9GKEVu
Y29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKTsKLSAgICB9CiAjZW5kaWYKIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoaW50IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCkBAIC0y
MDUsMzMgKzE0MSwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20s
IGludCBlbnRyeSkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgc3RvcmVQ
dHIoZnJvbSwgcGF5bG9hZEZvcihlbnRyeSwgY2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAgICAg
c3RvcmVQdHIoZnJvbSwgcGF5bG9hZEZvcihlbnRyeSkpOwogI2Vsc2UKLSAgICAgICAgc3RvcmU2
NChmcm9tLCBhZGRyZXNzRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBz
dG9yZTY0KGZyb20sIGFkZHJlc3NGb3IoZW50cnkpKTsKICNlbmRpZgogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KHZvaWQqIHZhbHVlLCBpbnQgZW50cnkpCiAgICAgewotICAgICAgICBzdG9yZVB0cihUcnVzdGVk
SW1tUHRyKHZhbHVlKSwgQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2Yo
UmVnaXN0ZXIpKSk7CisgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIodmFsdWUpLCBhZGRy
ZXNzRm9yKGVudHJ5KSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJm
YWNlSklUOjplbWl0UHV0Q2VsbFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgaW50
IGVudHJ5KQogICAgIHsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBzdG9yZTMyKFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgdGFnRm9yKGVudHJ5LCBjYWxsRnJhbWVSZWdp
c3RlcikpOwotICAgICAgICBzdG9yZTMyKGZyb20sIHBheWxvYWRGb3IoZW50cnksIGNhbGxGcmFt
ZVJlZ2lzdGVyKSk7CisgICAgICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpLCB0YWdGb3IoZW50cnkpKTsKKyAgICAgICAgc3RvcmUzMihmcm9tLCBwYXlsb2FkRm9yKGVu
dHJ5KSk7CiAjZWxzZQotICAgICAgICBzdG9yZTY0KGZyb20sIGFkZHJlc3NGb3IoZW50cnksIGNh
bGxGcmFtZVJlZ2lzdGVyKSk7CisgICAgICAgIHN0b3JlNjQoZnJvbSwgYWRkcmVzc0ZvcihlbnRy
eSkpOwogI2VuZGlmCiAgICAgfQogCi0gICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpBZGRyZXNz
IEpTSW50ZXJmYWNlSklUOjphZGRyZXNzRm9yKGludCB2aXJ0dWFsUmVnaXN0ZXJJbmRleCwgUmVn
aXN0ZXJJRCBiYXNlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHZpcnR1YWxSZWdpc3RlckluZGV4
IDwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpOwotICAgICAgICByZXR1cm4gQWRkcmVzcyhi
YXNlLCAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHZpcnR1YWxSZWdpc3RlckluZGV4KSAqIHNpemVv
ZihSZWdpc3RlcikpKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRo
dW5rSklULmgKaW5kZXggZjI4MjMyMWE0NjliMDVlZWMxOWU5N2Q5OGFiNzFjNDczZmY3ZjE1ZC4u
MmRkYWE1YWQ5ZmMyNGZjYTg3MzA5NjE4NTNlNTcwZjE0NDZlNTE2NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKQEAgLTEzNSw3ICsxMzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEp1bXAgbG93Tm9uWmVybyA9IGJyYW5j
aFRlc3RQdHIoTm9uWmVybywgcmVnVDEpOwogICAgICAgICAgICAgSnVtcCBoaWdoTm9uWmVybyA9
IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwogICAgICAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoMCksIHJlZ1QwKTsKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEludDMyVGFn
KSwgcmVnVDEpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpLCByZWdUMSk7CiAgICAgICAgICAgICBsb3dOb25aZXJvLmxpbmsodGhpcyk7CiAgICAgICAg
ICAgICBoaWdoTm9uWmVyby5saW5rKHRoaXMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggNmU3ZTYzMTNkY2YzZTBlYmMwZTg3
ZWZkNjI3MGYyMzY1ZWQ5MDIzMS4uZjU5YTRmZmY3ZGM0MDJhNzQ5OGZjMTZkZmRkNGM4MzVhNjZi
NzNjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cApAQCAtMjY1LDEyICsyNjUsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBuYXRpdmVGb3JHZW5lcmF0b3IoVk0qIHZtLCBUaHVua0Z1bgogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgIC8vIFdlJ3JlIGNvbWluZyBmcm9tIGEgc3BlY2lhbGl6ZWQgdGh1
bmsgdGhhdCBoYXMgc2F2ZWQgdGhlIHByaW9yIHRhZyByZWdpc3RlcnMnIGNvbnRlbnRzLgogICAg
ICAgICAvLyBSZXN0b3JlIHRoZW0gbm93LgotI2lmIENQVShBUk02NCkKICAgICAgICAgaml0LnBv
cFBhaXIoSlNJbnRlcmZhY2VKSVQ6OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgSlNJbnRlcmZhY2VK
SVQ6OnRhZ01hc2tSZWdpc3Rlcik7Ci0jZWxzZQotICAgICAgICBqaXQucG9wKEpTSW50ZXJmYWNl
SklUOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICBqaXQucG9wKEpTSW50ZXJmYWNlSklUOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotI2VuZGlmCiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzOgpAQCAtNDg1LDcgKzQ4MCw3IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRv
cihWTSogdm0pCiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QzLCBKU0ludGVyZmFjZUpJ
VDo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5Q
Q09mZnNldCgpKSk7CiAjZW5kaWYKICAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEpTSW50ZXJmYWNlSklUOjpyZWdUMyk7Ci0gICAgaml0LmxvYWQzMihKU0lu
dGVyZmFjZUpJVDo6QWRkcmVzcyhKU0ludGVyZmFjZUpJVDo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENh
bGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzaXplb2YoUmVnaXN0ZXIpKSwgSlNJbnRlcmZh
Y2VKSVQ6OmFyZ3VtZW50R1BSMik7CisgICAgaml0LmxvYWQzMihKU0ludGVyZmFjZUpJVDo6YWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50KSwgSlNJbnRlcmZhY2VKSVQ6OmFy
Z3VtZW50R1BSMik7CiAgICAgaml0LmFkZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIo
Q2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1l
bnRHUFIyKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGV4dHJhIHNsb3RzIHdl
IGNhbiB1c2UKQEAgLTU0OSw3ICs1NDQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGFyaXR5Rml4dXBHZW5lcmF0b3IoVk0qIHZtKQogICAgIGppdC5wb3AoSlNJbnRl
cmZhY2VKSVQ6OnJlZ1Q0KTsKICMgIGVuZGlmCiAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6
OmNhbGxGcmFtZVJlZ2lzdGVyLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwotICAgIGppdC5sb2Fk
MzIoSlNJbnRlcmZhY2VKSVQ6OkFkZHJlc3MoSlNJbnRlcmZhY2VKSVQ6OmNhbGxGcmFtZVJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50ICogc2l6ZW9mKFJlZ2lzdGVyKSksIEpT
SW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjIpOworICAgIGppdC5sb2FkMzIoSlNJbnRlcmZhY2VK
SVQ6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCksIEpTSW50ZXJmYWNl
SklUOjphcmd1bWVudEdQUjIpOwogICAgIGppdC5hZGQzMihKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbTMyKENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzKSwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2ZSBleHRyYSBz
bG90cyB3ZSBjYW4gdXNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>