<?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>215746</bug_id>
          
          <creation_ts>2020-08-21 17:55:06 -0700</creation_ts>
          <short_desc>[JSC] Add concurrency-aware version of isCallable / isConstructor to make it usable in DFG compiler</short_desc>
          <delta_ts>2020-08-25 01:07:13 -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>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682086</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-21 17:55:06 -0700</bug_when>
    <thetext>[JSC] Add concurrency-aware version of isCallable / isConstructor to make it usable in DFG compiler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682087</commentid>
    <comment_count>1</comment_count>
      <attachid>407035</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-21 17:56:56 -0700</bug_when>
    <thetext>Created attachment 407035
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682088</commentid>
    <comment_count>2</comment_count>
      <attachid>407036</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-21 18:12:13 -0700</bug_when>
    <thetext>Created attachment 407036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682089</commentid>
    <comment_count>3</comment_count>
      <attachid>407037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-21 18:20:25 -0700</bug_when>
    <thetext>Created attachment 407037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682445</commentid>
    <comment_count>4</comment_count>
      <attachid>407037</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-24 13:39:25 -0700</bug_when>
    <thetext>Comment on attachment 407037
Patch

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

&gt; Source/JavaScriptCore/runtime/Concurrency.h:34
&gt; +    OnMainThread,
&gt; +    Concurrently,

to make these names match, I&apos;d do:
OnMainThread, OnConcurrentThread

MainThread, ConcurrentThread

Main, Concurrent

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:254
&gt; +        else {

Do we need an else here, since previous &quot;if constexpr&quot; ends in a return?

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:257
&gt; +            if (type() == InternalFunctionType)

Maybe add a FIXME + link to bug about your plan to when NPAPI is removed b/c its concurrency issue, and rename getCallData to indicate it can be concurrent?

Or perhaps, if that doesn&apos;t work out, add a new getCallDataConcurrently version?

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:272
&gt; +    else {

Do we need an else here, since previous &quot;if constexpr&quot; ends in a return?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682602</commentid>
    <comment_count>5</comment_count>
      <attachid>407037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-25 01:03:57 -0700</bug_when>
    <thetext>Comment on attachment 407037
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/Concurrency.h:34
&gt;&gt; +    Concurrently,
&gt; 
&gt; to make these names match, I&apos;d do:
&gt; OnMainThread, OnConcurrentThread
&gt; 
&gt; MainThread, ConcurrentThread
&gt; 
&gt; Main, Concurrent

Changing it to MainThread / ConcurrentThread.

&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:254
&gt;&gt; +        else {
&gt; 
&gt; Do we need an else here, since previous &quot;if constexpr&quot; ends in a return?

Strictly speaking, this else makes else branch `if-constexpr-else`, but in this case, the above branch returns so maybe this does not affect on the generated code. Removed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:257
&gt;&gt; +            if (type() == InternalFunctionType)
&gt; 
&gt; Maybe add a FIXME + link to bug about your plan to when NPAPI is removed b/c its concurrency issue, and rename getCallData to indicate it can be concurrent?
&gt; 
&gt; Or perhaps, if that doesn&apos;t work out, add a new getCallDataConcurrently version?

Added FIXME.

&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:272
&gt;&gt; +    else {
&gt; 
&gt; Do we need an else here, since previous &quot;if constexpr&quot; ends in a return?

Removed because of the same reason above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682604</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-08-25 01:06:56 -0700</bug_when>
    <thetext>Committed r266107: &lt;https://trac.webkit.org/changeset/266107&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682605</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-25 01:07:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/67724632&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407035</attachid>
            <date>2020-08-21 17:56:56 -0700</date>
            <delta_ts>2020-08-21 18:12:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215746-20200821175655.patch</filename>
            <type>text/plain</type>
            <size>22121</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MDkzN2Q1YmE1YjYxOWJmYzQ4ZTVlMTU1NTkwMzNhZjA4YjcwMTQzLi4zNTM0ZjVjNzUxNWM0ZTE3
Njk2ODczZjY3MmUxMzcwYjY3MTM1ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0wOC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBjb25jdXJyZW5jeS1hd2FyZSB2ZXJzaW9uIG9mIGlzQ2Fs
bGFibGUgLyBpc0NvbnN0cnVjdG9yIHRvIG1ha2UgaXQgdXNhYmxlIGluIERGRyBjb21waWxlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzQ2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3kgYW5kIGlzQ29uc3RydWN0b3JXaXRoQ29u
Y3VycmVuY3kgdG8gSlNDZWxsLCBKU1ZhbHVlIGV0Yy4KKyAgICAgICAgVGhpcyBjYW4gd29yayBl
dmVuIGlmIGl0IGlzIGNhbGxlZCBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXIgdGhyZWFkcy4gV2Ug
YWxzbyBhZGQganNUeXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3kKKyAgICAgICAgYW5k
IGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeSB3aGljaCBhcmUgdXNpbmcgdGhlIGFi
b3ZlIFdpdGhDb25jdXJyZW5jeSBmdW5jdGlvbmFsaXRpZXMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogcnVudGltZS9Db25jdXJyZW5jeS5oOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlLmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU1ZhbHVlOjppc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNWYWx1ZTo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeSBjb25zdCk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5KToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjppc0NvbnN0cnVjdG9yV2l0aENvbmN1cnJlbmN5KToKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjppc0NhbGxhYmxlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0Nv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OnRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcik6CisgICAgICAgICogcnVudGltZS9P
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6anNUeXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29u
Y3VycmVuY3kpOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdGb3JWYWx1ZSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisgICAgICAgIChKU0M6OmpzVHlwZW9m
SXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmluZ0Zv
clZhbHVlKToKKyAgICAgICAgKEpTQzo6anNUeXBlb2ZJc0Z1bmN0aW9uKToKKwogMjAyMC0wOC0y
MSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjU5NjUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggYTg2Mjg4YjJlNzc3MGU4ODE3YTBlOGRiMmI0OGQ3MjYzNzc4ZGMxNS4uNTk4YzA1
N2ExZmFkZjNiNjIxZTBmOWEyOWQyZTg4YWYzMjc4Y2E5YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtODE3LDYgKzgxNyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCiAg
ICAgcnVudGltZS9Db21waWxhdGlvblJlc3VsdC5oCiAgICAgcnVudGltZS9Db21wbGV0aW9uLmgK
KyAgICBydW50aW1lL0NvbmN1cnJlbmN5LmgKICAgICBydW50aW1lL0NvbmN1cnJlbnRKU0xvY2su
aAogICAgIHJ1bnRpbWUvQ29uZmlnRmlsZS5oCiAgICAgcnVudGltZS9Db25zb2xlQ2xpZW50LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTI4ZjU1ODkzODBlZGViMzgzN2U3Yjhi
ZTMwMzQyZDk5ZDI5Yjc3Ni4uOTczNWZhYjc4MGJmODk2N2VkYzc2ZWZkZDhjYWU1OWU2ZmJlNWY1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MzgsNiArMTgzOCw3IEBACiAJ
CUUzNjVGMzNCMjRBQTYyM0IwMEM5OTFCMiAvKiBJbnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2NUYz
MzgyNEFBNjIxMTAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUubHV0LmggKi87
IH07CiAJCUUzNkI3NjcwMjJGOEQ2MTkwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZCNzY2
RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICovOyB9OwogCQlF
MzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAwNTFG
RkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVu
Y3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkVE
Q0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4MzUwMEEy
MzkwRDkzQjAwMzYzMTZEIC8qIFdhc21HbG9iYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODM1MDA5MjM5MEQ5MzcwMDM2MzE2RCAvKiBXYXNtR2xv
YmFsLmggKi87IH07CiAJCUUzODUwQjE1MjI2RUQ2NDEwMDlBQkY5QyAvKiBERkdNaW5pZmllZElE
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggKi87IH07
CkBAIC01MDI5LDYgKzUwMzAsNyBAQAogCQlFMzZCNzY2RTIyRjhENjExMDBEMDk4MTggLyogV2Fz
bU9NR0Zvck9TUkVudHJ5UGxhbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtT01HRm9yT1NS
RW50cnlQbGFuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2Qjc2NkYyMkY4
RDYxMTAwRDA5ODE4IC8qIFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ3JlYXRpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25jdXJyZW5jeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kdWxl
QW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM3Q0ZCMkQyMkYyN0M1NzAwOUE3QjM4IC8qIFdhc21Db21waWxhdGlvbk1vZGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2FzbUNvbXBpbGF0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03MTI4LDYgKzcxMzAsNyBAQAogCQkJCUE3RTVBM0E2MTc5NzQzMkQwMEU4
OTNDMCAvKiBDb21waWxhdGlvblJlc3VsdC5oICovLAogCQkJCTk2OUEwOTIyMEVEMUUwOUMwMEYx
RjY4MSAvKiBDb21wbGV0aW9uLmNwcCAqLywKIAkJCQlGNUJCMkJDNTAzMEY3NzIxMDFGQ0ZFMUQg
LyogQ29tcGxldGlvbi5oICovLAorCQkJCUUzNkVEQ0U0MjRGMDk3NTcwMEU2MERBMiAvKiBDb25j
dXJyZW5jeS5oICovLAogCQkJCTBGREIyQ0U5MTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50
SlNMb2NrLmggKi8sCiAJCQkJNjU4ODI0QjAxRTVDRkRGNDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUu
Y3BwICovLAogCQkJCTY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmggKi8s
CkBAIC05Mjc4LDYgKzkyODEsNyBAQAogCQkJCTBGRDJGRDk0MjBCNTJCREUwMEYwOTQ0MSAvKiBD
b21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRjQwRTE2
RjVDRDAwQjM0NDYwIC8qIENvbXBsZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkZDNzUx
MTk2MTEwQTgwMEUxRDAyRCAvKiBDb21wbGV4R2V0U3RhdHVzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzZFRENFNTI0RjA5NzU3MDBFNjBEQTIgLyogQ29uY3VycmVuY3kuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGREIyQ0VBMTc0ODk2QzcwMDdCM0MxQiAvKiBDb25jdXJyZW50SlNMb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNGNTBFMTZGNUNEMDBCMzQ0NjAgLyogY29uZmlnLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmlsZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNTllZmI2ZDljZTViMmIyODFl
N2UxMzU4NDE3NmExMDJmYzcyMWYwMC4uZDVmNGY5NDVlNDI3NWVkZmFjOGJkZWIxZWJjYTA5M2Rj
ZmQ3NjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTQ5MSw5ICsxNDkxLDE0IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzTnVsbCgp
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGVPZklzRnVu
Y3Rpb246Ci0gICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGpzVHlw
ZW9mSXNGdW5jdGlvbihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyksIGNoaWxkLnZhbHVlKCkpKSk7CisgICAgICAgICAgICBjYXNlIFR5cGVPZklzRnVu
Y3Rpb246IHsKKyAgICAgICAgICAgICAgICBUcmlTdGF0ZSByZXN1bHQgPSBqc1R5cGVvZklzRnVu
Y3Rpb25XaXRoQ29uY3VycmVuY3k8Q29uY3VycmVuY3k6OkNvbmN1cnJlbnRseT4obV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGlsZC52YWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
KQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4ocmVzdWx0
ID09IFRyaVN0YXRlOjpUcnVlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZE9yTnVsbDoKICAgICAg
ICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTEyLDEyICsx
NTE3LDIyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4
ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgICAgICBjYXNlIElzT2Jq
ZWN0OgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52
YWx1ZSgpLmlzT2JqZWN0KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgSXNDYWxsYWJsZToKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jv
b2xlYW4oY2hpbGQudmFsdWUoKS5pc0NhbGxhYmxlKG1fdm0pKSk7CisgICAgICAgICAgICBjYXNl
IElzQ2FsbGFibGU6IHsKKyAgICAgICAgICAgICAgICBUcmlTdGF0ZSByZXN1bHQgPSBjaGlsZC52
YWx1ZSgpLmlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3k8Q29uY3VycmVuY3k6OkNvbmN1cnJlbnRs
eT4obV92bSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFu
KHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3RhbnRXYXNTZXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgSXNDb25zdHJ1Y3RvcjoKLSAgICAgICAgICAgICAgICBz
ZXRDb25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0NvbnN0cnVjdG9yKG1f
dm0pKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIElzQ29uc3RydWN0b3I6IHsK
KyAgICAgICAgICAgICAgICBUcmlTdGF0ZSByZXN1bHQgPSBjaGlsZC52YWx1ZSgpLmlzQ29uc3Ry
dWN0b3JXaXRoQ29uY3VycmVuY3k8Q29uY3VycmVuY3k6OkNvbmN1cnJlbnRseT4obV92bSk7Cisg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKHJlc3VsdCA9PSBU
cmlTdGF0ZTo6VHJ1ZSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3RhbnRXYXNTZXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgSXNFbXB0eToKICAgICAgICAgICAgICAgICBzZXRD
b25zdGFudChub2RlLCBqc0Jvb2xlYW4oY2hpbGQudmFsdWUoKS5pc0VtcHR5KCkpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTE3ODIsOSArMTc5NywxMCBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
dmFsdWUoKTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RDaGlsZCA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAoY2hpbGQpIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgdHlwZVN0cmluZyA9IGpzVHlwZVN0cmluZ0ZvclZhbHVlKG1fdm0sIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwgY2hpbGQpOwotICAgICAgICAg
ICAgc2V0Q29uc3RhbnQobm9kZSwgKm1fZ3JhcGguZnJlZXplKHR5cGVTdHJpbmcpKTsKLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKEpTU3RyaW5nKiB0eXBlU3RyaW5nID0ganNU
eXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3kobV92bSwgbV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGlsZCwgQ29uY3VycmVuY3k6OkNv
bmN1cnJlbnRseSkpIHsKKyAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFw
aC5mcmVlemUodHlwZVN0cmluZykpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoaXNGdWxsTnVtYmVyU3BlY3Vs
YXRpb24oYWJzdHJhY3RDaGlsZC5tX3R5cGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25jdXJyZW5jeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29uY3VycmVuY3kuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWZmODRlMjUwYzdhMTlkZmI2M2QwZDdk
ZTkwMzM0MDRhNTk1ZmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29uY3VycmVuY3kuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2VudW0gY2xhc3MgQ29uY3VycmVuY3kgOiB1aW50OF90IHsKKyAgICBPbk1haW5UaHJl
YWQsCisgICAgQ29uY3VycmVudGx5LAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCitpbmxpbmUgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IEpTQzo6Q29uY3VycmVuY3kgY29uY3VycmVuY3kpCit7CisgICAgc3dpdGNoIChjb25jdXJyZW5j
eSkgeworICAgIGNhc2UgSlNDOjpDb25jdXJyZW5jeTo6T25NYWluVGhyZWFkOgorICAgICAgICBv
dXQucHJpbnQoIk9uTWFpblRocmVhZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6
OkNvbmN1cnJlbmN5OjpDb25jdXJyZW50bHk6CisgICAgICAgIG91dC5wcmludCgiQ29uY3VycmVu
dGx5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAwODE0OTZiNzdjOGU2NTA4NTJjOGY3Yzk4OWRl
MTU0ZjlhNTMwNGVjLi4xMzFmMDBhZmQyNTYyYzVjOWQ0NDU1MzVmN2I3Y2M5M2YxZGEyNWZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCkBAIC0yMiw2ICsy
Miw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29uY3VycmVuY3kuaCIKICNpbmNs
dWRlICJFQ01BTW9kZS5oIgogI2luY2x1ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCiAjaW5jbHVkZSAi
UHVyZU5hTi5oIgpAQCAtMjMzLDcgKzIzNCw5IEBAIGNsYXNzIEpTVmFsdWUgewogICAgIC8vIFF1
ZXJ5aW5nIHRoZSB0eXBlLgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogICAgIGJvb2wgaXND
YWxsYWJsZShWTSYpIGNvbnN0OworICAgIHRlbXBsYXRlPENvbmN1cnJlbmN5PiBUcmlTdGF0ZSBp
c0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5KFZNJikgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKFZNJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Q29uY3VycmVuY3k+IFRyaVN0YXRlIGlzQ29u
c3RydWN0b3JXaXRoQ29uY3VycmVuY3koVk0mKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZpbmVk
KCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZpbmVk
T3JOdWxsKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAppbmRleCA2ZWQ3OWFhMjQ1NWFmYTI1YTRkNDM3NGMxNGU1ZmIxNTE2
ZjQyYmE2Li5iZDZmMzFjODIwN2VmNmMzODhiZDM1MDhiNzFiZDczOTNhMzVmMzM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAg
LTkyMCwxMSArOTIwLDI3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ2FsbGFibGUoVk0mIHZt
KSBjb25zdAogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNDYWxsYWJsZSh2bSk7
CiB9CiAKK3RlbXBsYXRlPENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5PgoraW5saW5lIFRyaVN0YXRl
IEpTVmFsdWU6OmlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3koVk0mIHZtKSBjb25zdAoreworICAg
IGlmICghaXNDZWxsKCkpCisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgcmV0
dXJuIGFzQ2VsbCgpLT5pc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5PGNvbmN1cnJlbmN5Pih2bSk7
Cit9CisKIGlubGluZSBib29sIEpTVmFsdWU6OmlzQ29uc3RydWN0b3IoVk0mIHZtKSBjb25zdAog
ewogICAgIHJldHVybiBpc0NlbGwoKSAmJiBhc0NlbGwoKS0+aXNDb25zdHJ1Y3Rvcih2bSk7CiB9
CiAKK3RlbXBsYXRlPENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5PgoraW5saW5lIFRyaVN0YXRlIEpT
VmFsdWU6OmlzQ29uc3RydWN0b3JXaXRoQ29uY3VycmVuY3koVk0mIHZtKSBjb25zdAoreworICAg
IGlmICghaXNDZWxsKCkpCisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgcmV0
dXJuIGFzQ2VsbCgpLT5pc0NvbnN0cnVjdG9yV2l0aENvbmN1cnJlbmN5PGNvbmN1cnJlbmN5Pih2
bSk7Cit9CisKIC8vIHRoaXMgbWV0aG9kIGlzIGhlcmUgdG8gYmUgYWZ0ZXIgdGhlIGlubGluZSBk
ZWNsYXJhdGlvbiBvZiBKU0NlbGw6OmluaGVyaXRzCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppbmhl
cml0cyhWTSYgdm0sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBjNjE1ODBjMTY5YzZmYmZiOGE3MDNi
NjMzMTAwYjQwYzY1NWI1N2ZjLi5mZDg4ZTExODcxYTM5ZGE5MDQwN2E4ZjgxMGU5MGQxNGQ2MWRi
NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMTA5LDYgKzEw
OSw4IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgYm9vbCBpc1Byb3h5
KCkgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJik7CiAgICAgYm9vbCBpc0NvbnN0cnVj
dG9yKFZNJik7CisgICAgdGVtcGxhdGU8Q29uY3VycmVuY3k+IFRyaVN0YXRlIGlzQ2FsbGFibGVX
aXRoQ29uY3VycmVuY3koVk0mKTsKKyAgICB0ZW1wbGF0ZTxDb25jdXJyZW5jeT4gVHJpU3RhdGUg
aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeShWTSYpOwogICAgIGJvb2wgaW5oZXJpdHMoVk0m
LCBjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQ+
IGJvb2wgaW5oZXJpdHMoVk0mKSBjb25zdDsKICAgICBib29sIGlzQVBJVmFsdWVXcmFwcGVyKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgK
aW5kZXggYTgyNTEyZmJmMWEzNjFiYzg4NTZlMGNmZDdhZWFkNTI1NDY1OWIwYi4uZGQ0NjUwNDVl
YTgxYzBlODc2MjY5MzYzYWE5OTdlZGIzNjEzN2EzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaApAQCAtMjQxLDE4ICsyNDEsNDEgQEAgaW5saW5l
IGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IEltcHVy
ZVByb3h5VHlwZSB8fCBtX3R5cGUgPT0gUHVyZUZvcndhcmRpbmdQcm94eVR5cGUgfHwgbV90eXBl
ID09IFByb3h5T2JqZWN0VHlwZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6aXND
YWxsYWJsZShWTSYgdm0pCit0ZW1wbGF0ZTxDb25jdXJyZW5jeSBjb25jdXJyZW5jeT4KK0FMV0FZ
U19JTkxJTkUgVHJpU3RhdGUgSlNDZWxsOjppc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5KFZNJiB2
bSkKIHsKICAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkK
LSAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodGhpcykudHlwZSAh
PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6VHJ1ZTsKKyAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkgJiBPdmVycmlkZXNH
ZXRDYWxsRGF0YSkgeworICAgICAgICBpZiBjb25zdGV4cHIgKGNvbmN1cnJlbmN5ID09IENvbmN1
cnJlbmN5OjpPbk1haW5UaHJlYWQpCisgICAgICAgICAgICByZXR1cm4gKG1ldGhvZFRhYmxlKHZt
KS0+Z2V0Q2FsbERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlT
dGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOworICAgIH0KKyAgICByZXR1cm4gVHJpU3Rh
dGU6OkZhbHNlOworfQorCit0ZW1wbGF0ZTxDb25jdXJyZW5jeSBjb25jdXJyZW5jeT4KK2lubGlu
ZSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ29uc3RydWN0b3JXaXRoQ29uY3VycmVuY3koVk0mIHZtKQor
eworICAgIGlmIGNvbnN0ZXhwciAoY29uY3VycmVuY3kgPT0gQ29uY3VycmVuY3k6Ok9uTWFpblRo
cmVhZCkKKyAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEo
dGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRy
aVN0YXRlOjpGYWxzZTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKK30KKworQUxXQVlTX0lOTElORSBib29sIEpTQ2VsbDo6aXNDYWxsYWJsZShWTSYg
dm0pCit7CisgICAgYXV0byByZXN1bHQgPSBpc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5PENvbmN1
cnJlbmN5OjpPbk1haW5UaHJlYWQ+KHZtKTsKKyAgICBBU1NFUlQocmVzdWx0ICE9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlKTsKKyAgICByZXR1cm4gcmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlOwog
fQogCi1pbmxpbmUgYm9vbCBKU0NlbGw6OmlzQ29uc3RydWN0b3IoVk0mIHZtKQorQUxXQVlTX0lO
TElORSBib29sIEpTQ2VsbDo6aXNDb25zdHJ1Y3RvcihWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIG1l
dGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lOworICAgIGF1dG8gcmVzdWx0ID0gaXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5j
eTxDb25jdXJyZW5jeTo6T25NYWluVGhyZWFkPih2bSk7CisgICAgQVNTRVJUKHJlc3VsdCAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAgcmV0dXJuIHJlc3VsdCA9PSBUcmlTdGF0ZTo6
VHJ1ZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAppbmRleCAzOTMzYmQ4NDkxZjY5MzVlMTE0ZjFkZWFlN2RmM2QyNWI5ZjE5NjIyLi41OGFjMThj
ZjIwZDVmOWYxZjFmNDVkY2UyYTc5NmI3NzlmZTY5YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHRvVGhpc051bWJlcihWTSYgdm0sIEpTVmFsdWUg
dGhpc1ZhbHVlLCBkb3VibGUmIHgpCiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1Zh
bHVlIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUaHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7Ci0gICAgYXV0byB0eXBl
U3RyaW5nID0gYXNTdHJpbmcoanNUeXBlU3RyaW5nRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LT52bSgp
LCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpLT52YWx1ZShnbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdHlwZVN0cmluZyA9IGpzVHlwZVN0cmluZ0ZvclZhbHVlKGdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OwogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFdURjo6
bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwgdHlw
ZVN0cmluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmNwcAppbmRleCBkMTA5Mzc3YzRiYWUyMDZjYjAxNDc2MmVmMDIyNTVmYWFkMGU3N2VmLi43NmZm
OTZjMTcxNjhiNTUwMWJlMjMwOTZkY2E2MTkxN2VhYTUxNGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtNzUsNyArNzUsNyBAQCBORVZFUl9J
TkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdjEsIEpTVgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgYXJpdGhtZXRp
Y0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBkb3VibGVPcCwgYmlnSW50T3AsICJJbnZh
bGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRpb24uIl9zKSk7CiB9CiAK
LUpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHYpCitKU1N0cmluZyoganNUeXBlU3RyaW5nRm9yVmFsdWVXaXRo
Q29uY3VycmVuY3koVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYsIENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5KQogewogICAgIGlmICh2LmlzVW5kZWZpbmVkKCkp
CiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7CkBAIC05
NSwxNyArOTUsMjQgQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAgICAgLy8gYXMgbnVsbCB3
aGVuIGRvaW5nIGNvbXBhcmlzb25zLgogICAgICAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUodm0p
LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAgICAgICBpZiAob2JqZWN0
LT5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgaWYgKExJS0VMWShjb25jdXJyZW5jeSA9PSBDb25j
dXJyZW5jeTo6T25NYWluVGhyZWFkKSkgeworICAgICAgICAgICAgaWYgKG9iamVjdC0+aXNDYWxs
YWJsZSh2bSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5mdW5jdGlv
blN0cmluZygpOworICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJp
bmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAob2JqZWN0LT5pc0NhbGxhYmxlV2l0
aENvbmN1cnJlbmN5PENvbmN1cnJlbmN5OjpDb25jdXJyZW50bHk+KHZtKSkgeworICAgICAgICBj
YXNlIFRyaVN0YXRlOjpUcnVlOgogICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5m
dW5jdGlvblN0cmluZygpOworICAgICAgICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKKyAgICAgICAg
ICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCk7CisgICAgICAgIGNhc2Ug
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm9iamVjdFN0cmluZygp
OwogfQogCi1KU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdikKLXsKLSAgICByZXR1cm4ganNUeXBlU3RyaW5nRm9yVmFsdWUo
Z2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHYpOwotfQotCiBib29sIGpzVHlwZW9m
SXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wZXJhdGlvbnMuaAppbmRleCBmMzE0MWU2MDU4YmYzMWI2M2FiNGQ4NmJjOTRjNThhN2M1
ZDZlNDBkLi5iOTRlZmM5MjY0NTE1MDc5NDg2MmI2MDBhNGIxYWYwODA0NDg0NDM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC0zMSwyMiArMzEsMzIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEludmFsaWRQcm90b3R5cGVDaGFpbiAoc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKIAogTkVWRVJfSU5MSU5FIEpTVmFsdWUganNB
ZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFsdWUpOwotSlNWYWx1ZSBq
c1R5cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwotSlNWYWx1ZSBq
c1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CitKU1N0
cmluZyoganNUeXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3koVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUsIENvbmN1cnJlbmN5KTsKIGJvb2wganNUeXBlb2ZJc09iamVjdChKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwogc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgYm9vbCYgc2F3UG9seVByb3RvKTsKIAotQUxXQVlTX0lO
TElORSBib29sIGpzVHlwZW9mSXNGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8Q29uY3VycmVuY3kgY29uY3VycmVuY3k+CitBTFdB
WVNfSU5MSU5FIFRyaVN0YXRlIGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkgewotICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgICAgICBpZiAob2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChvYmplY3QtPmlzQ2FsbGFibGUo
dm0pKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFs
c2U7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKKyAgICBpZiAob2Jq
ZWN0LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkp
CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgcmV0dXJuIG9iamVjdC0+aXND
YWxsYWJsZVdpdGhDb25jdXJyZW5jeTxjb25jdXJyZW5jeT4odm0pOworfQorCitpbmxpbmUgSlNT
dHJpbmcqIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIGpzVHlwZVN0cmluZ0ZvclZhbHVlV2l0aENv
bmN1cnJlbmN5KGdldFZNKGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgdmFsdWUsIENvbmN1
cnJlbmN5OjpPbk1haW5UaHJlYWQpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wganNUeXBlb2ZJ
c0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgYXV0byByZXN1bHQgPSBqc1R5cGVvZklzRnVuY3Rpb25XaXRoQ29uY3VycmVuY3k8Q29u
Y3VycmVuY3k6Ok9uTWFpblRocmVhZD4oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgQVNTRVJU
KHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAgcmV0dXJuIHJlc3VsdCA9
PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1N0cmluZyoganNTdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB1MSwgSlNTdHJpbmcq
IHMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407036</attachid>
            <date>2020-08-21 18:12:13 -0700</date>
            <delta_ts>2020-08-21 18:20:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215746-20200821181212.patch</filename>
            <type>text/plain</type>
            <size>26696</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MDkzN2Q1YmE1YjYxOWJmYzQ4ZTVlMTU1NTkwMzNhZjA4YjcwMTQzLi41MGJhMTYyZWM4ODVlMzc5
M2VkMTYyNWE3NDUxMTljMTdjNzRiZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMC0wOC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBjb25jdXJyZW5jeS1hd2FyZSB2ZXJzaW9uIG9mIGlzQ2Fs
bGFibGUgLyBpc0NvbnN0cnVjdG9yIHRvIG1ha2UgaXQgdXNhYmxlIGluIERGRyBjb21waWxlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzQ2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3kgYW5kIGlzQ29uc3RydWN0b3JXaXRoQ29u
Y3VycmVuY3kgdG8gSlNDZWxsLCBKU1ZhbHVlIGV0Yy4KKyAgICAgICAgVGhpcyBjYW4gd29yayBl
dmVuIGlmIGl0IGlzIGNhbGxlZCBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXIgdGhyZWFkcy4gV2Ug
YWxzbyBhZGQganNUeXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3kKKyAgICAgICAgYW5k
IGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeSB3aGljaCBhcmUgdXNpbmcgdGhlIGFi
b3ZlIFdpdGhDb25jdXJyZW5jeSBmdW5jdGlvbmFsaXRpZXMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogcnVudGltZS9Db25jdXJyZW5jeS5oOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6Cisg
ICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5j
eSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQ29uc3RydWN0b3JXaXRoQ29uY3Vy
cmVuY3kgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDYWxsYWJsZVdp
dGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDb25zdHJ1Y3RvcldpdGhD
b25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDYWxsYWJsZSk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dWTVRvVGhpc051bWJlckVycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdG
b3JWYWx1ZVdpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmluZ0ZvclZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KEpTQzo6anNUeXBlb2ZJc0Z1bmN0aW9uV2l0aENvbmN1cnJlbmN5KToKKyAgICAgICAgKEpTQzo6
anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpqc1R5cGVvZklzRnVuY3Rpb24p
OgorCiAyMDIwLTA4LTIxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2NTk2NS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhODYyODhiMmU3NzcwZTg4MTdhMGU4ZGIyYjQ4ZDcyNjM3
NzhkYzE1Li41OThjMDU3YTFmYWRmM2I2MjFlMGY5YTI5ZDJlODhhZjMyNzhjYTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTcsNiArODE3LDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKICAgICBydW50aW1lL0NvbXBpbGF0aW9uUmVzdWx0LmgKICAgICBydW50aW1l
L0NvbXBsZXRpb24uaAorICAgIHJ1bnRpbWUvQ29uY3VycmVuY3kuaAogICAgIHJ1bnRpbWUvQ29u
Y3VycmVudEpTTG9jay5oCiAgICAgcnVudGltZS9Db25maWdGaWxlLmgKICAgICBydW50aW1lL0Nv
bnNvbGVDbGllbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMjhmNTU4OTM4
MGVkZWIzODM3ZTdiOGJlMzAzNDJkOTlkMjliNzc2Li45NzM1ZmFiNzgwYmY4OTY3ZWRjNzZlZmRk
OGNhZTU5ZTZmYmU1ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgzOCw2
ICsxODM4LDcgQEAKIAkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5sdXQuaCAqLzsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5ODE4IC8qIFdhc21PTUdG
b3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFu
LmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0
NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkVEQ0U1MjRGMDk3NTcwMEU2MERB
MiAvKiBDb25jdXJyZW5jeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM2RURDRTQyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzYxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYz
MTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFCRjlDIC8q
IERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElu
bGluZXMuaCAqLzsgfTsKQEAgLTUwMjksNiArNTAzMCw3IEBACiAJCUUzNkI3NjZFMjJGOEQ2MTEw
MEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlvbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RURDRTQyNEYwOTc1NzAwRTYwREEyIC8q
IENvbmN1cnJlbmN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmN1cnJl
bmN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzdDRkIyRDIyRjI3QzU3MDA5QTdCMzggLyogV2FzbUNvbXBpbGF0aW9u
TW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29tcGlsYXRpb25Nb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMjgsNiArNzEzMCw3IEBACiAJCQkJQTdFNUEz
QTYxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggKi8sCiAJCQkJOTY5QTA5
MjIwRUQxRTA5QzAwRjFGNjgxIC8qIENvbXBsZXRpb24uY3BwICovLAogCQkJCUY1QkIyQkM1MDMw
Rjc3MjEwMUZDRkUxRCAvKiBDb21wbGV0aW9uLmggKi8sCisJCQkJRTM2RURDRTQyNEYwOTc1NzAw
RTYwREEyIC8qIENvbmN1cnJlbmN5LmggKi8sCiAJCQkJMEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFC
IC8qIENvbmN1cnJlbnRKU0xvY2suaCAqLywKIAkJCQk2NTg4MjRCMDFFNUNGREY0MDBGQjczNTkg
LyogQ29uZmlnRmlsZS5jcHAgKi8sCiAJCQkJNjU4ODI0QUUxRTVDRkRCMDAwRkI3MzU5IC8qIENv
bmZpZ0ZpbGUuaCAqLywKQEAgLTkyNzgsNiArOTI4MSw3IEBACiAJCQkJMEZEMkZEOTQyMEI1MkJE
RTAwRjA5NDQxIC8qIENvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzNkVEQ0U1MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDRUExNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJl
bnRKU0xvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0Y1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1ODgyNEFGMUU1Q0ZEQjAwMEZCNzM1OSAv
KiBDb25maWdGaWxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA1OWVm
YjZkOWNlNWIyYjI4MWU3ZTEzNTg0MTc2YTEwMmZjNzIxZjAwLi5kNWY0Zjk0NWU0Mjc1ZWRmYWM4
YmRlYjFlYmNhMDkzZGNmZDc2NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNDkxLDkgKzE0
OTEsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZh
bHVlKCkuaXNOdWxsKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgVHlwZU9mSXNGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0Jvb2xlYW4oanNUeXBlb2ZJc0Z1bmN0aW9uKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwgY2hpbGQudmFsdWUoKSkpKTsKKyAgICAgICAgICAgIGNh
c2UgVHlwZU9mSXNGdW5jdGlvbjogeworICAgICAgICAgICAgICAgIFRyaVN0YXRlIHJlc3VsdCA9
IGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5jeTo6Q29uY3VycmVu
dGx5PihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IGNoaWxkLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGUpCisgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbihyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVk
T3JOdWxsOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGls
ZC52YWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTE1MTIsMTIgKzE1MTcsMjIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNC
b29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmplY3QoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBJc0NhbGxhYmxlOgotICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQ2FsbGFibGUobV92bSkpKTsKKyAg
ICAgICAgICAgIGNhc2UgSXNDYWxsYWJsZTogeworICAgICAgICAgICAgICAgIFRyaVN0YXRlIHJl
c3VsdCA9IGNoaWxkLnZhbHVlKCkuaXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5j
eTo6Q29uY3VycmVudGx5PihtX3ZtKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFRy
aVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4ocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgotICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlz
Q29uc3RydWN0b3IobV92bSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgSXND
b25zdHJ1Y3RvcjogeworICAgICAgICAgICAgICAgIFRyaVN0YXRlIHJlc3VsdCA9IGNoaWxkLnZh
bHVlKCkuaXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5jeTo6Q29uY3VycmVu
dGx5PihtX3ZtKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xl
YW4ocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBJc0VtcHR5OgogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzRW1w
dHkoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc4Miw5ICsxNzk3LDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdENo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmIChjaGlsZCkgewotICAg
ICAgICAgICAgSlNWYWx1ZSB0eXBlU3RyaW5nID0ganNUeXBlU3RyaW5nRm9yVmFsdWUobV92bSwg
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGls
ZCk7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUodHlwZVN0
cmluZykpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoSlNTdHJpbmcqIHR5
cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZVdpdGhDb25jdXJyZW5jeShtX3ZtLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIGNoaWxkLCBD
b25jdXJyZW5jeTo6Q29uY3VycmVudGx5KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsICptX2dyYXBoLmZyZWV6ZSh0eXBlU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChpc0Z1
bGxOdW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbmN5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW5jeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZmY4NGUyNTBj
N2ExOWRmYjYzZDBkN2RlOTAzMzQwNGE1OTVmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW5jeS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBDb25jdXJyZW5jeSA6IHVpbnQ4X3Qgewor
ICAgIE9uTWFpblRocmVhZCwKKyAgICBDb25jdXJyZW50bHksCit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpDb25jdXJyZW5jeSBjb25jdXJyZW5jeSkKK3sKKyAgICBzd2l0
Y2ggKGNvbmN1cnJlbmN5KSB7CisgICAgY2FzZSBKU0M6OkNvbmN1cnJlbmN5OjpPbk1haW5UaHJl
YWQ6CisgICAgICAgIG91dC5wcmludCgiT25NYWluVGhyZWFkIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEpTQzo6Q29uY3VycmVuY3k6OkNvbmN1cnJlbnRseToKKyAgICAgICAgb3V0LnBy
aW50KCJDb25jdXJyZW50bHkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRl
eCA3NGRkZDY1ZjQzZTk5OTg0YmI4ZGY0MjAwMWI0M2NkMzA0NTA1MDkwLi44MDUxMmQ3MDI5ZDU5
N2U1YWRhMWNlNDM1YjM5NmI4ZmQ0MzhkZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQCB2b2lk
IEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBOYW1lQWRkaXRpb25NbwogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICBBU1NFUlQoanNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odm0sIHRoaXMpKTsKKyAg
ICAvLyBKU0NlbGw6OntnZXRDYWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENh
bGxEYXRhID09IEludGVybmFsRnVuY3Rpb246OmluZm8oKS0+bWV0aG9kVGFibGUuZ2V0Q2FsbERh
dGEpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEgPT0gSW50
ZXJuYWxGdW5jdGlvbjo6aW5mbygpLT5tZXRob2RUYWJsZS5nZXRDb25zdHJ1Y3REYXRhKTsKICAg
ICBBU1NFUlQodHlwZSgpID09IEludGVybmFsRnVuY3Rpb25UeXBlIHx8IHR5cGUoKSA9PSBOdWxs
U2V0dGVyRnVuY3Rpb25UeXBlKTsKQEAgLTg2LDYgKzg3LDcgQEAgY29uc3QgU3RyaW5nIEludGVy
bmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKFZNJiB2bSkKIAogQ2FsbERhdGEgSW50ZXJuYWxGdW5j
dGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIC8vIEtlZXAgdGhpcyBmdW5j
dGlvbiBPSyBmb3IgaW52b2NhdGlvbiBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXJzLgogICAgIGF1
dG8qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihjZWxsKTsKICAgICBBU1NF
UlQoZnVuY3Rpb24tPm1fZnVuY3Rpb25Gb3JDYWxsKTsKIApAQCAtOTcsNiArOTksNyBAQCBDYWxs
RGF0YSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiAKIENhbGxE
YXRhIEludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsKQogewor
ICAgIC8vIEtlZXAgdGhpcyBmdW5jdGlvbiBPSyBmb3IgaW52b2NhdGlvbiBmcm9tIGNvbmN1cnJl
bnQgY29tcGlsZXJzLgogICAgIENhbGxEYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgYXV0byogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNlbGwpOwogICAgIGlmIChmdW5jdGlv
bi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdCAhPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDA4
MTQ5NmI3N2M4ZTY1MDg1MmM4ZjdjOTg5ZGUxNTRmOWE1MzA0ZWMuLjEzMWYwMGFmZDI1NjJjNWM5
ZDQ0NTUzNWY3YjdjYzkzZjFkYTI1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKQEAgLTIyLDYgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDb25jdXJyZW5jeS5oIgogI2luY2x1ZGUgIkVDTUFNb2RlLmgiCiAjaW5jbHVkZSAiSlNF
eHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlICJQdXJlTmFOLmgiCkBAIC0yMzMsNyArMjM0LDkgQEAg
Y2xhc3MgSlNWYWx1ZSB7CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Q29uY3VycmVuY3k+IFRyaVN0YXRlIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3koVk0mKSBj
b25zdDsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxD
b25jdXJyZW5jeT4gVHJpU3RhdGUgaXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeShWTSYpIGNv
bnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICBib29sIGlzTnVsbCgpIGNv
bnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDZlZDc5YWEy
NDU1YWZhMjVhNGQ0Mzc0YzE0ZTVmYjE1MTZmNDJiYTYuLmJkNmYzMWM4MjA3ZWY2YzM4OGJkMzUw
OGI3MWJkNzM5M2EzNWYzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtOTIwLDExICs5MjAsMjcgQEAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc0NhbGxhYmxlKHZtKTsKIH0KIAordGVtcGxhdGU8Q29uY3VycmVuY3kgY29u
Y3VycmVuY3k+CitpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6aXNDYWxsYWJsZVdpdGhDb25jdXJy
ZW5jeShWTSYgdm0pIGNvbnN0Cit7CisgICAgaWYgKCFpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKKyAgICByZXR1cm4gYXNDZWxsKCktPmlzQ2FsbGFibGVXaXRoQ29u
Y3VycmVuY3k8Y29uY3VycmVuY3k+KHZtKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXND
b25zdHJ1Y3RvcihWTSYgdm0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2Vs
bCgpLT5pc0NvbnN0cnVjdG9yKHZtKTsKIH0KIAordGVtcGxhdGU8Q29uY3VycmVuY3kgY29uY3Vy
cmVuY3k+CitpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJy
ZW5jeShWTSYgdm0pIGNvbnN0Cit7CisgICAgaWYgKCFpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKKyAgICByZXR1cm4gYXNDZWxsKCktPmlzQ29uc3RydWN0b3JXaXRo
Q29uY3VycmVuY3k8Y29uY3VycmVuY3k+KHZtKTsKK30KKwogLy8gdGhpcyBtZXRob2QgaXMgaGVy
ZSB0byBiZSBhZnRlciB0aGUgaW5saW5lIGRlY2xhcmF0aW9uIG9mIEpTQ2VsbDo6aW5oZXJpdHMK
IGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IGM2MTU4MGMxNjljNmZiZmI4YTcwM2I2MzMxMDBiNDBjNjU1YjU3ZmMuLmZkODhlMTE4NzFh
MzlkYTkwNDA3YThmODEwZTkwZDE0ZDYxZGI0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC0xMDksNiArMTA5LDggQEAgY2xhc3MgSlNDZWxsIDogcHVibGljIEhl
YXBDZWxsIHsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUo
Vk0mKTsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKTsKKyAgICB0ZW1wbGF0ZTxDb25jdXJy
ZW5jeT4gVHJpU3RhdGUgaXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeShWTSYpOworICAgIHRlbXBs
YXRlPENvbmN1cnJlbmN5PiBUcmlTdGF0ZSBpc0NvbnN0cnVjdG9yV2l0aENvbmN1cnJlbmN5KFZN
Jik7CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAg
IGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBhODI1MTJmYmYxYTM2MWJjODg1NmUwY2Zk
N2FlYWQ1MjU0NjU5YjBiLi4wNTM1MjJjOWU2YTU3Y2MwZTFlZGM0NDZjNGQzMDJlZjdmNzhhM2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBA
IC0yNDEsMTggKzI0MSw1MSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJveHkoKSBjb25zdAog
ICAgIHJldHVybiBtX3R5cGUgPT0gSW1wdXJlUHJveHlUeXBlIHx8IG1fdHlwZSA9PSBQdXJlRm9y
d2FyZGluZ1Byb3h5VHlwZSB8fCBtX3R5cGUgPT0gUHJveHlPYmplY3RUeXBlOwogfQogCi1BTFdB
WVNfSU5MSU5FIGJvb2wgSlNDZWxsOjppc0NhbGxhYmxlKFZNJiB2bSkKK3RlbXBsYXRlPENvbmN1
cnJlbmN5IGNvbmN1cnJlbmN5PgorQUxXQVlTX0lOTElORSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ2Fs
bGFibGVXaXRoQ29uY3VycmVuY3koVk0mIHZtKQogewogICAgIGlmICh0eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChpbmxpbmVUeXBlRmxhZ3Mo
KSAmIE92ZXJyaWRlc0dldENhbGxEYXRhKQotICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUodm0p
LT5nZXRDYWxsRGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpOb25lOwotICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOworICAgIGlmIChpbmxp
bmVUeXBlRmxhZ3MoKSAmIE92ZXJyaWRlc0dldENhbGxEYXRhKSB7CisgICAgICAgIGlmIGNvbnN0
ZXhwciAoY29uY3VycmVuY3kgPT0gQ29uY3VycmVuY3k6Ok9uTWFpblRocmVhZCkKKyAgICAgICAg
ICAgIHJldHVybiAobWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSh0aGlzKS50eXBlICE9IENh
bGxEYXRhOjpUeXBlOjpOb25lKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCBJbnRlcm5hbEZ1bmN0
aW9uOjpnZXRDYWxsRGF0YSBpcyBjb25jdXJyZW5jeSBhd2FyZS4gUGx1cywgZGVyaXZlZCBjbGFz
c2VzIG9mIEludGVybmFsRnVuY3Rpb24gbmV2ZXIKKyAgICAgICAgICAgIC8vIG92ZXJyaWRlIGdl
dENhbGxEYXRhICh0aGlzIGlzIGVuc3VyZWQgYnkgQVNTRVJUIGluIEludGVybmFsRnVuY3Rpb24p
LgorICAgICAgICAgICAgaWYgKHR5cGUoKSA9PSBJbnRlcm5hbEZ1bmN0aW9uVHlwZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodGhpcykudHlw
ZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpG
YWxzZTsKKyAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOworfQorCit0ZW1wbGF0ZTxD
b25jdXJyZW5jeSBjb25jdXJyZW5jeT4KK2lubGluZSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ29uc3Ry
dWN0b3JXaXRoQ29uY3VycmVuY3koVk0mIHZtKQoreworICAgIGlmIGNvbnN0ZXhwciAoY29uY3Vy
cmVuY3kgPT0gQ29uY3VycmVuY3k6Ok9uTWFpblRocmVhZCkKKyAgICAgICAgcmV0dXJuIChtZXRo
b2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlw
ZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKKyAgICBlbHNlIHsK
KyAgICAgICAgLy8gV2Uga25vdyB0aGF0IGJvdGggZ2V0Q29uc3RydWN0RGF0YSBvZiBib3RoIHR5
cGVzIGFyZSBjb25jdXJyZW5jeSBhd2FyZS4gUGx1cywgZGVyaXZlZCBjbGFzc2VzIG9mIEpTRnVu
Y3Rpb24gYW5kIEludGVybmFsRnVuY3Rpb24KKyAgICAgICAgLy8gbmV2ZXIgb3ZlcnJpZGUgZ2V0
Q29uc3RydWN0RGF0YSAodGhpcyBpcyBlbnN1cmVkIGJ5IEFTU0VSVCBpbiBKU0Z1bmN0aW9uIGFu
ZCBJbnRlcm5hbEZ1bmN0aW9uKS4KKyAgICAgICAgaWYgKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSB8fCB0eXBlKCkgPT0gSW50ZXJuYWxGdW5jdGlvblR5cGUpCisgICAgICAgICAgICByZXR1cm4g
KG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRh
OjpUeXBlOjpOb25lKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CisgICAgfQorfQorCitBTFdBWVNfSU5M
SU5FIGJvb2wgSlNDZWxsOjppc0NhbGxhYmxlKFZNJiB2bSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9
IGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3k8Q29uY3VycmVuY3k6Ok9uTWFpblRocmVhZD4odm0p
OworICAgIEFTU0VSVChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOworICAgIHJl
dHVybiByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWU7CiB9CiAKLWlubGluZSBib29sIEpTQ2VsbDo6
aXNDb25zdHJ1Y3RvcihWTSYgdm0pCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNDZWxsOjppc0NvbnN0
cnVjdG9yKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1
Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmU7CisgICAgYXV0byByZXN1
bHQgPSBpc0NvbnN0cnVjdG9yV2l0aENvbmN1cnJlbmN5PENvbmN1cnJlbmN5OjpPbk1haW5UaHJl
YWQ+KHZtKTsKKyAgICBBU1NFUlQocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKTsK
KyAgICByZXR1cm4gcmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlOwogfQogCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggODFiN2M1NWNlZWI0M2ExNzY4MzlkYmE1NzE0
NTNkYWRkZjRmYzk5MS4uOWE5ZTY1ZTgzNDRjOWJiZjYwN2JiN2IyNmFlNTUzNGE1YzhlZTA4NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTEw
OSw2ICsxMDksNyBAQCB2b2lkIEpTRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGpzRHluYW1pY0Nhc3Q8SlNG
dW5jdGlvbio+KHZtLCB0aGlzKSk7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSk7CisgICAgLy8gSlNDZWxsOjp7Z2V0Q2FsbERhdGEsZ2V0Q29uc3RydWN0RGF0YX0gcmVsaWVz
IG9uIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucy4KICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0p
LT5nZXRDb25zdHJ1Y3REYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKICAg
ICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0
Q2FsbERhdGEpOwogfQpAQCAtMTE4LDYgKzExOSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3QgU3Ry
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CiAgICAgQVNTRVJUKHR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSk7CisgICAgLy8g
SlNDZWxsOjp7Z2V0Q2FsbERhdGEsZ2V0Q29uc3RydWN0RGF0YX0gcmVsaWVzIG9uIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucy4KICAgICBBU1NFUlQobWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1
Y3REYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYXRhKTsKICAgICBBU1NFUlQobWV0
aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YSA9PSAmSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEpOwog
CkBAIC0yNTgsNiArMjYwLDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIENhbGxEYXRhIEpTRnVuY3Rpb246Omdl
dENhbGxEYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICAvLyBLZWVwIHRoaXMgZnVuY3Rpb24gT0sg
Zm9yIGludm9jYXRpb24gZnJvbSBjb25jdXJyZW50IGNvbXBpbGVycy4KICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKIAogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNlbGwpOwpAQCAtNjgyLDYgKzY4NSw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAv
LyBFQ01BIDEzLjIuMiBbW0NvbnN0cnVjdF1dCiBDYWxsRGF0YSBKU0Z1bmN0aW9uOjpnZXRDb25z
dHJ1Y3REYXRhKEpTQ2VsbCogY2VsbCkKIHsKKyAgICAvLyBLZWVwIHRoaXMgZnVuY3Rpb24gT0sg
Zm9yIGludm9jYXRpb24gZnJvbSBjb25jdXJyZW50IGNvbXBpbGVycy4KICAgICBDYWxsRGF0YSBj
b25zdHJ1Y3REYXRhOwogCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAppbmRleCAzOTMzYmQ4NDkxZjY5MzVlMTE0ZjFkZWFlN2RmM2QyNWI5
ZjE5NjIyLi41OGFjMThjZjIwZDVmOWYxZjFmNDVkY2UyYTc5NmI3NzlmZTY5YjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAg
LTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHRvVGhpc051bWJlcihW
TSYgdm0sIEpTVmFsdWUgdGhpc1ZhbHVlLCBkb3VibGUmIHgpCiAKIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1Ub1RoaXNOdW1iZXJFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSB0aGlzVmFsdWUpCiB7
Ci0gICAgYXV0byB0eXBlU3RyaW5nID0gYXNTdHJpbmcoanNUeXBlU3RyaW5nRm9yVmFsdWUoZ2xv
YmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSkpLT52YWx1ZShnbG9iYWxP
YmplY3QpOworICAgIGF1dG8gdHlwZVN0cmluZyA9IGpzVHlwZVN0cmluZ0ZvclZhbHVlKGdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNv
bXBhdGlibGUgIiwgdHlwZVN0cmluZykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmNwcAppbmRleCBkMTA5Mzc3YzRiYWUyMDZjYjAxNDc2MmVmMDIyNTVm
YWFkMGU3N2VmLi43NmZmOTZjMTcxNjhiNTUwMWJlMjMwOTZkY2E2MTkxN2VhYTUxNGE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdjEsIEpTVgogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgYXJpdGhtZXRpY0JpbmFyeU9wKGdsb2JhbE9iamVjdCwgcDEsIHAyLCBkb3VibGVPcCwg
YmlnSW50T3AsICJJbnZhbGlkIG1peCBvZiBCaWdJbnQgYW5kIG90aGVyIHR5cGUgaW4gYWRkaXRp
b24uIl9zKSk7CiB9CiAKLUpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHYpCitKU1N0cmluZyoganNUeXBlU3Ry
aW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3koVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHYsIENvbmN1cnJlbmN5IGNvbmN1cnJlbmN5KQogewogICAgIGlmICh2
LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVk
U3RyaW5nKCk7CkBAIC05NSwxNyArOTUsMjQgQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKICAgICAg
ICAgLy8gYXMgbnVsbCB3aGVuIGRvaW5nIGNvbXBhcmlzb25zLgogICAgICAgICBpZiAob2JqZWN0
LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwotICAg
ICAgICBpZiAob2JqZWN0LT5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgaWYgKExJS0VMWShjb25j
dXJyZW5jeSA9PSBDb25jdXJyZW5jeTo6T25NYWluVGhyZWFkKSkgeworICAgICAgICAgICAgaWYg
KG9iamVjdC0+aXNDYWxsYWJsZSh2bSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxs
U3RyaW5ncy5mdW5jdGlvblN0cmluZygpOworICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3Ry
aW5ncy5vYmplY3RTdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAob2JqZWN0
LT5pc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5PENvbmN1cnJlbmN5OjpDb25jdXJyZW50bHk+KHZt
KSkgeworICAgICAgICBjYXNlIFRyaVN0YXRlOjpUcnVlOgogICAgICAgICAgICAgcmV0dXJuIHZt
LnNtYWxsU3RyaW5ncy5mdW5jdGlvblN0cmluZygpOworICAgICAgICBjYXNlIFRyaVN0YXRlOjpG
YWxzZToKKyAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCk7
CisgICAgICAgIGNhc2UgVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU6CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
Lm9iamVjdFN0cmluZygpOwogfQogCi1KU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKLXsKLSAgICByZXR1cm4ganNUeXBl
U3RyaW5nRm9yVmFsdWUoZ2xvYmFsT2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QsIHYpOwotfQot
CiBib29sIGpzVHlwZW9mSXNPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBmMzE0MWU2MDU4YmYzMWI2M2Fi
NGQ4NmJjOTRjNThhN2M1ZDZlNDBkLi5iOTRlZmM5MjY0NTE1MDc5NDg2MmI2MDBhNGIxYWYwODA0
NDg0NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBA
IC0zMSwyMiArMzEsMzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIEludmFsaWRQcm90b3R5
cGVDaGFpbiAoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSkKIAogTkVWRVJfSU5M
SU5FIEpTVmFsdWUganNBZGRTbG93Q2FzZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIEpTVmFs
dWUpOwotSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUpOwotSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CitKU1N0cmluZyoganNUeXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3ko
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIENvbmN1cnJlbmN5KTsKIGJvb2wganNUeXBl
b2ZJc09iamVjdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogc2l6ZV90IG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgYm9vbCYgc2F3UG9seVByb3Rv
KTsKIAotQUxXQVlTX0lOTElORSBib29sIGpzVHlwZW9mSXNGdW5jdGlvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8Q29uY3VycmVuY3kgY29u
Y3VycmVuY3k+CitBTFdBWVNfSU5MSU5FIFRyaVN0YXRlIGpzVHlwZW9mSXNGdW5jdGlvbldpdGhD
b25jdXJyZW5jeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAodmFsdWUuaXNPYmpl
Y3QoKSkgewotICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAg
ICAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGds
b2JhbE9iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChvYmpl
Y3QtPmlzQ2FsbGFibGUodm0pKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6RmFsc2U7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVl
KTsKKyAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGdsb2JhbE9iamVjdCkpCisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgcmV0
dXJuIG9iamVjdC0+aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeTxjb25jdXJyZW5jeT4odm0pOwor
fQorCitpbmxpbmUgSlNTdHJpbmcqIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgcmV0dXJuIGpzVHlwZVN0cmlu
Z0ZvclZhbHVlV2l0aENvbmN1cnJlbmN5KGdldFZNKGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVj
dCwgdmFsdWUsIENvbmN1cnJlbmN5OjpPbk1haW5UaHJlYWQpOworfQorCitBTFdBWVNfSU5MSU5F
IGJvb2wganNUeXBlb2ZJc0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgYXV0byByZXN1bHQgPSBqc1R5cGVvZklzRnVuY3Rpb25XaXRo
Q29uY3VycmVuY3k8Q29uY3VycmVuY3k6Ok9uTWFpblRocmVhZD4oZ2xvYmFsT2JqZWN0LCB2YWx1
ZSk7CisgICAgQVNTRVJUKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAg
cmV0dXJuIHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1N0
cmluZyoganNTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiB1MSwgSlNTdHJpbmcqIHMyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407037</attachid>
            <date>2020-08-21 18:20:25 -0700</date>
            <delta_ts>2020-08-24 13:39:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215746-20200821182024.patch</filename>
            <type>text/plain</type>
            <size>26806</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MDkzN2Q1YmE1YjYxOWJmYzQ4ZTVlMTU1NTkwMzNhZjA4YjcwMTQzLi41MGJhMTYyZWM4ODVlMzc5
M2VkMTYyNWE3NDUxMTljMTdjNzRiZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAyMC0wOC0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFkZCBjb25jdXJyZW5jeS1hd2FyZSB2ZXJzaW9uIG9mIGlzQ2Fs
bGFibGUgLyBpc0NvbnN0cnVjdG9yIHRvIG1ha2UgaXQgdXNhYmxlIGluIERGRyBjb21waWxlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1NzQ2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3kgYW5kIGlzQ29uc3RydWN0b3JXaXRoQ29u
Y3VycmVuY3kgdG8gSlNDZWxsLCBKU1ZhbHVlIGV0Yy4KKyAgICAgICAgVGhpcyBjYW4gd29yayBl
dmVuIGlmIGl0IGlzIGNhbGxlZCBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXIgdGhyZWFkcy4gV2Ug
YWxzbyBhZGQganNUeXBlU3RyaW5nRm9yVmFsdWVXaXRoQ29uY3VycmVuY3kKKyAgICAgICAgYW5k
IGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeSB3aGljaCBhcmUgdXNpbmcgdGhlIGFi
b3ZlIFdpdGhDb25jdXJyZW5jeSBmdW5jdGlvbmFsaXRpZXMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogcnVudGltZS9Db25jdXJyZW5jeS5oOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJuYWxGdW5jdGlvbjo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YSk6Cisg
ICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDYWxsYWJsZVdpdGhDb25jdXJyZW5j
eSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzQ29uc3RydWN0b3JXaXRoQ29uY3Vy
cmVuY3kgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDYWxsYWJsZVdp
dGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDb25zdHJ1Y3RvcldpdGhD
b25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNDYWxsYWJsZSk6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dGhyb3dWTVRvVGhpc051bWJlckVycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqc1R5cGVTdHJpbmdG
b3JWYWx1ZVdpdGhDb25jdXJyZW5jeSk6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmluZ0ZvclZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAg
KEpTQzo6anNUeXBlb2ZJc0Z1bmN0aW9uV2l0aENvbmN1cnJlbmN5KToKKyAgICAgICAgKEpTQzo6
anNUeXBlU3RyaW5nRm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpqc1R5cGVvZklzRnVuY3Rpb24p
OgorCiAyMDIwLTA4LTIxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI2NTk2NS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhODYyODhiMmU3NzcwZTg4MTdhMGU4ZGIyYjQ4ZDcyNjM3
NzhkYzE1Li41OThjMDU3YTFmYWRmM2I2MjFlMGY5YTI5ZDJlODhhZjMyNzhjYTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04MTcsNiArODE3LDcgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKICAgICBydW50aW1lL0NvbXBpbGF0aW9uUmVzdWx0LmgKICAgICBydW50aW1l
L0NvbXBsZXRpb24uaAorICAgIHJ1bnRpbWUvQ29uY3VycmVuY3kuaAogICAgIHJ1bnRpbWUvQ29u
Y3VycmVudEpTTG9jay5oCiAgICAgcnVudGltZS9Db25maWdGaWxlLmgKICAgICBydW50aW1lL0Nv
bnNvbGVDbGllbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMjhmNTU4OTM4
MGVkZWIzODM3ZTdiOGJlMzAzNDJkOTlkMjliNzc2Li45NzM1ZmFiNzgwYmY4OTY3ZWRjNzZlZmRk
OGNhZTU5ZTZmYmU1ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgzOCw2
ICsxODM4LDcgQEAKIAkJRTM2NUYzM0IyNEFBNjIzQjAwQzk5MUIyIC8qIEludGxEaXNwbGF5TmFt
ZXNQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzY1RjMzODI0QUE2MjExMDBDOTkxQjIgLyogSW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZS5sdXQuaCAqLzsgfTsKIAkJRTM2Qjc2NzAyMkY4RDYxOTAwRDA5ODE4IC8qIFdhc21PTUdG
b3JPU1JFbnRyeVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkI3NjZGMjJGOEQ2MTEwMEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFu
LmggKi87IH07CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0
NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzNkVEQ0U1MjRGMDk3NTcwMEU2MERB
MiAvKiBDb25jdXJyZW5jeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM2RURDRTQyNEYwOTc1NzAwRTYwREEyIC8qIENvbmN1cnJlbmN5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzYxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzgzNTAwQTIzOTBEOTNCMDAzNjMxNkQgLyogV2FzbUdsb2JhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MzUwMDkyMzkwRDkzNzAwMzYz
MTZEIC8qIFdhc21HbG9iYWwuaCAqLzsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFCRjlDIC8q
IERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElu
bGluZXMuaCAqLzsgfTsKQEAgLTUwMjksNiArNTAzMCw3IEBACiAJCUUzNkI3NjZFMjJGOEQ2MTEw
MEQwOTgxOCAvKiBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdhc21PTUdGb3JPU1JFbnRyeVBsYW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZCNzY2RjIyRjhENjExMDBEMDk4MTggLyogV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXYXNtT01HRm9yT1NSRW50cnlQbGFuLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNkNDOTQ2MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DcmVhdGlvbk1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RURDRTQyNEYwOTc1NzAwRTYwREEyIC8q
IENvbmN1cnJlbmN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbmN1cnJl
bmN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzdDRkIyRDIyRjI3QzU3MDA5QTdCMzggLyogV2FzbUNvbXBpbGF0aW9u
TW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29tcGlsYXRpb25Nb2RlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMjgsNiArNzEzMCw3IEBACiAJCQkJQTdFNUEz
QTYxNzk3NDMyRDAwRTg5M0MwIC8qIENvbXBpbGF0aW9uUmVzdWx0LmggKi8sCiAJCQkJOTY5QTA5
MjIwRUQxRTA5QzAwRjFGNjgxIC8qIENvbXBsZXRpb24uY3BwICovLAogCQkJCUY1QkIyQkM1MDMw
Rjc3MjEwMUZDRkUxRCAvKiBDb21wbGV0aW9uLmggKi8sCisJCQkJRTM2RURDRTQyNEYwOTc1NzAw
RTYwREEyIC8qIENvbmN1cnJlbmN5LmggKi8sCiAJCQkJMEZEQjJDRTkxNzQ4OTZDNzAwN0IzQzFC
IC8qIENvbmN1cnJlbnRKU0xvY2suaCAqLywKIAkJCQk2NTg4MjRCMDFFNUNGREY0MDBGQjczNTkg
LyogQ29uZmlnRmlsZS5jcHAgKi8sCiAJCQkJNjU4ODI0QUUxRTVDRkRCMDAwRkI3MzU5IC8qIENv
bmZpZ0ZpbGUuaCAqLywKQEAgLTkyNzgsNiArOTI4MSw3IEBACiAJCQkJMEZEMkZEOTQyMEI1MkJE
RTAwRjA5NDQxIC8qIENvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzNGNDBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2RkM3NTExOTYxMTBBODAwRTFEMDJEIC8qIENvbXBsZXhHZXRTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzNkVEQ0U1MjRGMDk3NTcwMEU2MERBMiAvKiBDb25jdXJyZW5jeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDRUExNzQ4OTZDNzAwN0IzQzFCIC8qIENvbmN1cnJl
bnRKU0xvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0Y1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1ODgyNEFGMUU1Q0ZEQjAwMEZCNzM1OSAv
KiBDb25maWdGaWxlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA1OWVm
YjZkOWNlNWIyYjI4MWU3ZTEzNTg0MTc2YTEwMmZjNzIxZjAwLi5kNWY0Zjk0NWU0Mjc1ZWRmYWM4
YmRlYjFlYmNhMDkzZGNmZDc2NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xNDkxLDkgKzE0
OTEsMTQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhl
Y3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNCb29sZWFuKGNoaWxkLnZh
bHVlKCkuaXNOdWxsKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgVHlwZU9mSXNGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBq
c0Jvb2xlYW4oanNUeXBlb2ZJc0Z1bmN0aW9uKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSwgY2hpbGQudmFsdWUoKSkpKTsKKyAgICAgICAgICAgIGNh
c2UgVHlwZU9mSXNGdW5jdGlvbjogeworICAgICAgICAgICAgICAgIFRyaVN0YXRlIHJlc3VsdCA9
IGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5jeTo6Q29uY3VycmVu
dGx5PihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyks
IGNoaWxkLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGUpCisgICAgICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpz
Qm9vbGVhbihyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0YW50V2FzU2V0ID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVk
T3JOdWxsOgogICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGls
ZC52YWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTE1MTIsMTIgKzE1MTcsMjIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNC
b29sZWFuKGNoaWxkLnZhbHVlKCkuaXNPYmplY3QoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBJc0NhbGxhYmxlOgotICAgICAgICAgICAgICAgIHNldENvbnN0
YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzQ2FsbGFibGUobV92bSkpKTsKKyAg
ICAgICAgICAgIGNhc2UgSXNDYWxsYWJsZTogeworICAgICAgICAgICAgICAgIFRyaVN0YXRlIHJl
c3VsdCA9IGNoaWxkLnZhbHVlKCkuaXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5j
eTo6Q29uY3VycmVudGx5PihtX3ZtKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFRy
aVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChu
b2RlLCBqc0Jvb2xlYW4ocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJc0NvbnN0cnVjdG9yOgotICAg
ICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlz
Q29uc3RydWN0b3IobV92bSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgSXND
b25zdHJ1Y3RvcjogeworICAgICAgICAgICAgICAgIFRyaVN0YXRlIHJlc3VsdCA9IGNoaWxkLnZh
bHVlKCkuaXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5jeTo6Q29uY3VycmVu
dGx5PihtX3ZtKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKQorICAgICAgICAgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc0Jvb2xl
YW4ocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBjb25zdGFudFdhc1NldCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBJc0VtcHR5OgogICAgICAg
ICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzQm9vbGVhbihjaGlsZC52YWx1ZSgpLmlzRW1w
dHkoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc4Miw5ICsxNzk3LDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS52YWx1ZSgpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdENo
aWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmIChjaGlsZCkgewotICAg
ICAgICAgICAgSlNWYWx1ZSB0eXBlU3RyaW5nID0ganNUeXBlU3RyaW5nRm9yVmFsdWUobV92bSwg
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLCBjaGls
ZCk7Ci0gICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVlemUodHlwZVN0
cmluZykpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoSlNTdHJpbmcqIHR5
cGVTdHJpbmcgPSBqc1R5cGVTdHJpbmdGb3JWYWx1ZVdpdGhDb25jdXJyZW5jeShtX3ZtLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksIGNoaWxkLCBD
b25jdXJyZW5jeTo6Q29uY3VycmVudGx5KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsICptX2dyYXBoLmZyZWV6ZSh0eXBlU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChpc0Z1
bGxOdW1iZXJTcGVjdWxhdGlvbihhYnN0cmFjdENoaWxkLm1fdHlwZSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmN1cnJlbmN5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW5jeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZmY4NGUyNTBj
N2ExOWRmYjYzZDBkN2RlOTAzMzQwNGE1OTVmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25jdXJyZW5jeS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBDb25jdXJyZW5jeSA6IHVpbnQ4X3Qgewor
ICAgIE9uTWFpblRocmVhZCwKKyAgICBDb25jdXJyZW50bHksCit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpDb25jdXJyZW5jeSBjb25jdXJyZW5jeSkKK3sKKyAgICBzd2l0
Y2ggKGNvbmN1cnJlbmN5KSB7CisgICAgY2FzZSBKU0M6OkNvbmN1cnJlbmN5OjpPbk1haW5UaHJl
YWQ6CisgICAgICAgIG91dC5wcmludCgiT25NYWluVGhyZWFkIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEpTQzo6Q29uY3VycmVuY3k6OkNvbmN1cnJlbnRseToKKyAgICAgICAgb3V0LnBy
aW50KCJDb25jdXJyZW50bHkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAppbmRl
eCA3NGRkZDY1ZjQzZTk5OTg0YmI4ZGY0MjAwMWI0M2NkMzA0NTA1MDkwLi44MDUxMmQ3MDI5ZDU5
N2U1YWRhMWNlNDM1YjM5NmI4ZmQ0MzhkZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNDcsNiArNDcsNyBAQCB2b2lk
IEludGVybmFsRnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBu
YW1lLCBOYW1lQWRkaXRpb25NbwogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICBBU1NFUlQoanNEeW5hbWljQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odm0sIHRoaXMpKTsKKyAg
ICAvLyBKU0NlbGw6OntnZXRDYWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENh
bGxEYXRhID09IEludGVybmFsRnVuY3Rpb246OmluZm8oKS0+bWV0aG9kVGFibGUuZ2V0Q2FsbERh
dGEpOwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERhdGEgPT0gSW50
ZXJuYWxGdW5jdGlvbjo6aW5mbygpLT5tZXRob2RUYWJsZS5nZXRDb25zdHJ1Y3REYXRhKTsKICAg
ICBBU1NFUlQodHlwZSgpID09IEludGVybmFsRnVuY3Rpb25UeXBlIHx8IHR5cGUoKSA9PSBOdWxs
U2V0dGVyRnVuY3Rpb25UeXBlKTsKQEAgLTg2LDYgKzg3LDcgQEAgY29uc3QgU3RyaW5nIEludGVy
bmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKFZNJiB2bSkKIAogQ2FsbERhdGEgSW50ZXJuYWxGdW5j
dGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIC8vIEtlZXAgdGhpcyBmdW5j
dGlvbiBPSyBmb3IgaW52b2NhdGlvbiBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXJzLgogICAgIGF1
dG8qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPihjZWxsKTsKICAgICBBU1NF
UlQoZnVuY3Rpb24tPm1fZnVuY3Rpb25Gb3JDYWxsKTsKIApAQCAtOTcsNiArOTksNyBAQCBDYWxs
RGF0YSBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRDYWxsRGF0YShKU0NlbGwqIGNlbGwpCiAKIENhbGxE
YXRhIEludGVybmFsRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiBjZWxsKQogewor
ICAgIC8vIEtlZXAgdGhpcyBmdW5jdGlvbiBPSyBmb3IgaW52b2NhdGlvbiBmcm9tIGNvbmN1cnJl
bnQgY29tcGlsZXJzLgogICAgIENhbGxEYXRhIGNvbnN0cnVjdERhdGE7CiAgICAgYXV0byogZnVu
Y3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNlbGwpOwogICAgIGlmIChmdW5jdGlv
bi0+bV9mdW5jdGlvbkZvckNvbnN0cnVjdCAhPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDA4
MTQ5NmI3N2M4ZTY1MDg1MmM4ZjdjOTg5ZGUxNTRmOWE1MzA0ZWMuLjEzMWYwMGFmZDI1NjJjNWM5
ZDQ0NTUzNWY3YjdjYzkzZjFkYTI1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgKQEAgLTIyLDYgKzIyLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJDb25jdXJyZW5jeS5oIgogI2luY2x1ZGUgIkVDTUFNb2RlLmgiCiAjaW5jbHVkZSAiSlNF
eHBvcnRNYWNyb3MuaCIKICNpbmNsdWRlICJQdXJlTmFOLmgiCkBAIC0yMzMsNyArMjM0LDkgQEAg
Y2xhc3MgSlNWYWx1ZSB7CiAgICAgLy8gUXVlcnlpbmcgdGhlIHR5cGUuCiAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0NhbGxhYmxlKFZNJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Q29uY3VycmVuY3k+IFRyaVN0YXRlIGlzQ2FsbGFibGVXaXRoQ29uY3VycmVuY3koVk0mKSBj
b25zdDsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxD
b25jdXJyZW5jeT4gVHJpU3RhdGUgaXNDb25zdHJ1Y3RvcldpdGhDb25jdXJyZW5jeShWTSYpIGNv
bnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICBib29sIGlzTnVsbCgpIGNv
bnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWRPck51bGwoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDZlZDc5YWEy
NDU1YWZhMjVhNGQ0Mzc0YzE0ZTVmYjE1MTZmNDJiYTYuLmJkNmYzMWM4MjA3ZWY2YzM4OGJkMzUw
OGI3MWJkNzM5M2EzNWYzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtOTIwLDExICs5MjAsMjcgQEAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNDYWxsYWJsZShWTSYgdm0pIGNvbnN0CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYm
IGFzQ2VsbCgpLT5pc0NhbGxhYmxlKHZtKTsKIH0KIAordGVtcGxhdGU8Q29uY3VycmVuY3kgY29u
Y3VycmVuY3k+CitpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6aXNDYWxsYWJsZVdpdGhDb25jdXJy
ZW5jeShWTSYgdm0pIGNvbnN0Cit7CisgICAgaWYgKCFpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKKyAgICByZXR1cm4gYXNDZWxsKCktPmlzQ2FsbGFibGVXaXRoQ29u
Y3VycmVuY3k8Y29uY3VycmVuY3k+KHZtKTsKK30KKwogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXND
b25zdHJ1Y3RvcihWTSYgdm0pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQ2VsbCgpICYmIGFzQ2Vs
bCgpLT5pc0NvbnN0cnVjdG9yKHZtKTsKIH0KIAordGVtcGxhdGU8Q29uY3VycmVuY3kgY29uY3Vy
cmVuY3k+CitpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6aXNDb25zdHJ1Y3RvcldpdGhDb25jdXJy
ZW5jeShWTSYgdm0pIGNvbnN0Cit7CisgICAgaWYgKCFpc0NlbGwoKSkKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKKyAgICByZXR1cm4gYXNDZWxsKCktPmlzQ29uc3RydWN0b3JXaXRo
Q29uY3VycmVuY3k8Y29uY3VycmVuY3k+KHZtKTsKK30KKwogLy8gdGhpcyBtZXRob2QgaXMgaGVy
ZSB0byBiZSBhZnRlciB0aGUgaW5saW5lIGRlY2xhcmF0aW9uIG9mIEpTQ2VsbDo6aW5oZXJpdHMK
IGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKFZNJiB2bSwgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IGM2MTU4MGMxNjljNmZiZmI4YTcwM2I2MzMxMDBiNDBjNjU1YjU3ZmMuLmZkODhlMTE4NzFh
MzlkYTkwNDA3YThmODEwZTkwZDE0ZDYxZGI0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC0xMDksNiArMTA5LDggQEAgY2xhc3MgSlNDZWxsIDogcHVibGljIEhl
YXBDZWxsIHsKICAgICBib29sIGlzUHJveHkoKSBjb25zdDsKICAgICBib29sIGlzQ2FsbGFibGUo
Vk0mKTsKICAgICBib29sIGlzQ29uc3RydWN0b3IoVk0mKTsKKyAgICB0ZW1wbGF0ZTxDb25jdXJy
ZW5jeT4gVHJpU3RhdGUgaXNDYWxsYWJsZVdpdGhDb25jdXJyZW5jeShWTSYpOworICAgIHRlbXBs
YXRlPENvbmN1cnJlbmN5PiBUcmlTdGF0ZSBpc0NvbnN0cnVjdG9yV2l0aENvbmN1cnJlbmN5KFZN
Jik7CiAgICAgYm9vbCBpbmhlcml0cyhWTSYsIGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldD4gYm9vbCBpbmhlcml0cyhWTSYpIGNvbnN0OwogICAg
IGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAppbmRleCBhODI1MTJmYmYxYTM2MWJjODg1NmUwY2Zk
N2FlYWQ1MjU0NjU5YjBiLi44MjE4OWY0MjFkZGIxYzQwMzg1YTgyZDkxNGVhMDg3OTZiY2VhNTBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCkBA
IC0yNDEsMTggKzI0MSw1NSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJveHkoKSBjb25zdAog
ICAgIHJldHVybiBtX3R5cGUgPT0gSW1wdXJlUHJveHlUeXBlIHx8IG1fdHlwZSA9PSBQdXJlRm9y
d2FyZGluZ1Byb3h5VHlwZSB8fCBtX3R5cGUgPT0gUHJveHlPYmplY3RUeXBlOwogfQogCi1BTFdB
WVNfSU5MSU5FIGJvb2wgSlNDZWxsOjppc0NhbGxhYmxlKFZNJiB2bSkKK3RlbXBsYXRlPENvbmN1
cnJlbmN5IGNvbmN1cnJlbmN5PgorQUxXQVlTX0lOTElORSBUcmlTdGF0ZSBKU0NlbGw6OmlzQ2Fs
bGFibGVXaXRoQ29uY3VycmVuY3koVk0mIHZtKQogeworICAgIGlmICghaXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rp
b25UeXBlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoaW5saW5lVHlwZUZsYWdzKCkg
JiBPdmVycmlkZXNHZXRDYWxsRGF0YSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+
Z2V0Q2FsbERhdGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKKyAgICBpZiAoaW5saW5l
VHlwZUZsYWdzKCkgJiBPdmVycmlkZXNHZXRDYWxsRGF0YSkgeworICAgICAgICBpZiBjb25zdGV4
cHIgKGNvbmN1cnJlbmN5ID09IENvbmN1cnJlbmN5OjpPbk1haW5UaHJlYWQpCisgICAgICAgICAg
ICByZXR1cm4gKG1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEodGhpcykudHlwZSAhPSBDYWxs
RGF0YTo6VHlwZTo6Tm9uZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgSW50ZXJuYWxGdW5jdGlv
bjo6Z2V0Q2FsbERhdGEgaXMgY29uY3VycmVuY3kgYXdhcmUuIFBsdXMsIGRlcml2ZWQgY2xhc3Nl
cyBvZiBJbnRlcm5hbEZ1bmN0aW9uIG5ldmVyCisgICAgICAgICAgICAvLyBvdmVycmlkZSBnZXRD
YWxsRGF0YSAodGhpcyBpcyBlbnN1cmVkIGJ5IEFTU0VSVCBpbiBJbnRlcm5hbEZ1bmN0aW9uKS4K
KyAgICAgICAgICAgIGlmICh0eXBlKCkgPT0gSW50ZXJuYWxGdW5jdGlvblR5cGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIChtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKHRoaXMpLnR5cGUg
IT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFs
c2U7CisgICAgICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKK30KKwordGVtcGxhdGU8Q29u
Y3VycmVuY3kgY29uY3VycmVuY3k+CitpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjppc0NvbnN0cnVj
dG9yV2l0aENvbmN1cnJlbmN5KFZNJiB2bSkKK3sKKyAgICBpZiAoIWlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgaWYgY29uc3RleHByIChjb25jdXJyZW5j
eSA9PSBDb25jdXJyZW5jeTo6T25NYWluVGhyZWFkKQorICAgICAgICByZXR1cm4gKG1ldGhvZFRh
YmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YSh0aGlzKS50eXBlICE9IENhbGxEYXRhOjpUeXBlOjpO
b25lKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOworICAgIGVsc2UgeworICAg
ICAgICAvLyBXZSBrbm93IHRoYXQgYm90aCBnZXRDb25zdHJ1Y3REYXRhIG9mIGJvdGggdHlwZXMg
YXJlIGNvbmN1cnJlbmN5IGF3YXJlLiBQbHVzLCBkZXJpdmVkIGNsYXNzZXMgb2YgSlNGdW5jdGlv
biBhbmQgSW50ZXJuYWxGdW5jdGlvbgorICAgICAgICAvLyBuZXZlciBvdmVycmlkZSBnZXRDb25z
dHJ1Y3REYXRhICh0aGlzIGlzIGVuc3VyZWQgYnkgQVNTRVJUIGluIEpTRnVuY3Rpb24gYW5kIElu
dGVybmFsRnVuY3Rpb24pLgorICAgICAgICBpZiAodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlIHx8
IHR5cGUoKSA9PSBJbnRlcm5hbEZ1bmN0aW9uVHlwZSkKKyAgICAgICAgICAgIHJldHVybiAobWV0
aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKHRoaXMpLnR5cGUgIT0gQ2FsbERhdGE6OlR5
cGU6Ok5vbmUpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKKyAgICB9Cit9CisKK0FMV0FZU19JTkxJTkUg
Ym9vbCBKU0NlbGw6OmlzQ2FsbGFibGUoVk0mIHZtKQoreworICAgIGF1dG8gcmVzdWx0ID0gaXND
YWxsYWJsZVdpdGhDb25jdXJyZW5jeTxDb25jdXJyZW5jeTo6T25NYWluVGhyZWFkPih2bSk7Cisg
ICAgQVNTRVJUKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CisgICAgcmV0dXJu
IHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgSlNDZWxsOjppc0Nv
bnN0cnVjdG9yKFZNJiB2bSkKK0FMV0FZU19JTkxJTkUgYm9vbCBKU0NlbGw6OmlzQ29uc3RydWN0
b3IoVk0mIHZtKQogewotICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERh
dGEodGhpcykudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZTsKKyAgICBhdXRvIHJlc3VsdCA9
IGlzQ29uc3RydWN0b3JXaXRoQ29uY3VycmVuY3k8Q29uY3VycmVuY3k6Ok9uTWFpblRocmVhZD4o
dm0pOworICAgIEFTU0VSVChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOworICAg
IHJldHVybiByZXN1bHQgPT0gVHJpU3RhdGU6OlRydWU7CiB9CiAKIGlubGluZSBib29sIEpTQ2Vs
bDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4MWI3YzU1Y2VlYjQzYTE3NjgzOWRiYTU3MTQ1M2Rh
ZGRmNGZjOTkxLi45YTllNjVlODM0NGM5YmJmNjA3YmI3YjI2YWU1NTM0YTVjOGVlMDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMTA5LDYg
KzEwOSw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoanNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4odm0sIHRoaXMpKTsKICAgICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsK
KyAgICAvLyBKU0NlbGw6OntnZXRDYWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdl
dENvbnN0cnVjdERhdGEgPT0gJkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOwogICAgIEFT
U0VSVChtZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDYWxs
RGF0YSk7CiB9CkBAIC0xMTgsNiArMTE5LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHIKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKICAgICBBU1NFUlQodHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKTsKKyAgICAvLyBKU0Nl
bGw6OntnZXRDYWxsRGF0YSxnZXRDb25zdHJ1Y3REYXRhfSByZWxpZXMgb24gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zLgogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPmdldENvbnN0cnVjdERh
dGEgPT0gJkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOwogICAgIEFTU0VSVChtZXRob2RU
YWJsZSh2bSktPmdldENhbGxEYXRhID09ICZKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YSk7CiAKQEAg
LTI1OCw2ICsyNjAsNyBAQCB2b2lkIEpTRnVuY3Rpb246OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogQ2FsbERhdGEgSlNGdW5jdGlvbjo6Z2V0Q2Fs
bERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIC8vIEtlZXAgdGhpcyBmdW5jdGlvbiBPSyBmb3Ig
aW52b2NhdGlvbiBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXJzLgogICAgIENhbGxEYXRhIGNhbGxE
YXRhOwogCiAgICAgSlNGdW5jdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2VsbCk7CkBAIC02ODIsNiArNjg1LDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9w
ZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIC8vIEVD
TUEgMTMuMi4yIFtbQ29uc3RydWN0XV0KIENhbGxEYXRhIEpTRnVuY3Rpb246OmdldENvbnN0cnVj
dERhdGEoSlNDZWxsKiBjZWxsKQogeworICAgIC8vIEtlZXAgdGhpcyBmdW5jdGlvbiBPSyBmb3Ig
aW52b2NhdGlvbiBmcm9tIGNvbmN1cnJlbnQgY29tcGlsZXJzLgogICAgIENhbGxEYXRhIGNvbnN0
cnVjdERhdGE7CiAKICAgICBKU0Z1bmN0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRnVuY3Rp
b24qPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQ
cm90b3R5cGUuY3BwCmluZGV4IDM5MzNiZDg0OTFmNjkzNWUxMTRmMWRlYWU3ZGYzZDI1YjlmMTk2
MjIuLjU4YWMxOGNmMjBkNWY5ZjFmMWY0NWRjZTJhNzk2Yjc3OWZlNjliMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgdG9UaGlzTnVtYmVyKFZNJiB2
bSwgSlNWYWx1ZSB0aGlzVmFsdWUsIGRvdWJsZSYgeCkKIAogc3RhdGljIEFMV0FZU19JTkxJTkUg
RW5jb2RlZEpTVmFsdWUgdGhyb3dWTVRvVGhpc051bWJlckVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKLSAg
ICBhdXRvIHR5cGVTdHJpbmcgPSBhc1N0cmluZyhqc1R5cGVTdHJpbmdGb3JWYWx1ZShnbG9iYWxP
YmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlKSktPnZhbHVlKGdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0eXBlU3RyaW5nID0ganNUeXBlU3RyaW5nRm9yVmFsdWUoZ2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIHNjb3BlLmFzc2VydE5v
RXhjZXB0aW9uKCk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgV1RGOjptYWtlU3RyaW5nKCJ0aGlzTnVtYmVyVmFsdWUgY2FsbGVkIG9uIGluY29tcGF0
aWJsZSAiLCB0eXBlU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wZXJhdGlvbnMuY3BwCmluZGV4IGQxMDkzNzdjNGJhZTIwNmNiMDE0NzYyZWYwMjI1NWZhYWQw
ZTc3ZWYuLjc2ZmY5NmMxNzE2OGI1NTAxYmUyMzA5NmRjYTYxOTE3ZWFhNTE0YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2MSwgSlNWCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBhcml0aG1ldGljQmluYXJ5T3AoZ2xvYmFsT2JqZWN0LCBwMSwgcDIsIGRvdWJsZU9wLCBiaWdJ
bnRPcCwgIkludmFsaWQgbWl4IG9mIEJpZ0ludCBhbmQgb3RoZXIgdHlwZSBpbiBhZGRpdGlvbi4i
X3MpKTsKIH0KIAotSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdikKK0pTU3RyaW5nKiBqc1R5cGVTdHJpbmdG
b3JWYWx1ZVdpdGhDb25jdXJyZW5jeShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdiwgQ29uY3VycmVuY3kgY29uY3VycmVuY3kpCiB7CiAgICAgaWYgKHYuaXNV
bmRlZmluZWQoKSkKICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRTdHJp
bmcoKTsKQEAgLTk1LDE3ICs5NSwyNCBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQogICAgICAgICAv
LyBhcyBudWxsIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCiAgICAgICAgIGlmIChvYmplY3QtPnN0
cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKICAgICAg
ICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7Ci0gICAgICAg
IGlmIChvYmplY3QtPmlzQ2FsbGFibGUodm0pKQorICAgICAgICBpZiAoTElLRUxZKGNvbmN1cnJl
bmN5ID09IENvbmN1cnJlbmN5OjpPbk1haW5UaHJlYWQpKSB7CisgICAgICAgICAgICBpZiAob2Jq
ZWN0LT5pc0NhbGxhYmxlKHZtKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJp
bmdzLmZ1bmN0aW9uU3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdz
Lm9iamVjdFN0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChvYmplY3QtPmlz
Q2FsbGFibGVXaXRoQ29uY3VycmVuY3k8Q29uY3VycmVuY3k6OkNvbmN1cnJlbnRseT4odm0pKSB7
CisgICAgICAgIGNhc2UgVHJpU3RhdGU6OlRydWU6CiAgICAgICAgICAgICByZXR1cm4gdm0uc21h
bGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CisgICAgICAgIGNhc2UgVHJpU3RhdGU6OkZhbHNl
OgorICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RTdHJpbmcoKTsKKyAg
ICAgICAgY2FzZSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZToKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mub2Jq
ZWN0U3RyaW5nKCk7CiB9CiAKLUpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2KQotewotICAgIHJldHVybiBqc1R5cGVTdHJp
bmdGb3JWYWx1ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCwgdik7Ci19Ci0KIGJv
b2wganNUeXBlb2ZJc09iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHYpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGYzMTQxZTYwNThiZjMxYjYzYWI0ZDg2
YmM5NGM1OGE3YzVkNmU0MGQuLmI5NGVmYzkyNjQ1MTUwNzk0ODYyYjYwMGE0YjFhZjA4MDQ0ODQ0
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTMx
LDIyICszMSwzMiBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgSW52YWxpZFByb3RvdHlwZUNo
YWluIChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogCiBORVZFUl9JTkxJTkUg
SlNWYWx1ZSBqc0FkZFNsb3dDYXNlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgSlNWYWx1ZSk7
Ci1KU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
Ci1KU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKK0pTU3RyaW5nKiBqc1R5cGVTdHJpbmdGb3JWYWx1ZVdpdGhDb25jdXJyZW5jeShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgQ29uY3VycmVuY3kpOwogYm9vbCBqc1R5cGVvZklz
T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBzaXplX3Qgbm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4oSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBib29sJiBzYXdQb2x5UHJvdG8pOwog
Ci1BTFdBWVNfSU5MSU5FIGJvb2wganNUeXBlb2ZJc0Z1bmN0aW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTxDb25jdXJyZW5jeSBjb25jdXJy
ZW5jeT4KK0FMV0FZU19JTkxJTkUgVHJpU3RhdGUganNUeXBlb2ZJc0Z1bmN0aW9uV2l0aENvbmN1
cnJlbmN5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmICh2YWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgICAg
IGlmIChvYmplY3QtPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFs
T2JqZWN0KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKG9iamVjdC0+
aXNDYWxsYWJsZSh2bSkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpGYWxzZTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwor
ICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xv
YmFsT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKKyAgICByZXR1cm4g
b2JqZWN0LT5pc0NhbGxhYmxlV2l0aENvbmN1cnJlbmN5PGNvbmN1cnJlbmN5Pih2bSk7Cit9CisK
K2lubGluZSBKU1N0cmluZyoganNUeXBlU3RyaW5nRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4ganNUeXBlU3RyaW5nRm9y
VmFsdWVXaXRoQ29uY3VycmVuY3koZ2V0Vk0oZ2xvYmFsT2JqZWN0KSwgZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgQ29uY3VycmVuY3k6Ok9uTWFpblRocmVhZCk7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9v
bCBqc1R5cGVvZklzRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGpzVHlwZW9mSXNGdW5jdGlvbldpdGhDb25j
dXJyZW5jeTxDb25jdXJyZW5jeTo6T25NYWluVGhyZWFkPihnbG9iYWxPYmplY3QsIHZhbHVlKTsK
KyAgICBBU1NFUlQocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKTsKKyAgICByZXR1
cm4gcmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTU3RyaW5n
KiBqc1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHUx
LCBKU1N0cmluZyogczIpCg==
</data>
<flag name="review"
          id="422404"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>