<?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>202484</bug_id>
          
          <creation_ts>2019-10-02 11:09:36 -0700</creation_ts>
          <short_desc>Implement the Top-level await proposal</short_desc>
          <delta_ts>2024-09-24 16:12:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222453</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles Borins">myles.borins</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>adieulot</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>briankimpossible</cc>
    
    <cc>calvaris</cc>
    
    <cc>chi187</cc>
    
    <cc>cyb.ai.815</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>hotaru</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576066</commentid>
    <comment_count>0</comment_count>
    <who name="Myles Borins">myles.borins</who>
    <bug_when>2019-10-02 11:09:36 -0700</bug_when>
    <thetext>The proposal is currently Stage-3 in the TC39 process which means it is ready for engines to implement.

https://github.com/tc39/proposal-top-level-await

I&apos;m the champion from the TC39 committee so please feel free to ask me any questions you might have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577083</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-04 17:08:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/55999996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724456</commentid>
    <comment_count>2</comment_count>
      <attachid>418936</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-01 15:48:35 -0800</bug_when>
    <thetext>Created attachment 418936
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731995</commentid>
    <comment_count>3</comment_count>
      <attachid>421151</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 13:56:42 -0800</bug_when>
    <thetext>Created attachment 421151
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732000</commentid>
    <comment_count>4</comment_count>
      <attachid>421154</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 15:34:43 -0800</bug_when>
    <thetext>Created attachment 421154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732001</commentid>
    <comment_count>5</comment_count>
      <attachid>421155</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 15:44:05 -0800</bug_when>
    <thetext>Created attachment 421155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732002</commentid>
    <comment_count>6</comment_count>
      <attachid>421156</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 15:53:44 -0800</bug_when>
    <thetext>Created attachment 421156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732003</commentid>
    <comment_count>7</comment_count>
      <attachid>421157</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 16:02:44 -0800</bug_when>
    <thetext>Created attachment 421157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732004</commentid>
    <comment_count>8</comment_count>
      <attachid>421158</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 16:05:41 -0800</bug_when>
    <thetext>Created attachment 421158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732005</commentid>
    <comment_count>9</comment_count>
      <attachid>421156</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-21 16:13:36 -0800</bug_when>
    <thetext>Comment on attachment 421156
Patch

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

Please check WebCore side too since now Workers support modules?

&gt; Source/JavaScriptCore/API/JSAPIGlobalObject.mm:261
&gt; +    // FIXME: We should update the delegate callbacks for async modules.

Can you file a bug and paste URL?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:958
&gt; +        for (unsigned i = 0; i &lt;= JSGenerator::Argument::NumberOfArguments; ++i)

Why isn&apos;t it `&lt; jsgenerator::Argument::NumberOfArguments`? If it is because |this| parameter, I think,

initializeNextParameter(); // |this|
for (unsigned i = 0; i &lt; JSGenerator::Argument::NumberOfArguments; ++i)
    initializeNextParameter(); 

would be better.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3747
&gt; +    // RELEASE_ASSERT(m_scopeNode-&gt;isFunctionNode());

Why is  it necessary? If this comment-out is right, can you remove this assert?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5066
&gt; +    // FIXME: It seems like this will create a lot of constants if there are many yield points. Maybe we should op_inc the old state.

Can you file a bug and paste URL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732011</commentid>
    <comment_count>10</comment_count>
      <attachid>421156</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 16:32:51 -0800</bug_when>
    <thetext>Comment on attachment 421156
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSAPIGlobalObject.mm:261
&gt;&gt; +    // FIXME: We should update the delegate callbacks for async modules.
&gt; 
&gt; Can you file a bug and paste URL?

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:958
&gt;&gt; +        for (unsigned i = 0; i &lt;= JSGenerator::Argument::NumberOfArguments; ++i)
&gt; 
&gt; Why isn&apos;t it `&lt; jsgenerator::Argument::NumberOfArguments`? If it is because |this| parameter, I think,
&gt; 
&gt; initializeNextParameter(); // |this|
&gt; for (unsigned i = 0; i &lt; JSGenerator::Argument::NumberOfArguments; ++i)
&gt;     initializeNextParameter(); 
&gt; 
&gt; would be better.

Yeah, that&apos;s the reason. I&apos;ll change.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3747
&gt;&gt; +    // RELEASE_ASSERT(m_scopeNode-&gt;isFunctionNode());
&gt; 
&gt; Why is  it necessary? If this comment-out is right, can you remove this assert?

Yeah missed that during cleanup. Deleted.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:5066
&gt;&gt; +    // FIXME: It seems like this will create a lot of constants if there are many yield points. Maybe we should op_inc the old state.
&gt; 
&gt; Can you file a bug and paste URL?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732012</commentid>
    <comment_count>11</comment_count>
      <attachid>421159</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 16:36:10 -0800</bug_when>
    <thetext>Created attachment 421159
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732013</commentid>
    <comment_count>12</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-21 16:41:55 -0800</bug_when>
    <thetext>Landed in r273225</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732093</commentid>
    <comment_count>13</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-02-22 04:27:32 -0800</bug_when>
    <thetext>Seems like there was a follow-up fix: https://trac.webkit.org/r273226 (mentioning here just for reference)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732097</commentid>
    <comment_count>14</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-02-22 04:33:17 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #12)
&gt; Landed in r273225
This broke 5 layout-tests on mac and ios, as also indicated by ews. Should have waited for EWS to complete.

- imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html
- imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html
- imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html
- imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html
- imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-immediate-promise.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732191</commentid>
    <comment_count>15</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-02-22 10:26:23 -0800</bug_when>
    <thetext>(In reply to Aakash Jain from comment #14)
&gt; (In reply to Keith Miller from comment #12)
&gt; &gt; Landed in r273225
&gt; This broke 5 layout-tests on mac and ios, as also indicated by ews. Should
&gt; have waited for EWS to complete.
&gt; 
&gt; -
&gt; imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-
&gt; element/module/evaluation-order-4-tla.html
&gt; -
&gt; imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/
&gt; document-write/module-tla-delayed.html
&gt; -
&gt; imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/
&gt; document-write/module-tla-import.html
&gt; -
&gt; imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/
&gt; document-write/module-tla-promise.html
&gt; -
&gt; imported/w3c/web-platform-tests/html/webappapis/dynamic-markup-insertion/
&gt; document-write/module-tla-immediate-promise.html

Weird that those didn&apos;t show up for me locally. They just need to be rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732195</commentid>
    <comment_count>16</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-02-22 10:41:39 -0800</bug_when>
    <thetext>(In reply to Aakash Jain from comment #14)
&gt; (In reply to Keith Miller from comment #12)
&gt; &gt; Landed in r273225
&gt; This broke 5 layout-tests on mac and ios, as also indicated by ews. Should
&gt; have waited for EWS to complete.
Rebaselined these tests in r273261</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418936</attachid>
            <date>2021-02-01 15:48:35 -0800</date>
            <delta_ts>2021-02-21 13:56:40 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-202484-20210201154834.patch</filename>
            <type>text/plain</type>
            <size>11527</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MGE0ZDdmOWFkYjU3YWRhNzVkZWVmMjM2YTgyYzFhYmQ3MTkxZmRhLi5kMzY5NzM4MGYwZWMzNzFh
Y2UwY2I1MzRmZjljNDQ2MjcwZjU3NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0wMi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIFRvcC1sZXZlbCBhd2FpdCBwcm9wb3NhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUF3YWl0KToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6dXNlc0F3YWl0KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Rva2VuOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Y2FuVXNlQXdhaXQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlclRva2Vucy5oOgorCiAyMDIxLTAyLTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIEAgaW4gRXJyb3Iuc3RhY2sgaWYgVVJMIGV4aXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCA2MTdjYTBjYmM1NWJjZTZjYzA3ZTVlZGJlNTM0ZDk3YTk4
NDI4OWY0Li5lODYyMmJlYjczYWZhZDc5OTliNjFmNDc5ZWJhNmQ1YmQxYWI1M2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtOTUyLDEzICs5NTIsMjIgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QK
ICAgICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSk7CiAKLSAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUg
c3BhY2UgZm9yICJ0aGlzIgorICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEpOyAv
LyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiIGFuZCBwb3NzaWJseSB0aGUgZ2VuZXJhdG9yIHN0
YXRlLgogCiAgICAgLy8gTm93IGRlY2xhcmUgYWxsIHZhcmlhYmxlcy4KIAogICAgIGNyZWF0ZVZh
cmlhYmxlKG1fdm0ucHJvcGVydHlOYW1lcy0+c3Rhck5hbWVzcGFjZVByaXZhdGVOYW1lLCBWYXJL
aW5kOjpTY29wZSwgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSwgVmVyaWZ5RXhpc3Rpbmcp
OwogICAgIGNyZWF0ZVZhcmlhYmxlKG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bWV0YVByaXZhdGVOYW1lKCksIFZhcktpbmQ6OlNjb3BlLCBtb2R1bGVFbnZpcm9ubWVudFN5bWJv
bFRhYmxlLCBWZXJpZnlFeGlzdGluZyk7CiAKKyAgICBpZiAobW9kdWxlUHJvZ3JhbU5vZGUtPnVz
ZXNBd2FpdCgpKSB7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKyAg
ICAgICAgbV9wcm9taXNlUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKworICAgICAgICBlbWl0TmV3R2Vu
ZXJhdG9yKGdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBjb25zdCBib29sIHVzZUludGVy
bmFsUHJvbWlzZSA9IHRydWU7CisgICAgICAgIGVtaXROZXdQcm9taXNlKHByb21pc2VSZWdpc3Rl
cigpLCB1c2VJbnRlcm5hbFByb21pc2UpOworICAgIH0KKwogICAgIGZvciAoYXV0byYgZW50cnkg
OiBtb2R1bGVQcm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCkpIHsKICAgICAgICAgQVNTRVJU
KCFlbnRyeS52YWx1ZS5pc0xldCgpICYmICFlbnRyeS52YWx1ZS5pc0NvbnN0KCkpOwogICAgICAg
ICBpZiAoIWVudHJ5LnZhbHVlLmlzVmFyKCkpIC8vIFRoaXMgaXMgZWl0aGVyIGEgcGFyYW1ldGVy
IG9yIGNhbGxlZS4KQEAgLTk3NCw2ICs5ODMsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QK
ICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFibGVzID0gbW9kdWxlUHJvZ3Jh
bU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKTsKICAgICBpbnN0YW50aWF0ZUxleGljYWxWYXJpYWJs
ZXMobGV4aWNhbFZhcmlhYmxlcywgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSwgU2NvcGVS
ZWdpc3RlclR5cGU6OkJsb2NrLCBsb29rVXBWYXJLaW5kKTsKIAorICAgIC8vIFNldCB1cCB0aGUg
bGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9y
ZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2Nv
cGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtl
eWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29k
ZS4KKyAgICBpZiAobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBd2FpdCgpKSB7CisgICAgICAgIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQobV92bSwgbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gYWRk
Q29uc3RhbnRWYWx1ZShtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKS0+aW5kZXgoKTsKKyAg
ICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtb3Zl
KGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpGaWVsZDo6RnJhbWUpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9y
OjpGaWVsZDo6RnJhbWUpKTsKKyAgICAgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJh
bWUpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgIH0KKwogICAgIC8vIFdlIGtlZXAg
dGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgY29uc3RhbnQgcG9vbC4KICAgICBSZWdpc3RlcklEKiBj
b25zdGFudFN5bWJvbFRhYmxlID0gbnVsbHB0cjsKICAgICBpZiAoc2hvdWxkRW1pdFR5cGVQcm9m
aWxlckhvb2tzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmlu
ZGV4IDQ5MTBmYzdjZGFmYzViYTg3Y2YyODkzNGNhMjMzYTRmOGJjNmQ3MjMuLjU3ZDg3YmZhYTFm
ZTJjYWVmYTg3Nzg2MzNlMWMzMjlhN2FlZTgyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCkBAIC00MDAsNiArNDAwLDcgQEAgcHVibGljOgogICAgIEF3YWl0
RXhwck5vZGUqIGNyZWF0ZUF3YWl0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoYXJndW1lbnQpOworICAgICAgICB1c2VzQXdhaXQoKTsKICAgICAg
ICAgQXdhaXRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXdhaXRFeHByTm9k
ZShsb2NhdGlvbiwgYXJndW1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2Rl
LCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwpAQCAtMTA5OSw2ICsx
MTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zY29wZS5tX2ZlYXR1cmVzIHw9IEV2YWxGZWF0
dXJlOwogICAgIH0KICAgICB2b2lkIHVzZXNOZXdUYXJnZXQoKSB7IG1fc2NvcGUubV9mZWF0dXJl
cyB8PSBOZXdUYXJnZXRGZWF0dXJlOyB9CisgICAgdm9pZCB1c2VzQXdhaXQoKSB7IG1fc2NvcGUu
bV9mZWF0dXJlcyB8PSBBd2FpdEZlYXR1cmU7IH0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
SW50ZWdlckxpa2VOdW1iZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91Ymxl
IGQpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2VyTm9k
ZShsb2NhdGlvbiwgZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4
IDY0YTY2Zjc2NWM4ZjRkMjg0OTZkYTljZTZjNDRhYmIwOGFhODgxYjkuLjk1MDQ2MDUyYjYxYjlk
YjAzYWY3MGZiODU5ODQ3OTY3OWEyZjIyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCkBAIC0xNzcsNiArMTc3LDcgQEAgTW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVBy
b2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2EKICAg
ICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNv
dXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGlj
YWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJl
cywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBt
X3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQor
ICAgICwgbV91c2VzQXdhaXQoZmVhdHVyZXMgJiBBd2FpdEZlYXR1cmUpCiAgICAgLCBtX21vZHVs
ZVNjb3BlRGF0YSgqV1RGTW92ZShtb2R1bGVTY29wZURhdGEpKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGVkOTA3NzUzOTA1N2Y1MzYxNjIzZmM3OWQ3ZWJiY2I5
OGMwMTdiZGYuLmEzODlkYzcxZDBjZmI2MTA2NzVmMDQ3NDE0ZjVhZWRlZTk3ZWMxYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE5NzksNiArMTk3OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7
IHJldHVybiBtX2VuZENvbHVtbjsgfQorICAgICAgICBib29sIHVzZXNBd2FpdCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0F3YWl0OyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNj
b3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCkBAIC0xOTkxLDYgKzE5OTIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1u
OwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKKyAgICAgICAgYm9vbCBtX3VzZXNBd2Fp
dDsKICAgICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGFiZmY0NDA0
M2ZiYzQ5ZWNlOTYzYzM0ZGJlZWY2M2IxZjFlZjQ1NjcuLjE0MTIwYmQxNGJkYjFjNGVmYTUwOGI1
NTcwNmRlMTMyYzk3YmQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTIwOSw2ICsyMDksMTEgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogewog
fQogCit2b2lkIEpTVG9rZW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBv
dXQucHJpbnQoKm1fZGF0YS5jb29rZWQpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1
bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmll
ciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGlu
dD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKQEAgLTIyNDEsNiArMjI0
NiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBh
cnNlTW9kZSBtb2RlKQogICAgIHJldHVybiBudWxscHRyOwogfQogCitzdGF0aWMgYm9vbCBjYW5V
c2VBd2FpdChTb3VyY2VQYXJzZU1vZGUgbW9kZSkgeworICAgIHJldHVybiBpc0FzeW5jRnVuY3Rp
b25QYXJzZU1vZGUobW9kZSkgfHwgaXNNb2R1bGVQYXJzZU1vZGUobW9kZSk7Cit9CisKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xh
c3MgRnVuY3Rpb25JbmZvVHlwZT4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBGdW5jdGlvbkluZm9UeXBlJiBmdW5jdGlvbkluZm8pCiB7CiAgICAgYXV0
byBtb2RlID0gc291cmNlUGFyc2VNb2RlKCk7CkBAIC00MDc3LDggKzQwODYsMTAgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VZaWVsZEV4cHJlc3MKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUF3YWl0RXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKKyAgICBkYXRhTG9n
TG4obV90b2tlbik7CiAgICAgQVNTRVJUKG1hdGNoKEFXQUlUKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGN1cnJlbnRTY29wZSgp
LT5pc0FzeW5jRnVuY3Rpb24oKSB8fCBpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUo
KSkpOworICAgIEFTU0VSVChjYW5Vc2VBd2FpdChzb3VyY2VQYXJzZU1vZGUoKSkpOwogICAgIEFT
U0VSVChtX3BhcnNlclN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSAhPSBGdW5jdGlvblBhcnNlUGhh
c2U6OlBhcmFtZXRlcnMpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRp
b24oKTsKQEAgLTQ3MzYsNyArNDc0Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAg
Y2FzZSBBV0FJVDoKICAgICAgICAgaWYgKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNl
ID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycykKICAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmRmFsc2UobV9wYXJzZXJTdGF0ZS5hbGxvd0F3YWl0LCAiQ2Fubm90IHVzZSAnYXdhaXQn
IHdpdGhpbiBhIHBhcmFtZXRlciBkZWZhdWx0IGV4cHJlc3Npb24iKTsKLSAgICAgICAgZWxzZSBp
ZiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkKKyAg
ICAgICAgZWxzZSBpZiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91
bmRhcnkoKSB8fCBpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VBd2FpdEV4cHJlc3Npb24oY29udGV4dCk7CiAKICAgICAgICAgZ290
byBpZGVudGlmaWVyRXhwcmVzc2lvbjsKQEAgLTUyNjAsNyArNTI3MSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VW5hcnlFeHByZXNzCiAgICAgYm9vbCBoYXNQcmVmaXhVcGRhdGVPcCA9IGZhbHNlOwogICAgIHVu
c2lnbmVkIGxhc3RPcGVyYXRvciA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkobWF0Y2goQVdBSVQp
ICYmIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkpKQor
ICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgKGN1cnJlbnRGdW5jdGlvblNjb3BlKCkt
PmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFy
c2VNb2RlKCkpKSkpCiAgICAgICAgIHJldHVybiBwYXJzZUF3YWl0RXhwcmVzc2lvbihjb250ZXh0
KTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDc5NTE4YTMwNTRk
N2Y2NTVhODk3Nzg2M2ZhNDE5ZjQzYjY4NWQwMTkuLjJiM2M1MzY3NjMxNWRiMWZlMDJhMmFkMTAx
N2QwZjBlZjFlY2FhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmgKQEAgLTMyMCw4ICszMjAsOSBAQCBjb25zdCBDb2RlRmVhdHVyZXMgU3VwZXJQcm9wZXJ0
eUZlYXR1cmUgPSAgICAgICAgICAxIDw8IDk7CiBjb25zdCBDb2RlRmVhdHVyZXMgTmV3VGFyZ2V0
RmVhdHVyZSA9ICAgICAgICAgICAgICAxIDw8IDEwOwogY29uc3QgQ29kZUZlYXR1cmVzIE5vRXZh
bENhY2hlRmVhdHVyZSA9ICAgICAgICAgICAgMSA8PCAxMTsKIGNvbnN0IENvZGVGZWF0dXJlcyBO
b25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZSA9IDEgPDwgMTI7Citjb25zdCBDb2RlRmVhdHVy
ZXMgQXdhaXRGZWF0dXJlID0gICAgICAgICAgICAgICAgICAxIDw8IDEzOwogCi1jb25zdCBDb2Rl
RmVhdHVyZXMgQWxsRmVhdHVyZXMgPSBFdmFsRmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBX
aXRoRmVhdHVyZSB8IFRoaXNGZWF0dXJlIHwgU3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJn
dW1lbnRzRmVhdHVyZSB8IEFycm93RnVuY3Rpb25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRl
eHRGZWF0dXJlIHwgU3VwZXJDYWxsRmVhdHVyZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3
VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENhY2hlRmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxp
c3RGZWF0dXJlOworY29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1cmUg
fCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVhdHVyZSB8IFN0cmljdE1v
ZGVGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uRmVhdHVy
ZSB8IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVyZSB8IFN1cGVyQ2FsbEZlYXR1cmUgfCBTdXBl
clByb3BlcnR5RmVhdHVyZSB8IE5ld1RhcmdldEZlYXR1cmUgfCBOb0V2YWxDYWNoZUZlYXR1cmUg
fCBOb25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZSB8IEF3YWl0RmVhdHVyZTsKIAogdHlwZWRl
ZiB1aW50OF90IElubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IGEyMTkxNzI0ZTA0NTFl
NDZlNGY4Mjg4MTBjN2RiZTNmYTliN2ViNjUuLmRlNjdhNDBiYzU1MGJlNzc2Nzk4NDJhOGYzZjY5
ZGRhOTc5YWI3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaApAQCAtMjgzLDYgKzI4Myw4IEBAIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuTG9j
YXRpb24gbV9sb2NhdGlvbjsKICAgICBKU1RleHRQb3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAg
ICAgSlNUZXh0UG9zaXRpb24gbV9lbmRQb3NpdGlvbjsKKworICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogfTsKIAogQUxXQVlTX0lOTElORSBib29sIGlzVXBkYXRlT3AoSlNUb2tl
blR5cGUgdG9rZW4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421151</attachid>
            <date>2021-02-21 13:56:42 -0800</date>
            <delta_ts>2021-02-21 15:34:40 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-202484-20210221135641.patch</filename>
            <type>text/plain</type>
            <size>65040</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjAzNTY3YzBhZDdhMjk1OGI3ZDkzNDllZDgyN2NmNzU0NDg2ODQyLi4zZGU5ZjY1MWMxYTc4OWJl
OWU2NDhiMGJkYjBjNmFjZWQ4YzU5NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0wMi0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIFRvcC1sZXZlbCBhd2FpdCBwcm9wb3NhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUF3YWl0KToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6dXNlc0F3YWl0KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpNb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Rva2VuOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Y2FuVXNlQXdhaXQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlclRva2Vucy5oOgorCiAyMDIxLTAyLTE2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gRHluYW1pY2FsbHkgZ2VuZXJhdGUgZW50aXRsZW1lbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRl
eCBkZWU3MzI1M2Y4NWQ1YjEyOGQyYzJiM2FhNTI0YWM0MmJkOWFhOGRlLi45ZDUyODg5NTk4N2Mx
Y2VhMjVhYzBjNDIyMDFiOThlNDY5NGI0OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTI1OCw3ICsyNTgsOCBAQCBKU1ZhbHVlIEpT
QVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKUwogICAgICAgICBbbW9kdWxlTG9hZGVyRGVsZWdhdGUgd2lsbEV2YWx1YXRl
TW9kdWxlOnVybF07CiAKICAgICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSBtb2R1bGVMb2FkZXItPmV2YWx1YXRlTm9uVmlydHVhbChnbG9iYWxPYmplY3QsIGtleSwgbW9k
dWxlUmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIpOworICAgIC8vIFRPRE86IGFwaT8KKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IG1vZHVsZUxvYWRlci0+ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9i
amVjdCwga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlciwganNVbmRlZmluZWQo
KSwganNOdW1iZXIoMCkpOwogCiAgICAgaWYgKFttb2R1bGVMb2FkZXJEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZEV2YWx1YXRlTW9kdWxlOildKQogICAgICAgICBbbW9k
dWxlTG9hZGVyRGVsZWdhdGUgZGlkRXZhbHVhdGVNb2R1bGU6dXJsXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCmluZGV4IGE4Yzg2MTVlOWQyMWVh
ZDRiYzkzNzA2ODc1NzgzN2NiZjBhNTg0ZDAuLmQzZWMzN2JhYjllMzhhYmI2YjY4YTI1NzUwMzQ2
ZDM3MmUwNjMxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9N
b2R1bGVMb2FkZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVs
ZUxvYWRlci5qcwpAQCAtMTAwLDYgKzEwMCw4IEBAIGZ1bmN0aW9uIG5ld1JlZ2lzdHJ5RW50cnko
a2V5KQogICAgICAgICBsaW5rU3VjY2VlZGVkOiB0cnVlLAogICAgICAgICBldmFsdWF0ZWQ6IGZh
bHNlLAogICAgICAgICB0aGVuOiBAdW5kZWZpbmVkLAorICAgICAgICBpc0FzeW5jOiBmYWxzZSwK
KyAgICAgICAgY29tcGxldGlvblByb21pc2U6IEB1bmRlZmluZWQsCiAgICAgfTsKIH0KIApAQCAt
MjAzLDYgKzIwNSw3IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShlbnRyeSwgcGFyYW1l
dGVycywgZmV0Y2hlcikKICAgICAgICAgdmFyIG1vZHVsZVJlY29yZCA9IGF3YWl0IHRoaXMucGFy
c2VNb2R1bGUoa2V5LCBzb3VyY2UpOwogICAgICAgICB2YXIgZGVwZW5kZW5jaWVzTWFwID0gbW9k
dWxlUmVjb3JkLmRlcGVuZGVuY2llc01hcDsKICAgICAgICAgdmFyIHJlcXVlc3RlZE1vZHVsZXMg
PSB0aGlzLnJlcXVlc3RlZE1vZHVsZXMobW9kdWxlUmVjb3JkKTsKKyAgICAgICAgQCR2bS5wcmlu
dCgiZm91bmQgcmVxdWVzdHMgZm9yICIgKyBlbnRyeS5rZXkgICsgIiBbIiArIHJlcXVlc3RlZE1v
ZHVsZXMgKyAiXSIpOwogICAgICAgICB2YXIgZGVwZW5kZW5jaWVzID0gQG5ld0FycmF5V2l0aFNp
emUocmVxdWVzdGVkTW9kdWxlcy5sZW5ndGgpOwogICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVu
Z3RoID0gcmVxdWVzdGVkTW9kdWxlcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgdmFyIGRlcE5hbWUgPSByZXF1ZXN0ZWRNb2R1bGVzW2ldOwpAQCAtMjEyLDYgKzIxNSw3
IEBAIGZ1bmN0aW9uIHJlcXVlc3RJbnN0YW50aWF0ZShlbnRyeSwgcGFyYW1ldGVycywgZmV0Y2hl
cikKICAgICAgICAgICAgIGRlcGVuZGVuY2llc01hcC5Ac2V0KGRlcE5hbWUsIGRlcEVudHJ5KTsK
ICAgICAgICAgfQogICAgICAgICBlbnRyeS5kZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNpZXM7Cisg
ICAgICAgIEAkdm0ucHJpbnQoImZvdW5kIGRlcGVuZGVuY2llcyBmb3IgIiArIGVudHJ5LmtleSAg
KyAiIFsiICsgZGVwZW5kZW5jaWVzICsgIl0iKTsKICAgICAgICAgZW50cnkubW9kdWxlID0gbW9k
dWxlUmVjb3JkOwogICAgICAgICBAc2V0U3RhdGVUb01heChlbnRyeSwgQE1vZHVsZVNhdGlzZnkp
OwogICAgICAgICByZXR1cm4gZW50cnk7CkBAIC0yODYsMTEgKzI5MCwxNSBAQCBmdW5jdGlvbiBs
aW5rKGVudHJ5LCBmZXRjaGVyKQogICAgICAgICAvLyBTaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhl
ICJkZXBlbmRlbmNpZXMiIGZpZWxkLAogICAgICAgICAvLyB3ZSBjYW4gY2FsbCBtb2R1bGVEZWNs
YXJhdGlvbkluc3RhbnRpYXRpb24gd2l0aCB0aGUgY29ycmVjdCBvcmRlcgogICAgICAgICAvLyB3
aXRob3V0IGNvbnN0cnVjdGluZyB0aGUgZGVwZW5kZW5jeSBncmFwaCBieSBjYWxsaW5nIGRlcGVu
ZGVuY3lHcmFwaC4KKyAgICAgICAgdmFyIGhhc0FzeW5jRGVwZW5kZW5jeSA9IGZhbHNlOwogICAg
ICAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5jaWVzOwotICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytp
KQotICAgICAgICAgICAgdGhpcy5saW5rKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ld
OworICAgICAgICAgICAgdGhpcy5saW5rKGRlcGVuZGVuY3ksIGZldGNoZXIpOworICAgICAgICAg
ICAgaGFzQXN5bmNEZXBlbmRlbmN5IHx8PSBkZXBlbmRlbmN5LmlzQXN5bmM7CisgICAgICAgIH0K
IAotICAgICAgICB0aGlzLm1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1
bGUsIGZldGNoZXIpOworICAgICAgICBlbnRyeS5pc0FzeW5jID0gdGhpcy5tb2R1bGVEZWNsYXJh
dGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBmZXRjaGVyKSB8fCBoYXNBc3luY0RlcGVu
ZGVuY3k7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgZW50cnkubGlua1N1Y2NlZWRl
ZCA9IGZhbHNlOwogICAgICAgICBlbnRyeS5saW5rRXJyb3IgPSBlcnJvcjsKQEAgLTMwMyw3ICsz
MTEsNiBAQCBmdW5jdGlvbiBsaW5rKGVudHJ5LCBmZXRjaGVyKQogZnVuY3Rpb24gbW9kdWxlRXZh
bHVhdGlvbihlbnRyeSwgZmV0Y2hlcikKIHsKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZXZhbHVhdGlvbgotCiAgICAgInVz
ZSBzdHJpY3QiOwogCiAgICAgaWYgKGVudHJ5LmV2YWx1YXRlZCkKQEAgLTMxMiwxMCArMzE5LDQ5
IEBAIGZ1bmN0aW9uIG1vZHVsZUV2YWx1YXRpb24oZW50cnksIGZldGNoZXIpCiAKICAgICAvLyBU
aGUgY29udGVudHMgb2YgdGhlIFtbUmVxdWVzdGVkTW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVu
dHJ5LmRlcGVuZGVuY2llcy4KICAgICB2YXIgZGVwZW5kZW5jaWVzID0gZW50cnkuZGVwZW5kZW5j
aWVzOwotICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBp
IDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihkZXBlbmRlbmNp
ZXNbaV0sIGZldGNoZXIpOworICAgIEAkdm0ucHJpbnQoInN0YXJ0aW5nICIgKyBlbnRyeS5rZXkg
KyAiIGlzQXN5bmM6ICIgKyBlbnRyeS5pc0FzeW5jKTsKKworICAgIGlmICghZW50cnkuaXNBc3lu
YykgeworICAgICAgICAvLyBUaGUgY29udGVudHMgb2YgdGhlIFtbUmVxdWVzdGVkTW9kdWxlc11d
IGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4KKyAgICAgICAgLy8gU2luY2UgbGlu
a2luZyBzZXRzIGlzQXN5bmMgZm9yIGFueSBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50IHdp
dGggYW4gYXN5bmMgbW9kdWxlIHdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGlmIGFsbCBvdXIgZGVw
ZW5kZW5jaWVzIGFyZSBhbHNvIHN5bmMuCisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGgg
PSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZh
ciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgQGFzc2VydCghZGVw
ZW5kZW5jeS5pc0FzeW5jKTsKKyAgICAgICAgICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihkZXBl
bmRlbmN5LCBmZXRjaGVyKTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5ldmFsdWF0ZShlbnRyeS5r
ZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgICAgIEAkdm0ucHJpbnQoInN5bmMgZXZh
bHVhdGlvbiAiICsgZW50cnkua2V5KTsKKyAgICAgICAgdGhpcy5ldmFsdWF0ZShlbnRyeS5rZXks
IGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIGNhcHR1
cmVkTG9hZGVyID0gdGhpczsKKyAgICAgICAgQCR2bS5wcmludCgic3RhcnRpbmcgYXN5bmMiKTsK
KyAgICAgICAgcmV0dXJuIChhc3luYyBmdW5jdGlvbiBhc3luY01vZHVsZUV2YWx1YXRpb24oKSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0
aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBk
ZXBlbmRlbmNpZXNbaV07CisgICAgICAgICAgICAgICAgYXdhaXQgY2FwdHVyZWRMb2FkZXIubW9k
dWxlRXZhbHVhdGlvbihkZXBlbmRlbmN5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHJlc3VtZU1vZGUgPSAwOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgICAgICBAJHZtLnByaW50KCJhYm91dCB0byBldmFsdWF0ZSAiICsgZW50cnku
a2V5ICsgIiB3aXRoIHJlc3VtZSBtb2RlICIgKyByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgICAg
ICB2YXIgYXdhaXRlZFZhbHVlID0gY2FwdHVyZWRMb2FkZXIuZXZhbHVhdGUoZW50cnkua2V5LCBl
bnRyeS5tb2R1bGUsIGZldGNoZXIsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAg
ICAgICAgICAgQCR2bS5wcmludCgiYXdhaXRpbmcgIiArIGF3YWl0ZWRWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgQCR2bS5wcmludCgiY3VycmVudCBzdGF0ZSBmb3IgIiArIGVudHJ5LmtleSArICIg
IiArIEBnZXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZChlbnRyeS5tb2R1bGUsIEBhcnJheUl0
ZXJhdG9yRmllbGRJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChAZ2V0QXJyYXlJdGVyYXRv
ckludGVybmFsRmllbGQoZW50cnkubW9kdWxlLCBAYXJyYXlJdGVyYXRvckZpZWxkSW5kZXggLyog
MCAqLykgPT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7IC8vIFRPRE86IG1ha2UgbmV3IGlu
dHJpbnNpYworICAgICAgICAgICAgICAgICAgICBAJHZtLnByaW50KCJkb25lIHdpdGggIiArIGVu
dHJ5LmtleSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXRlZFZhbHVl
ID0gYXdhaXQgYXdhaXRlZFZhbHVlOworICAgICAgICAgICAgICAgICAgICByZXN1bWVNb2RlID0g
MDsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIEAk
dm0ucHJpbnQoInRocmV3IGluIG1vZHVsZUV2YWx1YXRpb24iKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXdhaXRlZFZhbHVlID0gZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdW1lTW9kZSA9IDI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KSgpOworICAgIH0K
IH0KIAogLy8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKaW5kZXggYThlNTZkMGNkMzk0YmMxYjdhYzA1MjZiZTg2NjdlYWM4YmRkN2U2
YS4uNmNiODhjZTdhZjUzNTc5YTk2YmNhNjQ3ODRiMjczMWNhNTgyOGZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50ZXJQb2ludCA9
IGVudGVyUG9pbnQoKS5uZXh0KCk7CiAgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXgg
PSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIFZpcnR1
YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0
YXRlKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
QXJndW1lbnQ6OlN0YXRlKSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fY29kZUJsb2Nr
LT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CiAgICAg
ICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzID0gUmVmQ291bnRlZEFycmF5PGludDMyX3Q+KG1f
eWllbGRzLnNpemUoKSArIDEpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgfQogCiAgICAgZm9yIChjb25zdCBZaWVsZERhdGEm
IGRhdGEgOiBtX3lpZWxkcykgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOworICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpGcmFtZSkpOwogCiAg
ICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy5hdChkYXRhLnBvaW50KTsK
ICAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgpAQCAtMjkzLDExICsyOTMsMTggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKIAogdm9pZCBwZXJmb3JtR2VuZXJh
dG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5r
ZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXIm
IGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGlu
dCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCiB7Ci0gICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkpCisgICAgaWYg
KFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24o
KSkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJCeXRlY29kZXMgYmVmb3JlIGdlbmVyYXRvcmlmaWNh
dGlvbiIpOwogICAgICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvcj46OmR1bXBCbG9jayhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgV1RGOjpkYXRh
RmlsZSgpKTsKKyAgICB9CiAKICAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGJ5
dGVjb2RlR2VuZXJhdG9yLCBjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKICAgICBwYXNzLnJ1
bigpOworCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5l
cmF0b3JpZmljYXRpb24oKSkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJCeXRlY29kZXMgYWZ0ZXIg
Z2VuZXJhdG9yaWZpY2F0aW9uIik7CisgICAgICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPFVu
bGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPjo6ZHVtcEJsb2NrKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zLCBXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggNWNhMzY0OWE3YzFmYzQ3NzU3OTk2ZjNjMzIyMDI4
Y2Y0NWUwNWMzMi4uY2ZiNTQ2ZTlmNzM3YmUwNGUwMTRmNTdlNTM3ZTdhYTk3YzhjYzRkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtODYsMTEgKzg2LDExIEBAIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fZ2Vu
ZXJhdG9yRmllbGROZXh0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpOwogICAgIG1fZ2VuZXJhdG9yRmllbGRUaGlzLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxk
OjpUaGlzKSkpOwogICAgIG1fZ2VuZXJhdG9yRmllbGRGcmFtZS5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSk7Ci0gICAg
bV9HZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkp
KTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93
TW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2Rl
OjpSZXR1cm5Nb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0
ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0
ZTo6RXhlY3V0aW5nKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbC5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0s
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpU
aHJvd01vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6UmV0
dXJuTW9kZSkpKTsKKyAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkNvbXBsZXRlZCkp
KTsKKyAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykpKTsKICAgICBt
X2FycmF5SXRlcmF0b3JGaWVsZEl0ZXJhdGVkT2JqZWN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkp
KTsKICAgICBtX2FycmF5SXRlcmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpKTsKICAgICBt
X2FycmF5SXRlcmF0b3JGaWVsZEtpbmQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBhMjRkMjY1MWI1MWE4NmU2
YzllNzA2OWQ3NDI2MGJjYTg1NzFlNDkxLi5jYjBlN2M4YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZi
OWQ3Mjk3NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTEyOTcsNyArMTI5Nyw2IEBAIG9wIDppdGVyYXRvcl9uZXh0LAogCiBvcCA6
eWllbGQsCiAgICAgYXJnczogewotICAgICAgICBnZW5lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgeWllbGRQb2ludDogdW5zaWduZWQsCiAgICAgICAgIGFyZ3VtZW50OiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAKaW5kZXggNDI1YWYyNWI4MDQ5MjlmNDYxZjBiYjEzOGM2NWE4Y2Y1
NGJiNTI0My4uMDE2YTAyN2ZhMzNhYjc5NDk0MzEyYTRhNDc3ZGZjNWIyZTdhMDBkNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZp
cnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wR2V0
SW50ZXJuYWxGaWVsZCwgYmFzZSkKICAgICBVU0VTKE9wUHV0SW50ZXJuYWxGaWVsZCwgYmFzZSwg
dmFsdWUpCiAKLSAgICBVU0VTKE9wWWllbGQsIGdlbmVyYXRvciwgYXJndW1lbnQpCisgICAgVVNF
UyhPcFlpZWxkLCBhcmd1bWVudCkKIAogICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogewogICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGI5MzI0ODFhYTRlMjVjNDdkN2U3YWVl
NDExYjA4OTgzMzAwZGFlMTYuLjg1MzlmNTYyYjkzMDU0NmRlNGE3Mzg2NTgzMTAwZTYxNGZiNDk5
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKQEAgLTgyLDYgKzgyLDggQEAgcHVi
bGljOgogICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lz
dGVyT2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAorICAgIGJvb2wgaXNBc3luYygpIGNvbnN0IHsg
cmV0dXJuIGNvZGVGZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIENhY2hlZE1vZHVsZUNvZGVCbG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBkYzlj
MmQ5NjFiN2U5MmQ5NTg0MDg4OGJkMmRjM2ZkNzQ4YzdiMjE2Li44MjNjZTk5NjdhNzgyODViMzI4
MmExNGUyODlkN2ZjNGNmMDY5MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAK
KyNpbmNsdWRlICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yQmFzZUlubGluZXMuaCIKQEAgLTI3OSw3ICsyODAsNyBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KICAgICAKIAotICAgIGlmIChpc0dl
bmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2stPnBhcnNlTW9k
ZSgpKSkKKyAgICBpZiAobV9pc0FzeW5jKQogICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0
aW9uKCp0aGlzLCBtX2NvZGVCbG9jay5nZXQoKSwgbV93cml0ZXIsIG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogCiAg
ICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1D
YWxsZWVMb2NhbHMoKSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgpKTsKQEAgLTM4NSw2ICszODYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygp
ICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFs
KCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5p
c0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigp
KSkgJiYgcGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVy
TW9kZTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUo
cGFyc2VNb2RlKSkgeworICAgICAgICBtX2lzQXN5bmMgPSB0cnVlOwogICAgICAgICAvLyBHZW5l
cmF0b3IgYW5kIEFzeW5jRnVuY3Rpb24gbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1
bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBm
dW5jdGlvbiBzY29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CkBA
IC00MzQsNyArNDM2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBlbWl0RW50ZXIo
KTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFy
c2VNb2RlKSkKLSAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07
CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OkdlbmVyYXRvcildOwogCiAgICAgYWxs
b2NhdGVBbmRFbWl0U2NvcGUoKTsKIApAQCAtOTUxLDYgKzk1MywxMyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxl
UHJvZ3JhbU5vZAogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3Bl
IDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAorICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZS0+
dXNlc0F3YWl0KCkpIHsKKyAgICAgICAgbV9pc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8PSBKU0dlbmVyYXRvcjo6QXJndW1lbnQ6Ok51bWJlck9mQXJndW1l
bnRzOyArK2kpCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkFyZ3VtZW50OjpHZW5lcmF0b3IpXTsKKyAgICB9CisK
ICAgICBlbWl0RW50ZXIoKTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CkBAIC05NTks
NyArOTY4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
TW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICAKICAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAKLSAgICBtX2NvZGVCbG9j
ay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorICAg
IG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0
cmFjdE1vZHVsZVJlY29yZDo6QXJndW1lbnQ6Ok51bWJlck9mQXJndW1lbnRzKSArIDEpOyAvLyBB
bGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiICsgYXN5bmMgbW9kdWxlIGFyZ3VtZW50cy4KIAogICAg
IC8vIE5vdyBkZWNsYXJlIGFsbCB2YXJpYWJsZXMuCiAKQEAgLTk4MywxMSArOTkyLDE3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAKICAgICAvLyBXZSBrZWVwIHRoZSBzeW1ib2wgdGFibGUg
aW4gdGhlIGNvbnN0YW50IHBvb2wuCiAgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJs
ZSA9IG51bGxwdHI7Ci0gICAgaWYgKHNob3VsZEVtaXRUeXBlUHJvZmlsZXJIb29rcygpKQorICAg
IGlmIChzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSB8fCBtb2R1bGVQcm9ncmFtTm9kZS0+
dXNlc0F3YWl0KCkpCiAgICAgICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25zdGFudFZh
bHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwogICAgIGVsc2UKICAgICAgICAgY29u
c3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUobW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQobV92bSkpOwogCisgICAgaWYgKG1vZHVsZVByb2dyYW1O
b2RlLT51c2VzQXdhaXQoKSkgeworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUu
c2V0KG1fdm0sIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOworICAgICAgICBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCk7
CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6OkZyYW1lKSwgZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBwdXNoVERaVmFyaWFibGVzKGxl
eGljYWxWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgVERaUmVxdWly
ZW1lbnQ6OlVuZGVyVERaKTsKICAgICBib29sIGlzV2l0aFNjb3BlID0gZmFsc2U7CiAgICAgbV9s
ZXhpY2FsU2NvcGVTdGFjay5hcHBlbmQoeyBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLCBt
X3RvcE1vc3RTY29wZSwgaXNXaXRoU2NvcGUsIGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCkg
fSk7CkBAIC00NzM4LDcgKzQ3NTMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWll
bGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvcjo6QQogICAgIHdo
aWxlIChtX3dyaXRlci5wb3NpdGlvbigpICUgT3Bjb2RlU2l6ZTo6V2lkZTMyKQogICAgICAgICBP
cE5vcDo6ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KHRoaXMpOwogI2VuZGlmCi0gICAgT3BZaWVs
ZDo6ZW1pdCh0aGlzLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIHlpZWxkUG9pbnRJbmRleCwg
YXJndW1lbnQpOworICAgIE9wWWllbGQ6OmVtaXQodGhpcywgeWllbGRQb2ludEluZGV4LCBhcmd1
bWVudCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9m
ZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KICAgICBtX3RyeUNvbnRleHRTdGFj
ay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKQEAgLTQ3NTEsMTEgKzQ3NjYsMTEgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVu
dCwgSlNBc3luY0dlbmVyYXRvcjoKIAogICAgIFJlZjxMYWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdM
YWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3Jhcnko
KTsKLSAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVy
YXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFs
TW9kZSkpKSk7CisgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgp
LCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1v
ZGUpKSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwu
Z2V0KCkpOwogCiAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0gbmV3TGFiZWwoKTsKLSAgICBl
bWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsK
KyAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAg
ICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogICAg
IC8vIFJldHVybi4KICAgICB7CkBAIC00OTM5LDEwICs0OTU0LDEwIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgUmVmPExhYmVsPiByZXR1cm5MYWJlbCA9IG5ld0xh
YmVsKCk7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICAgICAgICAg
IGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0
ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpKSkpOwogICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25k
aXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAotICAgICAgICAgICAgICAgICAgICBl
bWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7
CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIs
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpS
ZXR1cm5Nb2RlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0
aW9uLmdldCgpLCByZXR1cm5MYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8g
RmFsbHRocm91Z2ggdG8gVGhyb3dNb2RlLgpAQCAtNTA0Niw5ICs1MDYxLDEwIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JT
dGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQogeworICAgIC8vIEZJWE1FOiBJdCBzZWVtcyBsaWtl
IHRoaXMgd2lsbCBjcmVhdGUgYSBsb3Qgb2YgY29uc3RhbnRzIGlmIHRoZXJlIGFyZSBtYW55IHlp
ZWxkIHBvaW50cy4gTWF5YmUgd2Ugc2hvdWxkIG9wX2luYyB0aGUgb2xkIHN0YXRlLgogICAgIFJl
Z2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGUpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6OlN0YXRlKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRv
cjo6RmllbGQ6OlN0YXRlKSk7Ci0gICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUp
LCBjb21wbGV0ZWRTdGF0ZSk7CisgICAgZW1pdFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKCkpID8gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpIDogc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7CiB9
CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRKdW1wVmlhRmluYWxseUlmTmVlZGVkKGlu
dCB0YXJnZXRMYWJlbFNjb3BlRGVwdGgsIExhYmVsJiBqdW1wVGFyZ2V0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IGE1Y2JkMzY5OWE0NzNjYmRjMDg3ZmJlNmZhMWIwY2ZkYjA0ZDU2N2UuLjk1MmQxM2IzOGQ3
NmQ3ODRlMmJjYjczYTkwYTNkZDkwMjMzM2Q5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEwNTYsMTAg
KzEwNTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQo
UmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3Vz
cGVuZFJlYXNvbiA9IEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bjo6WWllbGQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3Rl
cklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSld
OyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0
b3JBcmd1bWVudDo6VmFsdWUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9kZSldOyB9Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVu
dDo6RnJhbWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVy
KCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6QXJndW1lbnQ6OlN0YXRlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpWYWx1ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpGcmFt
ZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVUeXBlOyB9CiAKQEAgLTEzMjUsNiArMTMyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBWZWN0b3I8UmVmPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAg
IFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKICAgICAgICAgdW5zaWduZWQg
bV95aWVsZFBvaW50cyB7IDAgfTsKKyAgICAgICAgYm9vbCBtX2lzQXN5bmMgeyBmYWxzZSB9Owog
CiAgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
OwogICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggZTVmODFhNTZlM2I3OTBjMGZlNWVhMTc4ZDQyMDQ5NjlhZmNjMmE5NS4uZDEyMDkx
YTM3YjBmYzRkZjg0ZTkwMGZmZTYyZjFhOWQ1MThlZDk2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNDk0MCw3ICs0
OTQwLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5h
cmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdp
c3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFy
Z3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5wcm9taXNlUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwg
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50
UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsr
KSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpKSk7CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50
IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBk
aXZvdChmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBA
IC00OTU3LDExICs0OTU3LDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxMYWJl
bD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0
KCkpOwogCiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OlJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKIAogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCA3ZWY5NTkxOTk1Y2VkZWVlYzdlMTZkNjgwYzI3ZGJmYTQ5OTIwNWRjLi5h
ZDFiMTk1Y2JjODUzMmNmZTZlNjY0YmJkMjMwYmYyYTc0ZTgwODhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCisj
aW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZUNsb3N1cmUuaCIKQEAgLTQ5LDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1
dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxp
dGVyYWxQYXJzZXIuaCIKQEAgLTEyMDEsNyArMTIwMyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVu
dmlyb25tZW50KiBzY29wZSkKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9n
cmFtKEpTTW9kdWxlUmVjb3JkKiByZWNvcmQsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNNb2R1bGVFbnZp
cm9ubWVudCogc2NvcGUsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMjMxLDYgKzEyMzMsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSgogICAgIGlmIChzY29wZS0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKIAor
ICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHMpOwog
ICAgIEpTQ2FsbGVlKiBjYWxsZWUgPSBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewpA
QCAtMTI0MCw3ICsxMjQzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVBy
b2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICAgICAgaWYg
KFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVChjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IG51bWJlck9mQXJndW1lbnRz
ICsgMSk7CiAgICAgfQogCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CkBAIC0xMjQ4LDEy
ICsxMjUxLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKCiAgICAgewogICAgICAgICBEaXNh
bGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFj
ZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KICAgICAgICAgaml0Q29kZSA9IGV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGUoKTsKKworICAgICAgICBKU1ZhbHVlIGFyZ3NbbnVtYmVyT2ZBcmd1
bWVudHNdID0geworICAgICAgICAgICAgcmVjb3JkLAorICAgICAgICAgICAgcmVjb3JkLT5pbnRl
cm5hbEZpZWxkKEpTTW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpLmdldCgpLAorICAgICAgICAg
ICAgc2VudFZhbHVlLAorICAgICAgICAgICAgcmVzdW1lTW9kZSwKKyAgICAgICAgICAgIHNjb3Bl
LAorICAgICAgICB9OwogICAgICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3
YXlzIGB1bmRlZmluZWRgLgogICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhp
c2JpbmRpbmcKICAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5n
Ci0gICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNh
bGxlZSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgbnVtYmVyT2ZBcmd1
bWVudHMgKyAxLCBhcmdzKTsKICAgICB9CiAKKyAgICByZWNvcmQtPmludGVybmFsRmllbGQoSlNN
b2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZSkuc2V0KHZtLCByZWNvcmQsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludD4oSlNNb2R1bGVSZWNvcmQ6OlN0YXRlOjpFeGVjdXRpbmcpKSk7CisKICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VS
VChqaXRDb2RlID09IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDRm
OGJjNzg1YzUzYjNkY2ViYWYyNTIzM2JhODUwZGI1MmFkNDFmYzUuLjBjM2VmZTEyZTUxMDUzODhm
NmNmMjg1MTFkOWVhNWU0ZWFmMzA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNW
YWx1ZSBleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGVNb2R1bGVQcm9ncmFtKEpTTW9kdWxlUmVjb3JkKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
LCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBKU1ZhbHVlIHNlbnRWYWx1
ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERh
dGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVl
IGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1Njb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5o
CmluZGV4IDk1MWQ3NjlkNjkyNDliZjNhYzk4ZjQ0MDgzNDFmNjUxMDJhOTU1YzEuLmFmZWVjYmFj
MDdiMWViMTcwZWQ2ZDQ0NjU1MDgyNTdkYTc2NTFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENvbW1vbi5oCkBAIC0yOSw3ICsyOSw3IEBACiAvLyAtIFByaW50cyBldmVy
eSBpbnN0cnVjdGlvbiBleGVjdXRlZCBpZiBPcHRpb25zOjp0cmFjZUxMSW50RXhlY3V0aW9uKCkg
aXMgZW5hYmxlZC4KIC8vIC0gUHJpbnRzIHNvbWUgaW5mb3JtYXRpb24gZm9yIHNvbWUgb2YgdGhl
IG1vcmUgc3VidGxlIHNsb3cgcGF0aHMgaWYKIC8vICAgT3B0aW9uczo6dHJhY2VMTEludFNsb3dQ
YXRoKCkgaXMgZW5hYmxlZC4KLSNkZWZpbmUgTExJTlRfVFJBQ0lORyAwCisjZGVmaW5lIExMSU5U
X1RSQUNJTkcgMQogCiAvLyBEaXNhYmxlIGlubGluZSBhbGxvY2F0aW9uIGluIHRoZSBpbnRlcnBy
ZXRlci4gVGhpcyBpcyBncmVhdCBpZiB5b3UncmUgY2hhbmdpbmcKIC8vIGhvdyB0aGUgR0MgYWxs
b2NhdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA0
OTEwZmM3Y2RhZmM1YmE4N2NmMjg5MzRjYTIzM2E0ZjhiYzZkNzIzLi41N2Q4N2JmYWExZmUyY2Fl
ZmE4Nzc4NjMzZTFjMzI5YTdhZWU4MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaApAQCAtNDAwLDYgKzQwMCw3IEBAIHB1YmxpYzoKICAgICBBd2FpdEV4cHJO
b2RlKiBjcmVhdGVBd2FpdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYXJndW1lbnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKKyAgICAgICAgdXNlc0F3YWl0KCk7CiAgICAgICAgIEF3
YWl0RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEF3YWl0RXhwck5vZGUobG9j
YXRpb24sIGFyZ3VtZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3Rh
cnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTEwOTksNiArMTEwMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsK
ICAgICB9CiAgICAgdm9pZCB1c2VzTmV3VGFyZ2V0KCkgeyBtX3Njb3BlLm1fZmVhdHVyZXMgfD0g
TmV3VGFyZ2V0RmVhdHVyZTsgfQorICAgIHZvaWQgdXNlc0F3YWl0KCkgeyBtX3Njb3BlLm1fZmVh
dHVyZXMgfD0gQXdhaXRGZWF0dXJlOyB9CiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUludGVn
ZXJMaWtlTnVtYmVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSBkKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9j
YXRpb24sIGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCAwMmI3
ODc1Y2NhZjZhZmY2NjNhYzFlZWY1YWRkYjhkYmQzNDA5Mzc3Li5hODQ5NWQxMTUwYzg4YTllYWY5
ZDc0YTMxYWFlYmVlYTI3MWU5OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBAIE1vZHVsZVByb2dyYW1Ob2RlOjpNb2R1bGVQcm9ncmFt
Tm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhCiAgICAgOiBT
Y29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2Us
IGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RGTW92ZShmdW5jU3RhY2spLCBsZXhpY2FsVmFy
aWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zKSwgZmVhdHVyZXMsIGlu
bmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFy
dENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKKyAgICAs
IG1fdXNlc0F3YWl0KGZlYXR1cmVzICYgQXdhaXRGZWF0dXJlKQogICAgICwgbV9tb2R1bGVTY29w
ZURhdGEoKldURk1vdmUobW9kdWxlU2NvcGVEYXRhKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAppbmRleCAwNWMxOGVhZGYyNDkwMDU2MDU5YTRiY2NjZTE1YWJlNWFmZDQ5
MTZiLi5iOGE3MTZlMDA0MDljZWI5MGExYzhhZjg3ZjljNjFiNjMxNjNmZWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xOTkwLDYgKzE5OTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1
cm4gbV9lbmRDb2x1bW47IH0KKyAgICAgICAgYm9vbCB1c2VzQXdhaXQoKSBjb25zdCB7IHJldHVy
biBtX3VzZXNBd2FpdDsgfQogCiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzY29wZUlz
RnVuY3Rpb24gPSBmYWxzZTsKIApAQCAtMjAwMiw2ICsyMDAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBmaW5hbDsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAg
ICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CisgICAgICAgIGJvb2wgbV91c2VzQXdhaXQ7CiAg
ICAgICAgIFJlZjxNb2R1bGVTY29wZURhdGE+IG1fbW9kdWxlU2NvcGVEYXRhOwogICAgIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzYjFhZjBhZDY5MmJl
YmQ1NTk2YzI4ZjI3OGQ5ZTMzOWI3MzcwNWFjLi4wODgwYTZiYTVlMzM0MzcxZGJkMTkxZmNmZjAx
MmE2NjIxY2ZjZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yMDksNiArMjA5LDExIEBAIFBhcnNlcjxMZXhlclR5cGU+Ojp+UGFyc2VyKCkKIHsKIH0KIAor
dm9pZCBKU1Rva2VuOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnBy
aW50KCptX2RhdGEuY29va2VkKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IEV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBT
dHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1Rl
eHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMpCiB7CkBAIC0yMjUwLDYgKzIyNTUsMTEg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1v
ZGUgbW9kZSkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorc3RhdGljIGJvb2wgY2FuVXNlQXdh
aXQoU291cmNlUGFyc2VNb2RlIG1vZGUpCit7CisgICAgcmV0dXJuIGlzQXN5bmNGdW5jdGlvblBh
cnNlTW9kZShtb2RlKSB8fCBpc01vZHVsZVBhcnNlTW9kZShtb2RlKTsKK30KKwogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBG
dW5jdGlvbkluZm9UeXBlPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
IGNvbnRleHQsIEZ1bmN0aW9uSW5mb1R5cGUmIGZ1bmN0aW9uSW5mbykKIHsKICAgICBhdXRvIG1v
ZGUgPSBzb3VyY2VQYXJzZU1vZGUoKTsKQEAgLTQxMjMsNyArNDEzMyw4IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUF3YWl0RXhwcmVzc2lvbihUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQVdBSVQpKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoY3VycmVudFNjb3Bl
KCktPmlzQXN5bmNGdW5jdGlvbigpIHx8IGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9k
ZSgpKSk7CisgICAgQVNTRVJUKGNhblVzZUF3YWl0KHNvdXJjZVBhcnNlTW9kZSgpKSk7CiAgICAg
QVNTRVJUKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlICE9IEZ1bmN0aW9uUGFyc2VQ
aGFzZTo6UGFyYW1ldGVycyk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3Np
dGlvbigpOwpAQCAtNDc5NSw3ICs0ODA2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAg
ICBjYXNlIEFXQUlUOgogICAgICAgICBpZiAobV9wYXJzZXJTdGF0ZS5mdW5jdGlvblBhcnNlUGhh
c2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzKQogICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZGYWxzZShtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQsICJDYW5ub3QgdXNlICdhd2Fp
dCcgd2l0aGluIGEgcGFyYW1ldGVyIGRlZmF1bHQgZXhwcmVzc2lvbiIpOwotICAgICAgICBlbHNl
IGlmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpKQor
ICAgICAgICBlbHNlIGlmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25C
b3VuZGFyeSgpIHx8IChpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkgJiYgT3B0
aW9uczo6dXNlVG9wTGV2ZWxBd2FpdCgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUF3YWl0
RXhwcmVzc2lvbihjb250ZXh0KTsKIAogICAgICAgICBnb3RvIGlkZW50aWZpZXJFeHByZXNzaW9u
OwpAQCAtNTMxOSw3ICs1MzMwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBib29s
IGhhc1ByZWZpeFVwZGF0ZU9wID0gZmFsc2U7CiAgICAgdW5zaWduZWQgbGFzdE9wZXJhdG9yID0g
MDsKIAotICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgY3VycmVudEZ1bmN0aW9uU2Nv
cGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgaWYgKFVOTElLRUxZKG1hdGNo
KEFXQUlUKSAmJiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRh
cnkoKSB8fCAoaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKSAmJiBPcHRpb25z
Ojp1c2VUb3BMZXZlbEF3YWl0KCkpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlQXdhaXRFeHByZXNz
aW9uKGNvbnRleHQpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXgg
MWNkYWZjNTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJmNzU1ZGI2NC4uOTYzMzRiYmVhNThhMDE2
ZmFmYWQzZjI5NmVjMDg2OTRlMjAwYTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaApAQCAtMzIyLDggKzMyMiw5IEBAIGNvbnN0IENvZGVGZWF0dXJlcyBT
dXBlclByb3BlcnR5RmVhdHVyZSA9ICAgICAgICAgIDEgPDwgOTsKIGNvbnN0IENvZGVGZWF0dXJl
cyBOZXdUYXJnZXRGZWF0dXJlID0gICAgICAgICAgICAgIDEgPDwgMTA7CiBjb25zdCBDb2RlRmVh
dHVyZXMgTm9FdmFsQ2FjaGVGZWF0dXJlID0gICAgICAgICAgICAxIDw8IDExOwogY29uc3QgQ29k
ZUZlYXR1cmVzIE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlID0gMSA8PCAxMjsKK2NvbnN0
IENvZGVGZWF0dXJlcyBBd2FpdEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgIDEgPDwgMTM7CiAK
LWNvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwgQXJndW1lbnRz
RmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBTdHJpY3RNb2RlRmVhdHVyZSB8
IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBBcnJvd0Z1
bmN0aW9uQ29udGV4dEZlYXR1cmUgfCBTdXBlckNhbGxGZWF0dXJlIHwgU3VwZXJQcm9wZXJ0eUZl
YXR1cmUgfCBOZXdUYXJnZXRGZWF0dXJlIHwgTm9FdmFsQ2FjaGVGZWF0dXJlIHwgTm9uU2ltcGxl
UGFyYW1ldGVyTGlzdEZlYXR1cmU7Citjb25zdCBDb2RlRmVhdHVyZXMgQWxsRmVhdHVyZXMgPSBF
dmFsRmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IFRoaXNGZWF0dXJl
IHwgU3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSB8IEFycm93RnVu
Y3Rpb25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwgU3VwZXJDYWxsRmVh
dHVyZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENh
Y2hlRmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlIHwgQXdhaXRGZWF0dXJl
OwogCiB0eXBlZGVmIHVpbnQ4X3QgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggYTIx
OTE3MjRlMDQ1MWU0NmU0ZjgyODgxMGM3ZGJlM2ZhOWI3ZWI2NS4uZGU2N2E0MGJjNTUwYmU3NzY3
OTg0MmE4ZjNmNjlkZGE5NzlhYjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCkBAIC0yODMsNiArMjgzLDggQEAgc3RydWN0IEpTVG9rZW4gewogICAg
IEpTVG9rZW5Mb2NhdGlvbiBtX2xvY2F0aW9uOwogICAgIEpTVGV4dFBvc2l0aW9uIG1fc3RhcnRQ
b3NpdGlvbjsKICAgICBKU1RleHRQb3NpdGlvbiBtX2VuZFBvc2l0aW9uOworCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVcGRh
dGVPcChKU1Rva2VuVHlwZSB0b2tlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCA4NTNkM2EwY2RmMTZkOGEy
YTc5NzIwNDY4OTA1ZjFiZGUwMmU2NzU5Li5hYmRjM2NlMzIwNzZkNzQ0NWJlMTBjZDYzYmY3ZDZm
YmViN2E5MzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJF
cnJvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNN
b2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgi
CkBAIC01Myw2ICs1NCwxMSBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0pCiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKKyAg
ICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBBU1NFUlQodmFsdWVzLnNpemUo
KSA9PSBudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5h
bEZpZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOworCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwog
ICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwpAQCAtODA1LDcgKzgxMSw3IEBA
IHZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnNldE1vZHVsZUVudmlyb25tZW50KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0s
IHRoaXMsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29y
ZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpCitTeW5jaHJvbm91c25lc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBq
c0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQpAQCAtODE1LDEzICs4MjEs
MTQgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGMKICAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVS
ZWNvcmQtPmxpbmsoZ2xvYmFsT2JqZWN0LCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNtOjpD
cmVhdGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwogfQog
Ci1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3JkID0g
anNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKLSAgICAgICAgcmV0dXJu
IGpzTW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4g
anNNb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc2VudFZhbHVlLCByZXN1bWVN
b2RlKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKGF1dG8qIHdhc21Nb2R1bGVS
ZWNvcmQgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4odm0sIHRoaXMp
KQogICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9k
dWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVs
ZVJlY29yZC5oCmluZGV4IDZlZjU1YzE2NzgyM2JmMGY1NDM1NTYwNzdjYTIzYzJhOWU1NmVmNmUu
LmM2ZjdlNzI1MThjZTYyNzdiN2M3NTQ5MmQ5YTUyYjc4ZTNkMjZhNmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaApAQCAt
MjYsNyArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCi0j
aW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlIDx3dGYv
TGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNywxMCArMzgsMTAgQEAgY2xh
c3MgSlNNYXA7CiAKIC8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAv
LyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291
cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKLWNsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQgOiBwdWJs
aWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PiB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9i
amVjdDsKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PjsKIAog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIApAQCAt
NTAsNiArNTEsMjggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIH0KIAorICAgIHVzaW5nIEFyZ3VtZW50ID0gSlNHZW5lcmF0b3I6OkFyZ3VtZW50
OworICAgIHVzaW5nIFN0YXRlID0gSlNHZW5lcmF0b3I6OlN0YXRlOworICAgIHVzaW5nIFJlc3Vt
ZU1vZGUgPSBKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTsKKworICAgIGVudW0gY2xhc3MgRmllbGQg
OiB1aW50MzJfdCB7CisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlz
LAorICAgICAgICBGcmFtZSwKKyAgICB9OworCisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZklu
dGVybmFsRmllbGRzID09IDQpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJl
ck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHsgeworICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6Oklu
aXQpKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5l
ZCgpLAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgfSB9OworICAgIH0KKwog
ICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNvdXJjZS10ZXh0LW1v
ZHVsZS1yZWNvcmRzCiAgICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKICAgICAgICAgZW51bSBjbGFz
cyBUeXBlIHsKQEAgLTEyOSw4ICsxNTIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9t
b2R1bGVFbnZpcm9ubWVudC5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGxpbmsoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
VmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGlu
ayhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2VudFZh
bHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50
ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0
aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBp
bnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZp
ZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBB
YnN0cmFjdE1vZHVsZVJlY29yZChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaApp
bmRleCA2YTkwZTk3YTM5M2FiMjJmMDgxNWQwOGZmMjdkMTFhMTNkYzg3NzJiLi4xMGY2ZTg5NDM4
MTc4NGY2NGExMTIxM2UzNWZkZTgxMjI5YzU2NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCkBAIC01NCw4ICs1NCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgU3VzcGVuZGVkWWllbGQgPSAtNCwKICAgICAgICAgQXdhaXRpbmdSZXR1cm4g
PSAtNSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5
bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOwotICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGlu
ZykpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0
b3JTdGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
U3RhdGU6OkNvbXBsZXRlZCkpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykpOwogCiAgICAgZW51bSBjbGFzcyBBc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb24gOiBpbnQzMl90IHsKICAgICAgICAgTm9uZSA9IDAsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAppbmRleCBmYzRjMmU1
MWJjMTRiNzg3MTNjNjhlNWNiZTVlMjQ5ZmNmYzcwNzdiLi5mYmY2YTE1MmI5Yjc4MjcwMmEzN2Zh
Mjc0ZjVmNzU2YzE1ZmZiYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yLmgKQEAgLTQ2LDI2ICs0NiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2
bS5nZW5lcmF0b3JTcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgR2VuZXJh
dG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgUmVzdW1lTW9kZSA6IGlu
dDMyX3QgewogICAgICAgICBOb3JtYWxNb2RlID0gMCwKICAgICAgICAgUmV0dXJuTW9kZSA9IDEs
CiAgICAgICAgIFRocm93TW9kZSA9IDIKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0
b3JTdGF0ZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgU3RhdGUgOiBpbnQzMl90IHsKICAg
ICAgICAgQ29tcGxldGVkID0gLTEsCiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgICAgICBJ
bml0ID0gMCwKICAgICB9OwogCiAgICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9y
U3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JG
cmFtZS4KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAg
ZW51bSBjbGFzcyBBcmd1bWVudCA6IGludDMyX3QgewogICAgICAgICBUaGlzVmFsdWUgPSAwLAog
ICAgICAgICBHZW5lcmF0b3IgPSAxLAogICAgICAgICBTdGF0ZSA9IDIsCiAgICAgICAgIFZhbHVl
ID0gMywKICAgICAgICAgUmVzdW1lTW9kZSA9IDQsCiAgICAgICAgIEZyYW1lID0gNSwKKyAgICAg
ICAgTnVtYmVyT2ZBcmd1bWVudHMgPSBGcmFtZSwKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBG
aWVsZCA6IHVpbnQzMl90IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIHsgewogICAgICAgICAgICAganNOdWxsKCksCi0gICAgICAgICAgICBqc051bWJl
cihzdGF0aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLAorICAgICAgICAg
ICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6OkluaXQpKSwKICAgICAgICAg
ICAgIGpzVW5kZWZpbmVkKCksCiAgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAogICAgICAgICAg
ICAganNVbmRlZmluZWQoKSwKQEAgLTEwMSw0ICsxMDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKK09WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JT
X0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKEpTR2VuZXJhdG9yOjpBcmd1bWVudCk7CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDc3YmIyYjBiNTlkN2Q2ZmJmNjA1Njk3NzBjNWM2YzI5
Mjg0YjQyYzkuLmQ2MTZkNTRlMDI4ZjBkZDUwZDg2ZWEwMmU2NDY2MWRmN2ZlYWZlNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAg
LTMwNywyMCArMzA3LDIwIEBAIEpTT2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlTG9hZGVy
OjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNWYWx1ZSBK
U01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
ciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJMb2FkZXIgW2V2YWx1YXRl
XSAiLCBwcmludGFibGVNb2R1bGVLZXkoZ2xvYmFsT2JqZWN0LCBrZXkpKTsKIAogICAgIGlmIChn
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1
YXRlKQogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSgpLT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIHRoaXMsIGtleSwgbW9kdWxl
UmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIpOwogCi0gICAgcmV0dXJuIGV2YWx1YXRlTm9uVmly
dHVhbChnbG9iYWxPYmplY3QsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIp
OworICAgIHJldHVybiBldmFsdWF0ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBrZXksIG1vZHVs
ZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwogfQog
Ci1KU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNW
YWx1ZSkKK0pTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVl
LCBKU1ZhbHVlLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAg
IGlmIChhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0TW9kdWxlUmVj
b3JkKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBtb2R1bGVSZWNvcmRWYWx1ZSkpCi0gICAgICAgIHJl
dHVybiBtb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVy
biBtb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc2VudFZhbHVlLCByZXN1bWVN
b2RlKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtMzY1LDYgKzM2NSw4IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKGdsb2JhbE9iamVj
dCwgcHJvbWlzZSwgbW9kdWxlS2V5LCBqc1NvdXJjZUNvZGUpKSk7CiAjZW5kaWYKIAorICAgIGRh
dGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwgImxvYWRlciBbcGFy
c2luZ10gIiwgbW9kdWxlS2V5KTsKKwogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUgPSBwYXJzZTxN
b2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2VDb2RlLCBJZGVudGlmaWVyKCks
IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCkBAIC00MDksMTAgKzQxMSwxMCBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFyYXRpb25JbnN0
YW50aWF0aW9uLCAoSlNHbG9iYWxPYgogCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1v
ZHVsZUxvYWRpbmdTdGF0ZSgpLCAiTG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNvcmQtPm1vZHVs
ZUtleSgpKTsKIAotICAgIG1vZHVsZVJlY29yZC0+bGluayhnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpOworICAgIGF1dG8gc3luYyA9IG1vZHVsZVJlY29yZC0+bGluayhnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihz
eW5jID09IFN5bmNocm9ub3VzbmVzczo6QXN5bmMpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtNDgxLDcgKzQ4Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtb2R1bGVMb2Fk
ZXJFdmFsdWF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiAgICAgSlNNb2R1
bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShsb2FkZXItPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMiksIGNhbGxGcmFtZS0+YXJndW1lbnQoMyksIGNhbGxGcmFtZS0+YXJndW1lbnQoNCkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAppbmRleCAxZTA2Yjc3MGExZjhhY2JhMzQxMGRjMjFhZWUw
ZmZlMDFhZWU5YzIwLi5iM2Q4NWE5NWNmZmZjNjkxMDk0ZWQ5NjIzYWRkMWViOGViOGVmYzJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKQEAg
LTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBjcmVhdGVJbXBvcnRNZXRhUHJv
cGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUga2V5LCBKU01vZHVsZVJlY29yZCosIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAKICAgICAvLyBBZGRpdGlvbmFsIHBsYXRmb3JtIGRlcGVu
ZGVudCBob29rZWQgQVBJcy4KLSAgICBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
OwotICAgIEpTVmFsdWUgZXZhbHVhdGVOb25WaXJ0dWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOworICAg
IEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBt
b2R1bGVSZWNvcmQsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpT
VmFsdWUgcmVzdW1lTW9kZSk7CisgICAgSlNWYWx1ZSBldmFsdWF0ZU5vblZpcnR1YWwoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpTVmFsdWUgc2Ny
aXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CiAKICAg
ICAvLyBVdGlsaXR5IGZ1bmN0aW9ucy4KICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBtb2R1bGVSZWNv
cmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwCmluZGV4IDA4YTk4OTA5NmVjZDAyYzBjMzkwNGJkYWM5NWI5ZjIyMTEwM2VlMjIuLjkzYmJj
OGNhZWVmOGVlMmNiN2UyMTVlOTJiYzM4ZGVlMDk4MmQ1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpOwogfQogCi12b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK1N5bmNocm9ub3Vz
bmVzcyBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTg3LDExICs4
NywxMyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2Nv
cGUuZXhjZXB0aW9uKCkgPT0gIWV4ZWN1dGFibGUpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewog
ICAgICAgICB0aHJvd1N5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiAgICAgfQogICAg
IGluc3RhbnRpYXRlRGVjbGFyYXRpb25zKGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZSwgc2NyaXB0
RmV0Y2hlcik7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBTeW5jaHJvbm91c25lc3M6OlN5bmMpOwogICAgIG1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKKworICAg
IHJldHVybiBleGVjdXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKS0+aXNB
c3luYygpID8gU3luY2hyb25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3VzbmVzczo6U3luYzsK
IH0KIAogdm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMzUsMTQgKzIzNywx
NiBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2R1bAogICAgIHNldE1vZHVsZUVudmlyb25tZW50KGds
b2JhbE9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlUmVj
b3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNWYWx1ZSBKU01v
ZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBpZiAoIW1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7Ci0gICAgbV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOwotICAgIHJldHVybiB2bS5pbnRlcnByZXRlci0+ZXhl
Y3V0ZU1vZHVsZVByb2dyYW0oZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVFbnZpcm9u
bWVudCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdE9yQXdhaXRlZFZhbHVlID0gdm0uaW50ZXJwcmV0
ZXItPmV4ZWN1dGVNb2R1bGVQcm9ncmFtKHRoaXMsIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwg
bW9kdWxlRW52aXJvbm1lbnQoKSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICBpZiAoSlNW
YWx1ZSBzdGF0ZSA9IGludGVybmFsRmllbGQoRmllbGQ6OlN0YXRlKS5nZXQoKTsgIXN0YXRlLmlz
TnVtYmVyKCkgfHwgc3RhdGUuYXNOdW1iZXIoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU3Rh
dGU6OkV4ZWN1dGluZykpCisgICAgICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIo
KTsKKyAgICByZXR1cm4gcmVzdWx0T3JBd2FpdGVkVmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgK
aW5kZXggOTAwMTJjMDQzNDUyOGQyMTkyMmM4MDZkM2M3NDIwOTYyNjljZTg5Yi4uZWQ1MDQ2YTA1
ZGI2YzBmNDE2Y2UyNzEwZTExMTY5ZDA5YTljOWU0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKEpTR2xvYmFs
T2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNl
Q29kZSYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50Jik7CiAKLSAgICB2b2lkIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGluayhKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0
ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUp
OwogCiAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQ29kZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFy
aWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxlczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxl
LmgKaW5kZXggYjg1OTE0ZmY4ZWEwZGQwM2M2MjQ3NzUzNTk2ZmY0MmQ1NjE2NmIzNS4uMDY1NzM4
YzFjNDVkOWEyNWIxYmYwZmM1OTA2MWVmMTA3MTY4ZDAzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8o
KSBjb25zdCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0
ZUJyYW5kUmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpT
UGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNl
UGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFs
c2UsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KKyAgICBib29sIGlzQXN5bmMo
KSBjb25zdCB7IHJldHVybiBmZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9CiAKICAgICBTeW1i
b2xUYWJsZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCA3ZmRlMTcyYmI1NzkxYzVkNWZlZWU3MDhiYjlk
ZDBjYTU5N2JlOGRiLi5mYTNmNWQ3MmY2ZWFmNmIwNjJkMmM4MDAyOTU1MDU1MDBjZmUwNTk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4MSwx
NiArNDgxLDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAg
dihPcHRpb25SYW5nZSwgd2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZSwgMCwgTm9ybWFs
LCAid2FzbSBmdW5jdGlvbiBpbmRleCByYW5nZSB0byBhbGxvdyBjb21waWxhdGlvbiBvbiwgZS5n
LiAxOjEwMCIpIFwKICAgICB2KEJvb2wsIHdhc21MTEludFRpZXJzVXBUb0JCUSwgdHJ1ZSwgTm9y
bWFsLCBudWxscHRyKSBcCiAgICAgdihTaXplLCB3ZWJBc3NlbWJseUJCUUFpck1vZGVUaHJlc2hv
bGQsIGlzSU9TKCkgPyAoMTAgKiBNQikgOiAwLCBOb3JtYWwsICJJZiAwLCB3ZSBhbHdheXMgdXNl
IEJCUSBBaXIuIElmIFdhc20gbW9kdWxlIGNvZGUgc2l6ZSBoaXRzIHRoaXMgdGhyZXNob2xkLCB3
ZSBjb21waWxlIFdhc20gbW9kdWxlIHdpdGggQjMgQkJRIG1vZGUuIikgXAotICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlTdHJlYW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJB
c3NlbWJseSdzIFN0cmVhbWluZyBBUEkiKSBcCiAgICAgdihCb29sLCB1c2VFYWdlcldlYkFzc2Vt
Ymx5TW9kdWxlSGFzaGluZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9k
dWxlcyBhcmUgaWRlbnRpZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYg
YXZhaWxhYmxlLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1
ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikg
XAotICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAi
QWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCi0gICAgdihC
b29sLCB1c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1
Y3Rpb25zIGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAotICAgIHYoQm9vbCwgdXNl
V2Vha1JlZnMsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4i
KSBcCi0gICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QsIHRydWUsIE5v
cm1hbCwgIkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBkYXlQZXJpb2QgZmVhdHVyZS4i
KSBcCi0gICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXRSYW5nZVRvUGFydHMsIHRydWUs
IE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRSYW5nZVRvUGFy
dHMgZmVhdHVyZS4iKSBcCi0gICAgdihCb29sLCB1c2VBdE1ldGhvZCwgZmFsc2UsIE5vcm1hbCwg
IkV4cG9zZSB0aGUgYXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmlu
Zy4iKSBcCi0gICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRp
b24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5
cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8s
IGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUg
YW4gb2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBm
b3JjZU1pbmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1p
bmkgVk0gbW9kZSBvbi4iKSBcCkBAIC01MTEsOCArNTAyLDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VSYW5kb21pemluZ0V4ZWN1dGFi
bGVJc2xhbmRBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRm9yIHRoZSBhcm02NCBFeGVjdXRh
YmxlQWxsb2NhdG9yLCBpZiB0cnVlLCBzZWxlY3Qgd2hpY2ggcmVnaW9uIHRvIHVzZSByYW5kb21s
eS4gVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgdGhhdCBqdW1wIGlzbGFuZHMgd29yay4iKSBc
CiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCwgZmFsc2UsIE5vcm1h
bCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSBi
b3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhlIHN1cGVyIHNhbXBsZXIiKSBcCiAgICAg
dihCb29sLCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3
ZSB3aWxsIG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hlbiBhbiBleHBlcmltZW50YWwgZmVhdHVy
ZSBpcyBlbmFibGVkLiIpIFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1
ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBk
YXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCi0gICAgdihCb29sLCB1c2VQcml2YXRlTWV0
aG9kcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5k
IHByaXZhdGUgbWV0aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCByZXR1cm5F
YXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYoU2l6ZSwgZWFybHlSZXR1cm5Gcm9tSW5maW5pdGVMb29wc0xpbWl0LCAxMzAwMDAw
MDAwLCBOb3JtYWwsICJXaGVuIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6aW5n
IGlzIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29w
IGNhbiBydW4gZm9yIGJlZm9yZSBqdXN0IHJldHVybmluZy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0
aGUgZnV6emVyIHNvIGl0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGluZmluaXRlIGxvb3BzLiIpIFwK
ICAgICB2KEJvb2wsIHVzZUxJQ01GdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCkBA
IC01MjAsOCArNTA5LDI0IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgp
OwogICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0aW5nTElDTVByb2JhYmlsaXR5LCAwLjUsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZXhwb3NlQ3VzdG9tU2V0dGVyc09uR2xvYmFsT2Jq
ZWN0Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNl
SklUQ2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICBcCisgICAg
LyogRmVhdHVyZSBGbGFncyAqL1wKKyAgICBcCiAgICAgdihCb29sLCB1c2VQdWJsaWNTdGF0aWND
bGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVy
c3RhbmQgcHVibGljIHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAg
dihCb29sLCB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRy
dWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgc3RhdGljIGRhdGEgZmllbGRz
IGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywg
dHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0
ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRl
TWV0aG9kcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0
YW5kIHByaXZhdGUgbWV0aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseVN0cmVhbWluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdG8gcnVuIFdlYkFzc2Vt
Ymx5J3MgU3RyZWFtaW5nIEFQSSIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJl
bmNlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2Vz
IHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwg
Tm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBc
CisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAorICAgIHYo
Qm9vbCwgdXNlV2Vha1JlZnMsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25z
dHJ1Y3Rvci4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2Qs
IHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBkYXlQZXJpb2Qg
ZmVhdHVyZS4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXRSYW5nZVRvUGFy
dHMsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRS
YW5nZVRvUGFydHMgZmVhdHVyZS4iKSBcCisgICAgdihCb29sLCB1c2VBdE1ldGhvZCwgZmFsc2Us
IE5vcm1hbCwgIkV4cG9zZSB0aGUgYXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwg
YW5kIFN0cmluZy4iKSBcCisgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYoQm9vbCwgdXNlVG9wTGV2ZWxBd2FpdCwgZmFsc2Us
IE5vcm1hbCwgImFsbG93IHRoZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBt
b2R1bGUuIikgXAorCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXgg
ZmI0NjAwMWJhZWQyZjljMWM4N2U1NzIyZTI2MTViNDE0NWQxODcwMi4uYmYwZTdjOWVjYmZjNWIy
MDc3NjM4MzExODZlMTFlODgyNDg1OTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAKKyNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CisKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
U3ltYm9sVGFibGU6OnNfaW5mbyA9IHsgIlN5bWJvbFRhYmxlIiwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShTeW1ib2xUYWJsZSkgfTsKQEAgLTI4MCw1ICsy
ODIsMTcgQEAgUmVmUHRyPFR5cGVTZXQ+IFN5bWJvbFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yVmFy
aWFibGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJgogICAgIHJldHVybiBpdGVyLT52YWx1ZTsK
IH0KIAordm9pZCBTeW1ib2xUYWJsZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorewor
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBCYXNlOjpkdW1wKG91
dCk7CisKKyAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAgb3V0LnByaW50KCIgPCIpOworICAg
IGZvciAoYXV0byYgaXRlciA6IG1fbWFwKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICppdGVy
LmtleSwgIjogIiwgaXRlci52YWx1ZS52YXJPZmZzZXQoKSk7CisgICAgb3V0LnByaW50bG4oIj4i
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IGE1MzgxY2NiZWUxY2I3YzNiY2NkNjVlYTdlMDgxNmVi
NDNhNTk1NjUuLmQzMzk0MzJjYjhiMGIxNDA3NDRmZmI3MDQ3ZDYyODdkZTcyMmM2N2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtNzM4LDYgKzcz
OCw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogCiBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbFRhYmxlKFZNJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKaW5kZXggMzEzMDFmNTE2OGI1YWY5YzZhYWJmZDc4OGUwNzcwOWNh
N2YwMjI1Yi4uYzExMTllNTY3NGZhOTQ2ZTQzYzY5ZWIzMTk1MmViMWUwMThjYWY3OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcApAQCAtOTQsNyArOTQsMTMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZDo6cHJlcGFyZUxpbmsoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmMK
ICAgICBtX2luc3RhbmNlLnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogfQogCi12b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlv
bk1vZGUpCitTeW5jaHJvbm91c25lc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iamVj
dCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKK3sKKyAgICBsaW5rSW1wbChnbG9i
YWxPYmplY3QsIGltcG9ydE9iamVjdCwgY3JlYXRpb25Nb2RlKTsKKyAgICByZXR1cm4gU3luY2hy
b25vdXNuZXNzOjpTeW5jOworfQorCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5r
SW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaW1wb3J0T2JqZWN0
LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuaAppbmRleCBhNjdmMjBiY2VjNzFmNzcxN2Q0MWUxYzhjYjVhYWM2ZmVmMDJh
YTkwLi41OGY5YzRmMjk1NmE0YWYxNzc5MGZmOTBjN2Y3NTFhZTQxYzkwYTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmgKQEAgLTU5LDEyICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiAgICAg
dm9pZCBwcmVwYXJlTGluayhWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwotICAgIHZvaWQg
bGluayhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGlt
cG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25Nb2RlKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGlu
ayhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGltcG9y
dE9iamVjdCwgV2FzbTo6Q3JlYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1Zh
bHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBKU09iamVjdCogZXhwb3J0c09i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwb3J0c09iamVjdC5nZXQoKTsgfQogCiBwcml2YXRl
OgorICAgIHZvaWQgbGlua0ltcGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogaW1wb3J0T2Jq
ZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUpOwogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKFZN
JiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbE9iamVjdCosIFZNJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24m
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421154</attachid>
            <date>2021-02-21 15:34:43 -0800</date>
            <delta_ts>2021-02-21 15:44:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202484-20210221153442.patch</filename>
            <type>text/plain</type>
            <size>83328</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjAzNTY3YzBhZDdhMjk1OGI3ZDkzNDllZDgyN2NmNzU0NDg2ODQyLi4wZmVjN2YyOGIyNmQ3YTUy
NjZmYWNiOWRjMmE4NjdhN2FlYjNlODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAyMS0wMi0yMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIFRvcC1sZXZlbCBhd2FpdCBwcm9wb3NhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBUTEEgcHJvcG9zYWwKKworICAgICAgICAqIEFQSS9KU0FQ
SUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAg
ICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAg
ICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXIuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRl
Lm5ld1JlZ2lzdHJ5RW50cnkpOgorICAgICAgICAobGluayk6CisgICAgICAgIChhc3luYyByZXF1
ZXN0SW1wb3J0TW9kdWxlKToKKyAgICAgICAgKG1vZHVsZUV2YWx1YXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAocmVxdWVzdEltcG9ydE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRv
cmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFdpbGxMZWF2ZUNhbGxGcmFtZURlYnVn
SG9vayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1l
cmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6YWJzdHJh
Y3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEFic3RyYWN0TW9kdWxlUmVjb3JkSW50
ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBd2FpdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OnVzZXNBd2FpdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNU
b2tlbjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZvclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUF3
YWl0RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpsaW5rKToK
KyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToKKyAgICAgICAg
KiBydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6OkFic3RyYWN0
TW9kdWxlUmVjb3JkOjppbml0aWFsVmFsdWVzKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OmludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6aW50ZXJuYWxGaWVsZCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU0FzeW5jR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlTm9uVmlydHVhbCk6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxv
YWRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVjb3Jk
OjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OlN5bWJvbFRhYmxlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N5
bWJvbFRhYmxlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKToKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKToKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmg6CisKIDIwMjEtMDItMTYgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBEeW5hbWljYWxseSBn
ZW5lcmF0ZSBlbnRpdGxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElH
bG9iYWxPYmplY3QuaAppbmRleCA4MTY3YzVjYzBiYzRhZmQ5N2M5ODU2NDk1M2RkZWQ0MzBjNzMz
ZTU4Li40NzIxNzkyYWRhNDExYTlhYmI2NTkyODMxOGVlZjFlODNjNzMyYjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpT
R2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlIGtleVZhbHVlLCBKU1ZhbHVl
IHJlZmVycmVyVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSog
bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFs
dWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09iamVjdCogbW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRl
ciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7Ci0gICAgc3RhdGljIEpTVmFs
dWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlcios
IEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHN0YXRpYyBKU1ZhbHVlIG1vZHVsZUxv
YWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBK
U1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIAogICAgIEpTVmFsdWUgbG9hZEFu
ZEV2YWx1YXRlSlNTY3JpcHRNb2R1bGUoY29uc3QgSlNMb2NrSG9sZGVyJiwgSlNTY3JpcHQgKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmpl
Y3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmlu
ZGV4IGRlZTczMjUzZjg1ZDViMTI4ZDJjMmIzYWE1MjRhYzQyYmQ5YWE4ZGUuLmQ3YTVlMmZkZTY4
ZjdhM2NkNzFkNTllOTk0M2U3NDU1M2ZlODA0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtMjM5LDcgKzIzOSw3IEBAIEpTT2JqZWN0
KiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRp
ZXMoSlNHbG9iYWxPYmplCiAgICAgcmV0dXJuIG1ldGFQcm9wZXJ0aWVzOwogfQogCi1KU1ZhbHVl
IEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU1ZhbHVlIGtleSwg
SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNWYWx1
ZSBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxvYWRlciwgSlNWYWx1ZSBrZXks
IEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1
ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpA
QCAtMjU4LDcgKzI1OCw4IEBAIEpTVmFsdWUgSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRl
ckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgICAgIFttb2R1
bGVMb2FkZXJEZWxlZ2F0ZSB3aWxsRXZhbHVhdGVNb2R1bGU6dXJsXTsKIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1vZHVsZUxvYWRlci0+ZXZhbHVhdGVOb25W
aXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hl
cik7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRhdGUgdGhlIGRlbGVnYXRlIGNhbGxiYWNr
cyBmb3IgYXN5bmMgbW9kdWxlcy4KKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1vZHVsZUxvYWRlci0+
ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwg
c2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKIAogICAgIGlmIChbbW9kdWxl
TG9hZGVyRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkaWRFdmFsdWF0ZU1v
ZHVsZTopXSkKICAgICAgICAgW21vZHVsZUxvYWRlckRlbGVnYXRlIGRpZEV2YWx1YXRlTW9kdWxl
OnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxl
TG9hZGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5q
cwppbmRleCBhOGM4NjE1ZTlkMjFlYWQ0YmM5MzcwNjg3NTc4MzdjYmYwYTU4NGQwLi5iNTJkNzMw
NWM3NTBmNzIwZTY4MmM1NjNmMTY2MDY2Nzk2MTJmNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKQEAgLTEwMCw2ICsxMDAsOCBAQCBmdW5j
dGlvbiBuZXdSZWdpc3RyeUVudHJ5KGtleSkKICAgICAgICAgbGlua1N1Y2NlZWRlZDogdHJ1ZSwK
ICAgICAgICAgZXZhbHVhdGVkOiBmYWxzZSwKICAgICAgICAgdGhlbjogQHVuZGVmaW5lZCwKKyAg
ICAgICAgaXNBc3luYzogZmFsc2UsCisgICAgICAgIGNvbXBsZXRpb25Qcm9taXNlOiBAdW5kZWZp
bmVkLAogICAgIH07CiB9CiAKQEAgLTI4NiwxMSArMjg4LDE1IEBAIGZ1bmN0aW9uIGxpbmsoZW50
cnksIGZldGNoZXIpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgImRlcGVu
ZGVuY2llcyIgZmllbGQsCiAgICAgICAgIC8vIHdlIGNhbiBjYWxsIG1vZHVsZURlY2xhcmF0aW9u
SW5zdGFudGlhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IG9yZGVyCiAgICAgICAgIC8vIHdpdGhvdXQg
Y29uc3RydWN0aW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGJ5IGNhbGxpbmcgZGVwZW5kZW5jeUdy
YXBoLgorICAgICAgICB2YXIgaGFzQXN5bmNEZXBlbmRlbmN5ID0gZmFsc2U7CiAgICAgICAgIHZh
ciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgICB0aGlzLmxpbmsoZGVwZW5kZW5jaWVzW2ldLCBmZXRjaGVyKTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRlbmNpZXNbaV07CisgICAg
ICAgICAgICB0aGlzLmxpbmsoZGVwZW5kZW5jeSwgZmV0Y2hlcik7CisgICAgICAgICAgICBoYXNB
c3luY0RlcGVuZGVuY3kgfHw9IGRlcGVuZGVuY3kuaXNBc3luYzsKKyAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVsZSwgZmV0
Y2hlcik7CisgICAgICAgIGVudHJ5LmlzQXN5bmMgPSB0aGlzLm1vZHVsZURlY2xhcmF0aW9uSW5z
dGFudGlhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpIHx8IGhhc0FzeW5jRGVwZW5kZW5jeTsK
ICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICBlbnRyeS5saW5rU3VjY2VlZGVkID0gZmFs
c2U7CiAgICAgICAgIGVudHJ5LmxpbmtFcnJvciA9IGVycm9yOwpAQCAtMzAzLDcgKzMwOSw2IEBA
IGZ1bmN0aW9uIGxpbmsoZW50cnksIGZldGNoZXIpCiBmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9u
KGVudHJ5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCi0KICAgICAidXNlIHN0cmlj
dCI7CiAKICAgICBpZiAoZW50cnkuZXZhbHVhdGVkKQpAQCAtMzEyLDEwICszMTcsMzggQEAgZnVu
Y3Rpb24gbW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZmV0Y2hlcikKIAogICAgIC8vIFRoZSBjb250
ZW50cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1bGVzXV0gaXMgY2xvbmVkIGludG8gZW50cnkuZGVw
ZW5kZW5jaWVzLgogICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7Ci0g
ICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5n
dGg7ICsraSkKLSAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKGRlcGVuZGVuY2llc1tpXSwg
ZmV0Y2hlcik7CiAKLSAgICB0aGlzLmV2YWx1YXRlKGVudHJ5LmtleSwgZW50cnkubW9kdWxlLCBm
ZXRjaGVyKTsKKyAgICBpZiAoIWVudHJ5LmlzQXN5bmMpIHsKKyAgICAgICAgLy8gVGhlIGNvbnRl
bnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1vZHVsZXNdXSBpcyBjbG9uZWQgaW50byBlbnRyeS5kZXBl
bmRlbmNpZXMuCisgICAgICAgIC8vIFNpbmNlIGxpbmtpbmcgc2V0cyBpc0FzeW5jIGZvciBhbnkg
c3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudCB3aXRoIGFuIGFzeW5jIG1vZHVsZSB3ZSBzaG91
bGQgb25seSBnZXQgaGVyZSBpZiBhbGwgb3VyIGRlcGVuZGVuY2llcyBhcmUgYWxzbyBzeW5jLgor
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZGVwZW5kZW5jeSA9IGRlcGVuZGVuY2ll
c1tpXTsKKyAgICAgICAgICAgIEBhc3NlcnQoIWRlcGVuZGVuY3kuaXNBc3luYyk7CisgICAgICAg
ICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZGVwZW5kZW5jeSwgZmV0Y2hlcik7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLmV2YWx1YXRlKGVudHJ5LmtleSwgZW50cnkubW9kdWxlLCBmZXRj
aGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uIGFzeW5j
TW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZGVwZW5kZW5jaWVzKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytp
KQorICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubW9kdWxlRXZhbHVhdGlvbihkZXBlbmRlbmNp
ZXNbaV0sIGZldGNoZXIpOworCisgICAgICAgICAgICB2YXIgcmVzdW1lTW9kZSA9IDA7CisgICAg
ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIHZhciBhd2FpdGVkVmFsdWUg
PSB0aGlzLmV2YWx1YXRlKGVudHJ5LmtleSwgZW50cnkubW9kdWxlLCBmZXRjaGVyLCBhd2FpdGVk
VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgICAgIGlmIChAZ2V0QWJzdHJhY3RNb2R1
bGVSZWNvcmRJbnRlcm5hbEZpZWxkKGVudHJ5Lm1vZHVsZSwgQGFic3RyYWN0TW9kdWxlUmVjb3Jk
RmllbGRTdGF0ZSkgPT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAg
ICBhd2FpdGVkVmFsdWUgPSBhd2FpdCBhd2FpdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VtZU1vZGUgPSAwOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXdhaXRlZFZhbHVlID0gZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdW1l
TW9kZSA9IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KS5A
Y2FsbCh0aGlzLCBlbnRyeSwgZGVwZW5kZW5jaWVzKTsKKyAgICB9CiB9CiAKIC8vIEFQSXMgdG8g
Y29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KQEAgLTM2NCwyNSArMzk3LDEzIEBAIGFzeW5jIGZ1
bmN0aW9uIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1lLCBwYXJhbWV0ZXJzLCBmZXRj
aGVyKQogICAgIHJldHVybiBhd2FpdCB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShrZXksIGZl
dGNoZXIpOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFyYW1ldGVy
cywgZmV0Y2hlcikKK2FzeW5jIGZ1bmN0aW9uIHJlcXVlc3RJbXBvcnRNb2R1bGUoa2V5LCBwYXJh
bWV0ZXJzLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBjb25zdHJ1
Y3RvciA9IEBJbnRlcm5hbFByb21pc2U7Ci0gICAgdmFyIHByb21pc2UgPSBAY3JlYXRlUHJvbWlz
ZShjb25zdHJ1Y3RvciwgLyogaXNJbnRlcm5hbFByb21pc2UgKi8gdHJ1ZSk7Ci0gICAgQHJlc29s
dmVXaXRob3V0UHJvbWlzZSh0aGlzLnJlcXVlc3RTYXRpc2Z5KHRoaXMuZW5zdXJlUmVnaXN0ZXJl
ZChrZXkpLCBwYXJhbWV0ZXJzLCBmZXRjaGVyLCBuZXcgQFNldCksCi0gICAgICAgIChlbnRyeSkg
PT4gewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB0aGlzLmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShlbnRyeS5rZXksIGZldGNoZXIpOwotICAgICAgICAgICAgICAgIEBmdWxmaWxs
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIHRoaXMu
Z2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSkpOwotICAgICAgICAgICAgfSBj
YXRjaCAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJl
c29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9yKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSwKLSAgICAgICAgKHJlYXNvbikgPT4gewotICAgICAgICAgICAgQHJlamVjdFBy
b21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCByZWFzb24p
OwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcHJvbWlzZTsKKyAgICB2YXIgZW50cnkgPSBhd2Fp
dCB0aGlzLnJlcXVlc3RTYXRpc2Z5KHRoaXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpLCBwYXJhbWV0
ZXJzLCBmZXRjaGVyLCBuZXcgQFNldCk7CisgICAgYXdhaXQgdGhpcy5saW5rQW5kRXZhbHVhdGVN
b2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKKyAgICByZXR1cm4gdGhpcy5nZXRNb2R1bGVOYW1l
c3BhY2VPYmplY3QoZW50cnkubW9kdWxlKTsKIH0KIAogZnVuY3Rpb24gZGVwZW5kZW5jeUtleXNJ
ZkV2YWx1YXRlZChrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAppbmRleCBhOGU1NmQwY2Qz
OTRiYzFiN2FjMDUyNmJlODY2N2VhYzhiZGQ3ZTZhLi42Y2I4OGNlN2FmNTM1NzlhOTZiY2E2NDc4
NGIyNzMxY2E1ODI4ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIHsKICAg
ICAgICAgYXV0byBuZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpLm5leHQoKTsKICAgICAg
ICAgdW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRj
aEp1bXBUYWJsZXMoKTsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6U3RhdGUpKTsKICAgICAgICAg
YXV0byYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwogICAg
ICAgICBqdW1wVGFibGUubWluID0gMDsKICAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMg
PSBSZWZDb3VudGVkQXJyYXk8aW50MzJfdD4obV95aWVsZHMuc2l6ZSgpICsgMSk7CkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICB9
CiAKICAgICBmb3IgKGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7Ci0gICAgICAg
IFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1l
bnQ6OkZyYW1lKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6QXJndW1lbnQ6OkZyYW1lKSk7CiAKICAgICAgICAgYXV0byBpbnN0cnVjdGlvbiA9IG1f
aW5zdHJ1Y3Rpb25zLmF0KGRhdGEucG9pbnQpOwogICAgICAgICAvLyBFbWl0IHNhdmUgc2VxdWVu
Y2UuCkBAIC0yOTMsMTEgKzI5MywxOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpydW4oKQogCiB2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0
b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvciogY29kZUJs
b2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSog
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJ
bmRleCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdl
bmVyYXRvcmlmaWNhdGlvbigpKSkKKyAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVj
b2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkgeworICAgICAgICBkYXRhTG9nTG4oIkJ5
dGVjb2RlcyBiZWZvcmUgZ2VuZXJhdG9yaWZpY2F0aW9uIik7CiAgICAgICAgIENvZGVCbG9ja0J5
dGVjb2RlRHVtcGVyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPjo6ZHVtcEJsb2NrKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zLCBXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KIAogICAgIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoYnl0ZWNvZGVHZW5lcmF0b3IsIGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXgpOwogICAgIHBhc3MucnVuKCk7CisKKyAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkgeworICAgICAg
ICBkYXRhTG9nTG4oIkJ5dGVjb2RlcyBhZnRlciBnZW5lcmF0b3JpZmljYXRpb24iKTsKKyAgICAg
ICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+Ojpk
dW1wQmxvY2soY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIFdURjo6ZGF0YUZpbGUoKSk7CisgICAg
fQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCA1
Y2EzNjQ5YTdjMWZjNDc3NTc5OTZmM2MzMjIwMjhjZjQ1ZTA1YzMyLi4yYTc1ODhkNmQ1Y2M3YTM1
OGU4Y2MxYzg5MzMxY2I5MjFmNzliNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKICNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCkBAIC04NiwxMSArODcsMTEgQEAgQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAg
ICAgbV9nZW5lcmF0b3JGaWVsZE5leHQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSk7CiAgICAgbV9nZW5lcmF0b3JGaWVs
ZFRoaXMuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRv
cjo6RmllbGQ6OlRoaXMpKSk7CiAgICAgbV9nZW5lcmF0b3JGaWVsZEZyYW1lLnNldChtX3ZtLCBq
c051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpGcmFtZSkp
KTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3Jt
YWxNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9k
ZTo6VGhyb3dNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJl
c3VtZU1vZGU6OlJldHVybk1vZGUpKSk7Ci0gICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5z
ZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7Ci0gICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZy5z
ZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFs
LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVz
dW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5z
ZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3Vt
ZU1vZGU6OlRocm93TW9kZSkpKTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVN
b2RlOjpSZXR1cm5Nb2RlKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1f
dm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpTdGF0ZTo6Q29t
cGxldGVkKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpTdGF0ZTo6RXhlY3V0aW5nKSkp
OwogICAgIG1fYXJyYXlJdGVyYXRvckZpZWxkSXRlcmF0ZWRPYmplY3Quc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6Okl0ZXJhdGVk
T2JqZWN0KSkpOwogICAgIG1fYXJyYXlJdGVyYXRvckZpZWxkSW5kZXguc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OkluZGV4KSkp
OwogICAgIG1fYXJyYXlJdGVyYXRvckZpZWxkS2luZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6S2luZCkpKTsKQEAgLTExMiw2
ICsxMTMsNyBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5KFZNJiB2bSkKICAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0LnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OkF3YWl0KSkpOwogICAgIG1fQXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpOb25lKSkp
OwogICAgIG1fdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kLnNldChtX3ZtLCBqc0Jvb2xl
YW4oT3B0aW9uczo6dXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kKCkpKTsKKyAgICBtX2Fi
c3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZSkpKTsKIH0KIAog
T3B0aW9uYWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50cnk+IEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oCmluZGV4IDFjOTA4MjM4ZjNhM2VlYWQzZTBiMjRjNDM1YzU2N2YxNWVlNzBi
YjYuLjVjZjRmYTU1YzNlZWVkZWY0ZjhlYTkzY2Q2MWQ0NjYxZWI2N2Y4MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuaApAQCAtNDcsNiArNDcsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQg
OiBpbnQzMl90OwogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFj
cm8oZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldEFzeW5jR2VuZXJh
dG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEFic3RyYWN0TW9kdWxlUmVjb3JkSW50
ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBc
CiAgICAgbWFjcm8oZ2V0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8o
Z2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCkBAIC0xNTIsNiArMTUzLDcgQEAgZW51bSBj
bGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNybyhBc3luY0dlbmVyYXRv
clN1c3BlbmRSZWFzb25Bd2FpdCkgXAogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJl
YXNvbk5vbmUpIFwKICAgICBtYWNybyh1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QpIFwK
KyAgICBtYWNybyhhYnN0cmFjdE1vZHVsZVJlY29yZEZpZWxkU3RhdGUpIFwKIAogI2RlZmluZSBK
U0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNfQ1VTVE9NX0VBQ0hfTkFNRSht
YWNybykgXAogICAgIG1hY3JvKHNlbnRpbmVsTWFwQnVja2V0KSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBhMjRkMjY1MWI1MWE4NmU2
YzllNzA2OWQ3NDI2MGJjYTg1NzFlNDkxLi5jYjBlN2M4YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZi
OWQ3Mjk3NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTEyOTcsNyArMTI5Nyw2IEBAIG9wIDppdGVyYXRvcl9uZXh0LAogCiBvcCA6
eWllbGQsCiAgICAgYXJnczogewotICAgICAgICBnZW5lcmF0b3I6IFZpcnR1YWxSZWdpc3RlciwK
ICAgICAgICAgeWllbGRQb2ludDogdW5zaWduZWQsCiAgICAgICAgIGFyZ3VtZW50OiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5jcHAKaW5kZXggNDI1YWYyNWI4MDQ5MjlmNDYxZjBiYjEzOGM2NWE4Y2Y1
NGJiNTI0My4uMDE2YTAyN2ZhMzNhYjc5NDk0MzEyYTRhNDc3ZGZjNWIyZTdhMDBkNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBA
IC0yOTEsNyArMjkxLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZp
cnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wR2V0
SW50ZXJuYWxGaWVsZCwgYmFzZSkKICAgICBVU0VTKE9wUHV0SW50ZXJuYWxGaWVsZCwgYmFzZSwg
dmFsdWUpCiAKLSAgICBVU0VTKE9wWWllbGQsIGdlbmVyYXRvciwgYXJndW1lbnQpCisgICAgVVNF
UyhPcFlpZWxkLCBhcmd1bWVudCkKIAogICAgIGNhc2Ugb3BfaXRlcmF0b3Jfb3BlbjogewogICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wSXRlcmF0b3JPcGVuPigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGI5MzI0ODFhYTRlMjVjNDdkN2U3YWVl
NDExYjA4OTgzMzAwZGFlMTYuLjg1MzlmNTYyYjkzMDU0NmRlNGE3Mzg2NTgzMTAwZTYxNGZiNDk5
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKQEAgLTgyLDYgKzgyLDggQEAgcHVi
bGljOgogICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGVDb25zdGFudFJlZ2lz
dGVyT2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAorICAgIGJvb2wgaXNBc3luYygpIGNvbnN0IHsg
cmV0dXJuIGNvZGVGZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIENhY2hlZE1vZHVsZUNvZGVCbG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBkYzlj
MmQ5NjFiN2U5MmQ5NTg0MDg4OGJkMmRjM2ZkNzQ4YzdiMjE2Li45ZDk3NDMwNWE1NWNjYzc4ZmU5
NDQ4YTI3MDM4ZjAyMDAxMzU4YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAK
KyNpbmNsdWRlICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yQmFzZUlubGluZXMuaCIKQEAgLTI3OSw3ICsyODAsNyBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KICAgICAKIAotICAgIGlmIChpc0dl
bmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2stPnBhcnNlTW9k
ZSgpKSkKKyAgICBpZiAobV9pc0FzeW5jKQogICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0
aW9uKCp0aGlzLCBtX2NvZGVCbG9jay5nZXQoKSwgbV93cml0ZXIsIG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogCiAg
ICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY29kZUJsb2NrLT5udW1D
YWxsZWVMb2NhbHMoKSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgpKTsKQEAgLTM4NSw2ICszODYsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygp
ICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFs
KCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5p
c0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigp
KSkgJiYgcGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVy
TW9kZTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUo
cGFyc2VNb2RlKSkgeworICAgICAgICBtX2lzQXN5bmMgPSB0cnVlOwogICAgICAgICAvLyBHZW5l
cmF0b3IgYW5kIEFzeW5jRnVuY3Rpb24gbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1
bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBm
dW5jdGlvbiBzY29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKICAgICB9CkBA
IC00MzQsNyArNDM2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBlbWl0RW50ZXIo
KTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFy
c2VNb2RlKSkKLSAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07
CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OkdlbmVyYXRvcildOwogCiAgICAgYWxs
b2NhdGVBbmRFbWl0U2NvcGUoKTsKIApAQCAtOTUxLDYgKzk1MywxMyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxl
UHJvZ3JhbU5vZAogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3Bl
IDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAorICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZS0+
dXNlc0F3YWl0KCkpIHsKKyAgICAgICAgbV9pc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8PSBKU0dlbmVyYXRvcjo6QXJndW1lbnQ6Ok51bWJlck9mQXJndW1l
bnRzOyArK2kpCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOworICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkFyZ3VtZW50OjpHZW5lcmF0b3IpXTsKKyAgICB9CisK
ICAgICBlbWl0RW50ZXIoKTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CkBAIC05NTks
NyArOTY4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
TW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICAKICAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAKLSAgICBtX2NvZGVCbG9j
ay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0aGlzIgorICAg
IG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0
cmFjdE1vZHVsZVJlY29yZDo6QXJndW1lbnQ6Ok51bWJlck9mQXJndW1lbnRzKSArIDEpOyAvLyBB
bGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiICsgYXN5bmMgbW9kdWxlIGFyZ3VtZW50cy4KIAogICAg
IC8vIE5vdyBkZWNsYXJlIGFsbCB2YXJpYWJsZXMuCiAKQEAgLTk4MywxMSArOTkyLDE3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1O
b2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAKICAgICAvLyBXZSBrZWVwIHRoZSBzeW1ib2wgdGFibGUg
aW4gdGhlIGNvbnN0YW50IHBvb2wuCiAgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJs
ZSA9IG51bGxwdHI7Ci0gICAgaWYgKHNob3VsZEVtaXRUeXBlUHJvZmlsZXJIb29rcygpKQorICAg
IGlmIChzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSB8fCBtb2R1bGVQcm9ncmFtTm9kZS0+
dXNlc0F3YWl0KCkpCiAgICAgICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBhZGRDb25zdGFudFZh
bHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwogICAgIGVsc2UKICAgICAgICAgY29u
c3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUobW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQobV92bSkpOwogCisgICAgaWYgKG1vZHVsZVByb2dyYW1O
b2RlLT51c2VzQXdhaXQoKSkgeworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUu
c2V0KG1fdm0sIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOworICAgICAgICBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCk7
CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6OkZyYW1lKSwgZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBwdXNoVERaVmFyaWFibGVzKGxl
eGljYWxWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgVERaUmVxdWly
ZW1lbnQ6OlVuZGVyVERaKTsKICAgICBib29sIGlzV2l0aFNjb3BlID0gZmFsc2U7CiAgICAgbV9s
ZXhpY2FsU2NvcGVTdGFjay5hcHBlbmQoeyBtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLCBt
X3RvcE1vc3RTY29wZSwgaXNXaXRoU2NvcGUsIGNvbnN0YW50U3ltYm9sVGFibGUtPmluZGV4KCkg
fSk7CkBAIC0zNzI3LDcgKzM3NDIsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVi
dWdIb29rKEV4cHJlc3Npb25Ob2RlKiBleHByKQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0V2lsbExlYXZlQ2FsbEZyYW1lRGVidWdIb29rKCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCht
X3Njb3BlTm9kZS0+aXNGdW5jdGlvbk5vZGUoKSk7CisgICAgLy8gUkVMRUFTRV9BU1NFUlQobV9z
Y29wZU5vZGUtPmlzRnVuY3Rpb25Ob2RlKCkpOwogICAgIGVtaXREZWJ1Z0hvb2soV2lsbExlYXZl
Q2FsbEZyYW1lLCBtX3Njb3BlTm9kZS0+bGFzdExpbmUoKSwgbV9zY29wZU5vZGUtPnN0YXJ0T2Zm
c2V0KCksIG1fc2NvcGVOb2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAKQEAgLTQxNzgsNyAr
NDE5Myw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24o
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4CiB7CiAgICAgYm9vbCBpc0ZvckF3YWl0
ID0gZm9yTG9vcE5vZGUgPyBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpIDogZmFsc2U7CiAgICAg
YXV0byBzaG91bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0
QXdhaXQ6Ok5vOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJz
ZU1vZGUocGFyc2VNb2RlKCkpKTsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzQXN5bmNG
dW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkgfHwgaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VN
b2RlKCkpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFy
eSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKQEAgLTQ3Mzgs
NyArNDc1Myw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lz
dGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBCiAgICAgd2hpbGUgKG1fd3JpdGVy
LnBvc2l0aW9uKCkgJSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAgIE9wTm9wOjplbWl0PE9w
Y29kZVNpemU6Ok5hcnJvdz4odGhpcyk7CiAjZW5kaWYKLSAgICBPcFlpZWxkOjplbWl0KHRoaXMs
IGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgeWllbGRQb2ludEluZGV4LCBhcmd1bWVudCk7Cisg
ICAgT3BZaWVsZDo6ZW1pdCh0aGlzLCB5aWVsZFBvaW50SW5kZXgsIGFyZ3VtZW50KTsKIAogICAg
IC8vIFJlc3RvcmUgdGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0
ZWQgdG8gdGhlIG1lcmdlIHBvaW50LgogICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRU
cnlDb250ZXh0U3RhY2spOwpAQCAtNDc1MSwxMSArNDc2NiwxMSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2Vu
ZXJhdG9yOgogCiAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwotICAgIGVtaXRF
cXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9k
ZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAg
ICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJl
c3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAg
ZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CiAKICAg
ICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwotICAgIGVtaXRFcXVhbGl0eU9w
PE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRFcXVh
bGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJl
Z2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgIGVtaXRKdW1wSWZU
cnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAgICAgLy8gUmV0dXJuLgog
ICAgIHsKQEAgLTQ5MzksMTAgKzQ5NTQsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAg
ICAgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkxhYmVsID0gbmV3TGFiZWwoKTsKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25k
aXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5
T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0
ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAg
ICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkp
KSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwg
bm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9w
PE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkp
OwogICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHJl
dHVybkxhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0
byBUaHJvd01vZGUuCkBAIC01MDQ2LDkgKzUwNjEsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2Fi
bGUKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGlu
dDMyX3Qgc3RhdGUpCiB7CisgICAgLy8gRklYTUU6IEl0IHNlZW1zIGxpa2UgdGhpcyB3aWxsIGNy
ZWF0ZSBhIGxvdCBvZiBjb25zdGFudHMgaWYgdGhlcmUgYXJlIG1hbnkgeWllbGQgcG9pbnRzLiBN
YXliZSB3ZSBzaG91bGQgb3BfaW5jIHRoZSBvbGQgc3RhdGUuCiAgICAgUmVnaXN0ZXJJRCogY29t
cGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0ZSkpOwogICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3Rh
dGUpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZDo6U3Rh
dGUpKTsKLSAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSksIGNvbXBsZXRlZFN0
YXRlKTsKKyAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBpc01v
ZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUoKSkgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQWJzdHJh
Y3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZSkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNH
ZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSksIGNvbXBsZXRlZFN0YXRlKTsKIH0KIAogYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBWaWFGaW5hbGx5SWZOZWVkZWQoaW50IHRhcmdldExhYmVs
U2NvcGVEZXB0aCwgTGFiZWwmIGp1bXBUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYTVjYmQzNjk5
YTQ3M2NiZGMwODdmYmU2ZmExYjBjZmRiMDRkNTY3ZS4uOTUyZDEzYjM4ZDc2ZDc4NGUyYmNiNzNh
OTBhM2RkOTAyMzMzZDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA1NiwxMCArMTA1NiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50
MzJfdCBzdGF0ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBh
cmd1bWVudCwgSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uID0g
SlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpZaWVsZCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KLSAgICAgICAg
UmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRl
cnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpW
YWx1ZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9
CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6
U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
QXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQorICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAg
ICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApA
QCAtMTMyNSw2ICsxMzI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxSZWY8
Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNv
bnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwogICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRz
IHsgMCB9OworICAgICAgICBib29sIG1faXNBc3luYyB7IGZhbHNlIH07CiAKICAgICAgICAgU3Ry
b25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CiAgICAgICAgIGlu
dCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBlNWY4
MWE1NmUzYjc5MGMwZmU1ZWExNzhkNDIwNDk2OWFmY2MyYTk1Li5kOTg4OGJiZTg3Mzc0OGE4ZjBl
M2RiMjgxZTFlZmNiYmQyNDUxNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiTm9kZXMuaCIKICNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCiAKKyNpbmNsdWRlICJB
YnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNl
SW5saW5lcy5oIgpAQCAtMTM4OSw2ICsxMzkwLDE1IEBAIHN0YXRpYyBKU0FzeW5jR2VuZXJhdG9y
OjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNp
CiAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZTsKIH0KIAorc3RhdGlj
IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZCBhYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFs
RmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5v
ZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVt
aXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIoKSA9PSAmQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hYnN0cmFjdE1vZHVsZVJlY29yZEZpZWxkU3RhdGUp
CisgICAgICAgIHJldHVybiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6OlN0YXRlOworICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFic3RyYWN0TW9kdWxl
UmVjb3JkOjpGaWVsZDo6U3RhdGU7Cit9CisKIHN0YXRpYyBKU0FycmF5SXRlcmF0b3I6OkZpZWxk
IGFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKiBu
b2RlKQogewogICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9PSBCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKQEAgLTE0NzQsNiArMTQ4NCwxOSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEFzeW5jR2Vu
ZXJhdG9ySW50ZXJuYWxGaWVsZAogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEludGVybmFs
RmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgp
OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2lj
X2dldEFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9k
ZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9kZS0+bV9uZXh0OworICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29kZUludHJpbnNpY05vZGUoKSk7Cisg
ICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oYWJzdHJhY3RNb2R1bGVS
ZWNvcmRJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
Kj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8IEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NFUlQoIW5vZGUtPm1fbmV4dCk7
CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRBcnJheUl0ZXJhdG9y
SW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsK
QEAgLTQ5NDAsNyArNDk2Myw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRv
ci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBnZW5lcmF0b3Iu
Z2VuZXJhdG9yUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBnZW5lcmF0b3IucHJvbWlzZVJlZ2lzdGVyKCkp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3Vt
ZW50Q291bnQrKyksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
YXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2Rl
KSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFy
Z3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
OjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwogICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihp
bnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkKICAgICAgICAgSlNU
ZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9m
ZnNldCgpKTsKIApAQCAtNDk1NywxMSArNDk4MCwxMSBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAg
ICAgICBSZWY8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVh
bGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJl
c3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5v
cm1hbE1vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3Ry
aWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdp
c3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
Qm9keUxhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgUmVmPExhYmVsPiB0aHJvd0xhYmVsID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5
T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dN
b2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQo
KSk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggN2VmOTU5MTk5NWNlZGVlZWM3ZTE2ZDY4MGMyN2Ri
ZmE0OTkyMDVkYy4uYWQxYjE5NWNiYzg1MzJjZmU2ZTY2NGJiZDIzMGJmMmE3NGU4MDg4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJCeXRlY29kZXMuaCIKICNp
bmNsdWRlICJDYWxsRnJhbWVDbG9zdXJlLmgiCkBAIC00OSw2ICs1MCw3IEBACiAjaW5jbHVkZSAi
SlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZVJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIK
ICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCkBAIC0xMjAxLDcgKzEyMDMsNyBAQCBKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbAogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAK
LUpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCitKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlTW9kdWxlUHJvZ3JhbShKU01vZHVsZVJlY29yZCogcmVjb3JkLCBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTTW9kdWxlRW52aXJvbm1lbnQqIHNjb3BlLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSBy
ZXN1bWVNb2RlKQogewogICAgIFZNJiB2bSA9IHNjb3BlLT52bSgpOwogICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTIzMSw2ICsxMjMzLDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICBpZiAoc2NvcGUtPnN0cnVjdHVyZSh2bSktPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5mbGF0dGVuRGljdGlvbmFyeU9i
amVjdCh2bSk7CiAKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6QXJndW1lbnQ6Ok51bWJlck9m
QXJndW1lbnRzKTsKICAgICBKU0NhbGxlZSogY2FsbGVlID0gSlNDYWxsZWU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogY29kZUJs
b2NrOwogICAgIHsKQEAgLTEyNDAsNyArMTI0Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCiAgICAgICAgICAgICByZXR1
cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBqc0Nh
c3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwotICAgICAgICBBU1NF
UlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8vIDEgcGFyYW1ldGVyIGZvciAn
dGhpcycuCisgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSA9PSBudW1i
ZXJPZkFyZ3VtZW50cyArIDEpOwogICAgIH0KIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
OwpAQCAtMTI0OCwxMiArMTI1MSwyMiBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9k
dWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSgogICAgIHsK
ICAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1cmUgbm8gR0MgaGFwcGVucy4g
R0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUuCiAgICAgICAgIGppdENvZGUg
PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisKKyAgICAgICAgSlNWYWx1ZSBhcmdz
W251bWJlck9mQXJndW1lbnRzXSA9IHsKKyAgICAgICAgICAgIHJlY29yZCwKKyAgICAgICAgICAg
IHJlY29yZC0+aW50ZXJuYWxGaWVsZChKU01vZHVsZVJlY29yZDo6RmllbGQ6OlN0YXRlKS5nZXQo
KSwKKyAgICAgICAgICAgIHNlbnRWYWx1ZSwKKyAgICAgICAgICAgIHJlc3VtZU1vZGUsCisgICAg
ICAgICAgICBzY29wZSwKKyAgICAgICAgfTsKICAgICAgICAgLy8gVGhlIHx0aGlzfCBvZiB0aGUg
bW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KICAgICAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1y
ZWNvcmRzLWhhc3RoaXNiaW5kaW5nCiAgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1n
ZXR0aGlzYmluZGluZwotICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xv
YmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCksIDEpOworICAgICAgICBwcm90b0NhbGxG
cmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCks
IG51bWJlck9mQXJndW1lbnRzICsgMSwgYXJncyk7CiAgICAgfQogCisgICAgcmVjb3JkLT5pbnRl
cm5hbEZpZWxkKEpTTW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpLnNldCh2bSwgcmVjb3JkLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KEpTTW9kdWxlUmVjb3JkOjpTdGF0ZTo6RXhlY3V0aW5n
KSkpOworCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCku
cHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAppbmRleCA0ZjhiYzc4NWM1M2IzZGNlYmFmMjUyMzNiYTg1MGRiNTJhZDQxZmM1Li4wYzNl
ZmUxMmU1MTA1Mzg4ZjZjZjI4NTExZDllYTVlNGVhZjMwN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlUHJvZ3Jh
bShjb25zdCBTb3VyY2VDb2RlJiwgSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGhpc09iaik7
Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqKTsKKyAgICAgICAg
SlNWYWx1ZSBleGVjdXRlTW9kdWxlUHJvZ3JhbShKU01vZHVsZVJlY29yZCosIE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUVudmlyb25tZW50KiwgSlNW
YWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CiAgICAgICAgIEpTVmFsdWUgZXhl
Y3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxE
YXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKICAgICAgICAgSlNPYmpl
Y3QqIGV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVuY3Rpb24s
IGNvbnN0IENhbGxEYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFsdWUgbmV3VGFyZ2V0KTsKICAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaAppbmRleCA0OTEwZmM3Y2RhZmM1YmE4N2NmMjg5MzRjYTIzM2E0ZjhiYzZk
NzIzLi41N2Q4N2JmYWExZmUyY2FlZmE4Nzc4NjMzZTFjMzI5YTdhZWU4MjJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtNDAwLDYgKzQwMCw3IEBAIHB1
YmxpYzoKICAgICBBd2FpdEV4cHJOb2RlKiBjcmVhdGVBd2FpdChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFyZ3VtZW50KTsKKyAgICAgICAgdXNl
c0F3YWl0KCk7CiAgICAgICAgIEF3YWl0RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEF3YWl0RXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50KTsKICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9k
ZTsKQEAgLTEwOTksNiArMTEwMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2NvcGUubV9mZWF0
dXJlcyB8PSBFdmFsRmVhdHVyZTsKICAgICB9CiAgICAgdm9pZCB1c2VzTmV3VGFyZ2V0KCkgeyBt
X3Njb3BlLm1fZmVhdHVyZXMgfD0gTmV3VGFyZ2V0RmVhdHVyZTsgfQorICAgIHZvaWQgdXNlc0F3
YWl0KCkgeyBtX3Njb3BlLm1fZmVhdHVyZXMgfD0gQXdhaXRGZWF0dXJlOyB9CiAgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUludGVnZXJMaWtlTnVtYmVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcAppbmRleCAwMmI3ODc1Y2NhZjZhZmY2NjNhYzFlZWY1YWRkYjhkYmQzNDA5Mzc3
Li5hODQ5NWQxMTUwYzg4YTllYWY5ZDc0YTMxYWFlYmVlYTI3MWU5OTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTc3LDYgKzE3Nyw3IEBAIE1vZHVsZVByb2dy
YW1Ob2RlOjpNb2R1bGVQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGNvbnN0
IEpTVG9rZW5Mb2NhCiAgICAgOiBTY29wZU5vZGUocGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24s
IGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJFbnZpcm9ubWVudCwgV1RGTW92ZShm
dW5jU3RhY2spLCBsZXhpY2FsVmFyaWFibGVzLCBXVEZNb3ZlKHNsb3BweU1vZGVIb2lzdGVkRnVu
Y3Rpb25zKSwgZmVhdHVyZXMsIGlubmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcywgbnVtQ29u
c3RhbnRzKQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVtbikKICAgICAsIG1fZW5kQ29s
dW1uKGVuZENvbHVtbikKKyAgICAsIG1fdXNlc0F3YWl0KGZlYXR1cmVzICYgQXdhaXRGZWF0dXJl
KQogICAgICwgbV9tb2R1bGVTY29wZURhdGEoKldURk1vdmUobW9kdWxlU2NvcGVEYXRhKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAwNWMxOGVhZGYyNDkwMDU2
MDU5YTRiY2NjZTE1YWJlNWFmZDQ5MTZiLi5iOGE3MTZlMDA0MDljZWI5MGExYzhhZjg3ZjljNjFi
NjMxNjNmZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xOTkwLDYg
KzE5OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVt
bigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgZW5k
Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KKyAgICAgICAgYm9vbCB1c2Vz
QXdhaXQoKSBjb25zdCB7IHJldHVybiBtX3VzZXNBd2FpdDsgfQogCiAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIApAQCAtMjAwMiw2ICsyMDAz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKICAgICAgICAgdW5zaWdu
ZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CisgICAgICAg
IGJvb2wgbV91c2VzQXdhaXQ7CiAgICAgICAgIFJlZjxNb2R1bGVTY29wZURhdGE+IG1fbW9kdWxl
U2NvcGVEYXRhOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAppbmRleCAzYjFhZjBhZDY5MmJlYmQ1NTk2YzI4ZjI3OGQ5ZTMzOWI3MzcwNWFjLi5iM2ViMzc5
NzhiN2IyYTc2YjI0YzU0YmRiMGI4YTdkNGU1ZjM3MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDksNiArMjA5LDExIEBAIFBhcnNlcjxMZXhlclR5cGU+
Ojp+UGFyc2VyKCkKIHsKIH0KIAordm9pZCBKU1Rva2VuOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Cit7CisgICAgb3V0LnByaW50KCptX2RhdGEuY29va2VkKTsKK30KKwogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIEV4cGVjdGVkPHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+
OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250
ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRp
b24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNzRmllbGRMb2NhdGlvbnMpCiB7
CkBAIC0xMzUyLDcgKzEzNTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIG1fc3Rh
dGVtZW50RGVwdGgrKzsKIAogICAgIGlmIChtYXRjaChBV0FJVCkpIHsKLSAgICAgICAgc2VtYW50
aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uKCksICJmb3ItYXdh
aXQtb2YgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBhc3luYyBmdW5jdGlvbiBvciBhc3luYyBnZW5l
cmF0b3IiKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNB
c3luY0Z1bmN0aW9uKCkgfHwgKGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSAm
JiBPcHRpb25zOjp1c2VUb3BMZXZlbEF3YWl0KCkpLCAiZm9yLWF3YWl0LW9mIGNhbiBvbmx5IGJl
IHVzZWQgaW4gYW4gYXN5bmMgZnVuY3Rpb24gb3IgYXN5bmMgZ2VuZXJhdG9yIik7CiAgICAgICAg
IGlzQXdhaXRGb3IgPSB0cnVlOwogICAgICAgICBuZXh0KCk7CiAgICAgfQpAQCAtNDEyMyw3ICs0
MTI4LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXdhaXRF
eHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChBV0FJ
VCkpOwotICAgIEFTU0VSVChjdXJyZW50U2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uKCkpOworICAg
IEFTU0VSVChjdXJyZW50U2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uKCkgfHwgaXNNb2R1bGVQYXJz
ZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKTsKKyAgICBBU1NFUlQoaXNBc3luY0Z1bmN0aW9uUGFy
c2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSB8fCBpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJz
ZU1vZGUoKSkpOwogICAgIEFTU0VSVChtX3BhcnNlclN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSAh
PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90U3RhcnQg
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKQEAgLTQ3OTUsNyArNDgwMSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
UHJpbWFyeUV4cHJlCiAgICAgY2FzZSBBV0FJVDoKICAgICAgICAgaWYgKG1fcGFyc2VyU3RhdGUu
ZnVuY3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFzZTo6UGFyYW1ldGVycykKICAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UobV9wYXJzZXJTdGF0ZS5hbGxvd0F3YWl0LCAi
Q2Fubm90IHVzZSAnYXdhaXQnIHdpdGhpbiBhIHBhcmFtZXRlciBkZWZhdWx0IGV4cHJlc3Npb24i
KTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0
aW9uQm91bmRhcnkoKSkKKyAgICAgICAgZWxzZSBpZiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+
aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSB8fCAoaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFy
c2VNb2RlKCkpICYmIE9wdGlvbnM6OnVzZVRvcExldmVsQXdhaXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VBd2FpdEV4cHJlc3Npb24oY29udGV4dCk7CiAKICAgICAgICAgZ290byBpZGVu
dGlmaWVyRXhwcmVzc2lvbjsKQEAgLTUzMTksNyArNTMyNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlF
eHByZXNzCiAgICAgYm9vbCBoYXNQcmVmaXhVcGRhdGVPcCA9IGZhbHNlOwogICAgIHVuc2lnbmVk
IGxhc3RPcGVyYXRvciA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFkobWF0Y2goQVdBSVQpICYmIGN1
cnJlbnRGdW5jdGlvblNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkpKQorICAgIGlm
IChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgKGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPmlzQXN5
bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgKGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9k
ZSgpKSkgJiYgT3B0aW9uczo6dXNlVG9wTGV2ZWxBd2FpdCgpKSkpCiAgICAgICAgIHJldHVybiBw
YXJzZUF3YWl0RXhwcmVzc2lvbihjb250ZXh0KTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJNb2Rlcy5oCmluZGV4IDFjZGFmYzU4NTkyNjA3NmNmMTNiNjM4ZmEyMTYyN2QyZjc1NWRiNjQu
Ljk2MzM0YmJlYTU4YTAxNmZhZmFkM2YyOTZlYzA4Njk0ZTIwMGE0NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTMyMiw4ICszMjIsOSBAQCBjb25z
dCBDb2RlRmVhdHVyZXMgU3VwZXJQcm9wZXJ0eUZlYXR1cmUgPSAgICAgICAgICAxIDw8IDk7CiBj
b25zdCBDb2RlRmVhdHVyZXMgTmV3VGFyZ2V0RmVhdHVyZSA9ICAgICAgICAgICAgICAxIDw8IDEw
OwogY29uc3QgQ29kZUZlYXR1cmVzIE5vRXZhbENhY2hlRmVhdHVyZSA9ICAgICAgICAgICAgMSA8
PCAxMTsKIGNvbnN0IENvZGVGZWF0dXJlcyBOb25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVyZSA9
IDEgPDwgMTI7Citjb25zdCBDb2RlRmVhdHVyZXMgQXdhaXRGZWF0dXJlID0gICAgICAgICAgICAg
ICAgICAxIDw8IDEzOwogCi1jb25zdCBDb2RlRmVhdHVyZXMgQWxsRmVhdHVyZXMgPSBFdmFsRmVh
dHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IFRoaXNGZWF0dXJlIHwgU3Ry
aWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSB8IEFycm93RnVuY3Rpb25G
ZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwgU3VwZXJDYWxsRmVhdHVyZSB8
IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENhY2hlRmVh
dHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlOworY29uc3QgQ29kZUZlYXR1cmVz
IEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0dXJlIHwgV2l0aEZlYXR1
cmUgfCBUaGlzRmVhdHVyZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwgU2hhZG93c0FyZ3VtZW50c0Zl
YXR1cmUgfCBBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IEFycm93RnVuY3Rpb25Db250ZXh0RmVhdHVy
ZSB8IFN1cGVyQ2FsbEZlYXR1cmUgfCBTdXBlclByb3BlcnR5RmVhdHVyZSB8IE5ld1RhcmdldEZl
YXR1cmUgfCBOb0V2YWxDYWNoZUZlYXR1cmUgfCBOb25TaW1wbGVQYXJhbWV0ZXJMaXN0RmVhdHVy
ZSB8IEF3YWl0RmVhdHVyZTsKIAogdHlwZWRlZiB1aW50OF90IElubmVyQXJyb3dGdW5jdGlvbkNv
ZGVGZWF0dXJlczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oCmluZGV4IGEyMTkxNzI0ZTA0NTFlNDZlNGY4Mjg4MTBjN2RiZTNmYTliN2ViNjUuLmRl
NjdhNDBiYzU1MGJlNzc2Nzk4NDJhOGYzZjY5ZGRhOTc5YWI3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMjgzLDYgKzI4Myw4IEBAIHN0cnVj
dCBKU1Rva2VuIHsKICAgICBKU1Rva2VuTG9jYXRpb24gbV9sb2NhdGlvbjsKICAgICBKU1RleHRQ
b3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAgICAgSlNUZXh0UG9zaXRpb24gbV9lbmRQb3NpdGlv
bjsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIAogQUxXQVlTX0lO
TElORSBib29sIGlzVXBkYXRlT3AoSlNUb2tlblR5cGUgdG9rZW4pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKaW5kZXgg
ODUzZDNhMGNkZjE2ZDhhMmE3OTcyMDQ2ODkwNWYxYmRlMDJlNjc1OS4uYWJkYzNjZTMyMDc2ZDc0
NDViZTEwY2Q2M2JmN2Q2ZmJlYjdhOTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIKICNpbmNsdWRlICJKU01hcC5o
IgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oIgpAQCAtNTMsNiArNTQsMTEgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZt
KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0s
IGluZm8oKSkpOwogCisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFsVmFsdWVzKCk7CisgICAgQVNT
RVJUKHZhbHVlcy5zaXplKCkgPT0gbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyk7CisgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUoKTsgKytpbmRleCkKKyAgICAg
ICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0aGlzLCB2YWx1ZXNbaW5kZXhd
KTsKKwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU01h
cCogbWFwID0gSlNNYXA6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPm1h
cFN0cnVjdHVyZSgpKTsKICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKQEAg
LTgwNSw3ICs4MTEsNyBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpzZXRNb2R1bGVFbnZp
cm9ubWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKUwogICAgIG1fbW9kdWxlRW52
aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVudCk7CiB9CiAKLXZvaWQgQWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBzY3JpcHRGZXRjaGVyKQorU3luY2hyb25vdXNuZXNzIEFic3RyYWN0TW9kdWxlUmVjb3Jk
OjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
cikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGF1dG8qIGpz
TW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkK
QEAgLTgxNSwxMyArODIxLDE0IEBAIHZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjCiAgICAgICAgIHJl
dHVybiB3YXNtTW9kdWxlUmVjb3JkLT5saW5rKGdsb2JhbE9iamVjdCwgc2NyaXB0RmV0Y2hlciwg
bnVsbHB0ciwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tTW9kdWxlTG9hZGVyKTsKICNlbmRpZgog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN5bmNocm9ub3Vz
bmVzczo6U3luYzsKIH0KIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBBYnN0cmFjdE1vZHVs
ZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTX0VYUE9S
VF9QUklWQVRFIEpTVmFsdWUgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChhdXRvKiBq
c01vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPih2bSwgdGhpcykp
Ci0gICAgICAgIHJldHVybiBqc01vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgcmV0dXJuIGpzTW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIHNl
bnRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChh
dXRvKiB3YXNtTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZCo+KHZtLCB0aGlzKSkKICAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVSZWNvcmQtPmV2YWx1
YXRlKGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaAppbmRleCA2ZWY1NWMxNjc4MjNiZjBmNTQzNTU2MDc3
Y2EyM2MyYTllNTZlZjZlLi5jNmY3ZTcyNTE4Y2U2Mjc3YjdjNzU0OTJkOWE1MmI3OGUzZDI2YTZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVs
ZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9k
dWxlUmVjb3JkLmgKQEAgLTI2LDcgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmgi
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcs
MTAgKzM4LDEwIEBAIGNsYXNzIEpTTWFwOwogCiAvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQg
TW9kdWxlIFJlY29yZAogLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRzCi1jbGFzcyBBYnN0cmFjdE1v
ZHVsZVJlY29yZCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK2NsYXNzIEFic3RyYWN0TW9k
dWxlUmVjb3JkIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8ND4gewogICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFz
ZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgdXNpbmcgQmFzZSA9IEpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGw8ND47CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IHRydWU7CiAKQEAgLTUwLDYgKzUxLDI4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKKyAgICB1c2luZyBBcmd1bWVudCA9IEpTR2Vu
ZXJhdG9yOjpBcmd1bWVudDsKKyAgICB1c2luZyBTdGF0ZSA9IEpTR2VuZXJhdG9yOjpTdGF0ZTsK
KyAgICB1c2luZyBSZXN1bWVNb2RlID0gSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU7CisKKyAgICBl
bnVtIGNsYXNzIEZpZWxkIDogdWludDMyX3QgeworICAgICAgICBTdGF0ZSwKKyAgICAgICAgTmV4
dCwKKyAgICAgICAgVGhpcywKKyAgICAgICAgRnJhbWUsCisgICAgfTsKKworICAgIHN0YXRpY19h
c3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA0KTsKKyAgICBzdGF0aWMgc3RkOjphcnJh
eTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0aWFsVmFsdWVzKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KFN0YXRlOjpJbml0KSksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAg
ICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAg
IH0gfTsKKyAgICB9CisKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Nl
Yy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcwogICAgIHN0cnVjdCBFeHBvcnRFbnRyeSB7CiAg
ICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC0xMjksOCArMTUyLDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7CiAgICAgfQogCi0gICAgdm9p
ZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgU3lu
Y2hyb25vdXNuZXNzIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKKyAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQpIHsgcmV0dXJuIEJhc2U6Omlu
dGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KKyAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4gaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgY29uc3QgeyByZXR1cm4g
QmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQoVk0mLCBTdHJ1Y3R1cmUqLCBjb25z
dCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FzeW5jR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jR2VuZXJhdG9yLmgKaW5kZXggNmE5MGU5N2EzOTNhYjIyZjA4MTVkMDhmZjI3ZDExYTEzZGM4
NzcyYi4uMTBmNmU4OTQzODE3ODRmNjRhMTEyMTNlMzVmZGU4MTIyOWM1NjRkNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaApAQCAtNTQs
OCArNTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN1c3BlbmRlZFlpZWxkID0gLTQsCiAgICAgICAg
IEF3YWl0aW5nUmV0dXJuID0gLTUsCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkgPT0gc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6
OkV4ZWN1dGluZykgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRv
clN0YXRlOjpFeGVjdXRpbmcpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMy
X3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpDb21wbGV0ZWQpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykgPT0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpFeGVjdXRpbmcpKTsKIAogICAg
IGVudW0gY2xhc3MgQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uIDogaW50MzJfdCB7CiAgICAg
ICAgIE5vbmUgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
LmgKaW5kZXggZmM0YzJlNTFiYzE0Yjc4NzEzYzY4ZTVjYmU1ZTI0OWZjZmM3MDc3Yi4uZmJmNmEx
NTJiOWI3ODI3MDJhMzdmYTI3NGY1Zjc1NmMxNWZmYmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCkBAIC00NiwyNiArNDYsMjcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gdm0uZ2VuZXJhdG9yU3BhY2U8bW9kZT4oKTsKICAgICB9CiAKLSAgICBl
bnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90IHsKKyAgICBlbnVtIGNsYXNz
IFJlc3VtZU1vZGUgOiBpbnQzMl90IHsKICAgICAgICAgTm9ybWFsTW9kZSA9IDAsCiAgICAgICAg
IFJldHVybk1vZGUgPSAxLAogICAgICAgICBUaHJvd01vZGUgPSAyCiAgICAgfTsKIAotICAgIGVu
dW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKKyAgICBlbnVtIGNsYXNzIFN0YXRl
IDogaW50MzJfdCB7CiAgICAgICAgIENvbXBsZXRlZCA9IC0xLAogICAgICAgICBFeGVjdXRpbmcg
PSAtMiwKICAgICAgICAgSW5pdCA9IDAsCiAgICAgfTsKIAogICAgIC8vIFt0aGlzXSwgQGdlbmVy
YXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVN
b2RlLCBAZ2VuZXJhdG9yRnJhbWUuCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JBcmd1bWVudCA6
IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgQXJndW1lbnQgOiBpbnQzMl90IHsKICAgICAgICAg
VGhpc1ZhbHVlID0gMCwKICAgICAgICAgR2VuZXJhdG9yID0gMSwKICAgICAgICAgU3RhdGUgPSAy
LAogICAgICAgICBWYWx1ZSA9IDMsCiAgICAgICAgIFJlc3VtZU1vZGUgPSA0LAogICAgICAgICBG
cmFtZSA9IDUsCisgICAgICAgIE51bWJlck9mQXJndW1lbnRzID0gRnJhbWUsCiAgICAgfTsKIAog
ICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CkBAIC04Miw3ICs4Myw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiB7IHsKICAgICAgICAgICAgIGpzTnVsbCgpLAotICAg
ICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oR2VuZXJhdG9yU3RhdGU6Oklu
aXQpKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KFN0YXRlOjpJ
bml0KSksCiAgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAogICAgICAgICAgICAganNVbmRlZmlu
ZWQoKSwKICAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCkBAIC0xMDEsNCArMTAyLDYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiB9OwogCitPVkVSTE9BRF9SRUxB
VElPTkFMX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lOVEVHUkFMUyhKU0dlbmVyYXRv
cjo6QXJndW1lbnQpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGIyZjMyMjY1YTU3NTNlNWZjNmZi
NjQxMjA4ZmRmY2Y2NGY1YzM0NWMuLmE2ZmIxYWU2OGRjMjJjNTJhMDkxMWU5MDEzMjc5OGFkMDBk
YWZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaApAQCAtMjMwLDcgKzIzMCw3IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7
CiAgICAgdHlwZWRlZiBKU09iamVjdCogKCpNb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJv
cGVydGllc1B0cikoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpT
TW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7CiAgICAgTW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0
YVByb3BlcnRpZXNQdHIgbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXM7CiAK
LSAgICB0eXBlZGVmIEpTVmFsdWUgKCpNb2R1bGVMb2FkZXJFdmFsdWF0ZVB0cikoSlNHbG9iYWxP
YmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAg
IHR5cGVkZWYgSlNWYWx1ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0dsb2JhbE9iamVj
dCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFs
dWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTVmFsdWUg
cmVzdW1lTW9kZSk7CiAgICAgTW9kdWxlTG9hZGVyRXZhbHVhdGVQdHIgbW9kdWxlTG9hZGVyRXZh
bHVhdGU7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpQcm9taXNlUmVqZWN0aW9uVHJhY2tlclB0ciko
SlNHbG9iYWxPYmplY3QqLCBKU1Byb21pc2UqLCBKU1Byb21pc2VSZWplY3Rpb25PcGVyYXRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2Fk
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3Bw
CmluZGV4IDc3YmIyYjBiNTlkN2Q2ZmJmNjA1Njk3NzBjNWM2YzI5Mjg0YjQyYzkuLjc3MTBmZDMw
NzIzMjQ3ODE1MmM1NWE0MDQxNzAxMzYyYWNkN2QwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAgLTMwNywyMCArMzA3LDIwIEBA
IEpTT2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3Ry
dWN0dXJlKCkpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRW
YWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZh
bHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBrZXksIEpTVmFsdWUg
bW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFs
dWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1w
TW9kdWxlTG9hZGluZ1N0YXRlKCksICJMb2FkZXIgW2V2YWx1YXRlXSAiLCBwcmludGFibGVNb2R1
bGVLZXkoZ2xvYmFsT2JqZWN0LCBrZXkpKTsKIAogICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKQotICAgICAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJF
dmFsdWF0ZShnbG9iYWxPYmplY3QsIHRoaXMsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUsIHNjcmlw
dEZldGNoZXIpOworICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIHRoaXMsIGtleSwg
bW9kdWxlUmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7
CiAKLSAgICByZXR1cm4gZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBtb2R1
bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0dXJuIGV2YWx1YXRlTm9uVmly
dHVhbChnbG9iYWxPYmplY3QsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIs
IHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2
YWx1YXRlTm9uVmlydHVhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBK
U1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlKQorSlNWYWx1ZSBKU01vZHVsZUxvYWRl
cjo6ZXZhbHVhdGVOb25WaXJ0dWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUsIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUgc2VudFZhbHVl
LCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgaWYgKGF1dG8qIG1vZHVsZVJlY29yZCA9IGpz
RHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPihnbG9iYWxPYmplY3QtPnZtKCksIG1v
ZHVsZVJlY29yZFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogfQogCkBAIC0zNjUsNiArMzY1LDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1v
ZHVsZUxvYWRlclBhcnNlTW9kdWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3Nl
bWJseTo6aW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBtb2R1bGVLZXksIGpzU291
cmNlQ29kZSkpKTsKICNlbmRpZgogCisgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1vZHVs
ZUxvYWRpbmdTdGF0ZSgpLCAibG9hZGVyIFtwYXJzaW5nXSAiLCBtb2R1bGVLZXkpOworCiAgICAg
UGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2Rl
PiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAg
dm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVp
bHRpbiwKQEAgLTQwOSwxMCArNDExLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtb2R1
bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24sIChKU0dsb2JhbE9iCiAKICAg
ICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJMb2FkZXIg
W2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCkpOwogCi0gICAgbW9kdWxlUmVjb3Jk
LT5saW5rKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgYXV0byBz
eW5jID0gbW9kdWxlUmVjb3JkLT5saW5rKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN5bmMgPT0gU3luY2hyb25vdXNuZXNzOjpBc3lu
YykpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSG9vayBGdW5jdGlv
bnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00ODEsNyArNDgzLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlckV2YWx1YXRlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2EKICAgICBKU01vZHVsZUxvYWRlciogbG9hZGVyID0ganNEeW5hbWlj
Q2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZhbHVhdGUoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXIt
PmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgzKSwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oCmluZGV4
IDFlMDZiNzcwYTFmOGFjYmEzNDEwZGMyMWFlZTBmZmUwMWFlZTljMjAuLmIzZDg1YTk1Y2ZmZmM2
OTEwOTRlZDk2MjNhZGQxZWI4ZWI4ZWZjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaApAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAgICAg
SlNPYmplY3QqIGNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBrZXksIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKIAogICAg
IC8vIEFkZGl0aW9uYWwgcGxhdGZvcm0gZGVwZW5kZW50IGhvb2tlZCBBUElzLgotICAgIEpTVmFs
dWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVS
ZWNvcmQsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNWYWx1ZSBldmFsdWF0ZU5vblZp
cnR1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQs
IEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKKyAgICBKU1Zh
bHVlIGV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUga2V5LCBKU1Zh
bHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1
ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKIAogICAgIC8vIFV0aWxpdHkgZnVuY3Rpb25zLgogICAg
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIG1vZHVsZVJlY29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggMDhhOTg5MDk2ZWNkMDJjMGMz
OTA0YmRhYzk1YjlmMjIxMTAzZWUyMi4uOTNiYmM4Y2FlZWY4ZWUyY2I3ZTIxNWU5MmJjMzhkZWUw
OTgyZDVkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
cHBlbmQodGhpc09iamVjdC0+bV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSk7CiB9CiAKLXZvaWQg
SlNNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQorU3luY2hyb25vdXNuZXNzIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtODcsMTEgKzg3LDEzIEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6
OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KQogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXhlY3V0YWJs
ZSk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFN5bmNo
cm9ub3VzbmVzczo6U3luYzsKICAgICB9CiAgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZ2xv
YmFsT2JqZWN0LCBleGVjdXRhYmxlLCBzY3JpcHRGZXRjaGVyKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN5
bmNocm9ub3VzbmVzczo6U3luYyk7CiAgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQo
dm0sIHRoaXMsIGV4ZWN1dGFibGUpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGUtPnVubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygpLT5pc0FzeW5jKCkgPyBTeW5jaHJvbm91c25lc3M6OkFz
eW5jIDogU3luY2hyb25vdXNuZXNzOjpTeW5jOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpp
bnN0YW50aWF0ZURlY2xhcmF0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIEpTVmFsdWUgc2Ny
aXB0RmV0Y2hlcikKQEAgLTIzNSwxNCArMjM3LDE2IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omlu
c3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1vZHVs
CiAgICAgc2V0TW9kdWxlRW52aXJvbm1lbnQoZ2xvYmFsT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVu
dCk7CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCitKU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVN
b2RlKQogewogICAgIGlmICghbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9tb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZS5nZXQoKTsKLSAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7Ci0g
ICAgcmV0dXJuIHZtLmludGVycHJldGVyLT5leGVjdXRlTW9kdWxlUHJvZ3JhbShleGVjdXRhYmxl
LCBnbG9iYWxPYmplY3QsIG1vZHVsZUVudmlyb25tZW50KCkpOworICAgIEpTVmFsdWUgcmVzdWx0
T3JBd2FpdGVkVmFsdWUgPSB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZU1vZHVsZVByb2dyYW0odGhp
cywgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCgpLCBzZW50VmFs
dWUsIHJlc3VtZU1vZGUpOworICAgIGlmIChKU1ZhbHVlIHN0YXRlID0gaW50ZXJuYWxGaWVsZChG
aWVsZDo6U3RhdGUpLmdldCgpOyAhc3RhdGUuaXNOdW1iZXIoKSB8fCBzdGF0ZS5hc051bWJlcigp
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdGF0ZTo6RXhlY3V0aW5nKSkKKyAgICAgICAgbV9t
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOworICAgIHJldHVybiByZXN1bHRPckF3YWl0
ZWRWYWx1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCA5MDAxMmMwNDM0NTI4ZDIxOTIyYzgw
NmQzYzc0MjA5NjI2OWNlODliLi5lZDUwNDZhMDVkYjZjMGY0MTZjZTI3MTBlMTExNjlkMDlhOWM5
ZTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpT
TW9kdWxlUmVjb3JkKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgIHZvaWQgbGluayhKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCopOworICAgIFN5bmNocm9ub3VzbmVz
cyBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBz
ZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CiAKICAgICBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9CiAgICAgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2Rl
Y2xhcmVkVmFyaWFibGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCBiODU5MTRmZjhlYTBkZDAzYzYy
NDc3NTM1OTZmZjQyZDU2MTY2YjM1Li4wNjU3MzhjMWM0NWQ5YTI1YjFiZjBmYzU5MDYxZWYxMDcx
NjhkMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICBF
eGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFibGVJ
bmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJlbWVudDo6Tm9uZSwgZmFs
c2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUsIFN1
cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9k
ZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyOjpObywg
aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRleHRUeXBlOjpOb25lKTsg
fQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9j
ay5nZXQoKTsgfQorICAgIGJvb2wgaXNBc3luYygpIGNvbnN0IHsgcmV0dXJuIGZlYXR1cmVzKCkg
JiBBd2FpdEZlYXR1cmU7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLmdldCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4
IDdmZGUxNzJiYjU3OTFjNWQ1ZmVlZTcwOGJiOWRkMGNhNTk3YmU4ZGIuLmZhM2Y1ZDcyZjZlYWY2
YjA2MmQyYzgwMDI5NTUwNTUwMGNmZTA1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDgxLDE2ICs0ODEsNyBAQCBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KE9wdGlvblJhbmdlLCB3YXNtRnVuY3Rpb25J
bmRleFJhbmdlVG9Db21waWxlLCAwLCBOb3JtYWwsICJ3YXNtIGZ1bmN0aW9uIGluZGV4IHJhbmdl
IHRvIGFsbG93IGNvbXBpbGF0aW9uIG9uLCBlLmcuIDE6MTAwIikgXAogICAgIHYoQm9vbCwgd2Fz
bUxMSW50VGllcnNVcFRvQkJRLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFNpemUs
IHdlYkFzc2VtYmx5QkJRQWlyTW9kZVRocmVzaG9sZCwgaXNJT1MoKSA/ICgxMCAqIE1CKSA6IDAs
IE5vcm1hbCwgIklmIDAsIHdlIGFsd2F5cyB1c2UgQkJRIEFpci4gSWYgV2FzbSBtb2R1bGUgY29k
ZSBzaXplIGhpdHMgdGhpcyB0aHJlc2hvbGQsIHdlIGNvbXBpbGUgV2FzbSBtb2R1bGUgd2l0aCBC
MyBCQlEgbW9kZS4iKSBcCi0gICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVN0cmVhbWluZywgdHJ1
ZSwgTm9ybWFsLCAiQWxsb3cgdG8gcnVuIFdlYkFzc2VtYmx5J3MgU3RyZWFtaW5nIEFQSSIpIFwK
ICAgICB2KEJvb2wsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNoaW5nLCBmYWxzZSwgTm9y
bWFsLCAiVW5uYW1lZCBXZWJBc3NlbWJseSBtb2R1bGVzIGFyZSBpZGVudGlmaWVkIGluIGJhY2t0
cmFjZXMgdGhyb3VnaCB0aGVpciBoYXNoLCBpZiBhdmFpbGFibGUuIikgXAotICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9t
IHRoZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4iKSBcCi0gICAgdihCb29sLCB1c2VXZWJBc3NlbWJs
eU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNtIG11
bGl0LXZhbHVlcyBzcGVjLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VGhyZWFkaW5n
LCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSB0aHJlYWRp
bmcgc3BlYy4iKSBcCi0gICAgdihCb29sLCB1c2VXZWFrUmVmcywgdHJ1ZSwgTm9ybWFsLCAiRXhw
b3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKLSAgICB2KEJvb2wsIHVzZUludGxEYXRl
VGltZUZvcm1hdERheVBlcmlvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRhdGVU
aW1lRm9ybWF0IGRheVBlcmlvZCBmZWF0dXJlLiIpIFwKLSAgICB2KEJvb2wsIHVzZUludGxEYXRl
VGltZUZvcm1hdFJhbmdlVG9QYXJ0cywgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRh
dGVUaW1lRm9ybWF0I2Zvcm1hdFJhbmdlVG9QYXJ0cyBmZWF0dXJlLiIpIFwKLSAgICB2KEJvb2ws
IHVzZUF0TWV0aG9kLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhvZCBvbiBB
cnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKLSAgICB2KEJvb2wsIHVzZVNoYXJl
ZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VB
cnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwg
dXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUg
YWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBc
CiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNy
ZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8g
c3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwgZmFsc2UsIE5vcm1h
bCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIpIFwKQEAgLTUxMSw4
ICs1MDIsNiBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2
KEJvb2wsIHVzZVJhbmRvbWl6aW5nRXhlY3V0YWJsZUlzbGFuZEFsbG9jYXRpb24sIGZhbHNlLCBO
b3JtYWwsICJGb3IgdGhlIGFybTY0IEV4ZWN1dGFibGVBbGxvY2F0b3IsIGlmIHRydWUsIHNlbGVj
dCB3aGljaCByZWdpb24gdG8gdXNlIHJhbmRvbWx5LiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVzdGlu
ZyB0aGF0IGp1bXAgaXNsYW5kcyB3b3JrLiIpIFwKICAgICB2KEJvb2wsIGV4cG9zZVByb2ZpbGVy
c09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBleHBvc2Ug
ZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhlIHNhbXBsaW5nIHByb2ZpbGVyIGFu
ZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJvb2wsIGFsbG93VW5zdXBwb3J0ZWRUaWVy
cywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgbm90IGRpc2FibGUgREZHIG9yIEZU
TCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlzIGVuYWJsZWQuIikgXAotICAgIHYoQm9v
bCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFy
c2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIp
IFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2RzIGluc2lkZSBjbGFz
c2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJvbUluZmluaXRlTG9vcHNGb3JGdXp6
aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihTaXplLCBlYXJseVJldHVybkZy
b21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5vcm1hbCwgIldoZW4gcmV0dXJuRWFy
bHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1ZSwgdGhpcyBkZXRlcm1pbmVzIHRo
ZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1biBmb3IgYmVmb3JlIGp1c3QgcmV0
dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6ZXIgc28gaXQgZG9lc24ndCBnZXQg
c3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYoQm9vbCwgdXNlTElDTUZ1enppbmcs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTUyMCw4ICs1MDksMjQgQEAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihEb3VibGUsIGFsbG93SG9pc3Rp
bmdMSUNNUHJvYmFiaWxpdHksIDAuNSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCBl
eHBvc2VDdXN0b21TZXR0ZXJzT25HbG9iYWxPYmplY3RGb3JUZXN0aW5nLCBmYWxzZSwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VKSVRDYWdlLCBjYW5Vc2VKSVRDYWdlKCksIE5v
cm1hbCwgbnVsbHB0cikgXAorICAgIFwKKyAgICAvKiBGZWF0dXJlIEZsYWdzICovXAorICAgIFwK
ICAgICB2KEJvb2wsIHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgc3RhdGljIGRhdGEgZmll
bGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZhdGVTdGF0aWNDbGFz
c0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3Rh
bmQgcHJpdmF0ZSBzdGF0aWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYo
Qm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUg
cGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2Vz
LiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCBmYWxzZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2RzIGluc2lkZSBj
bGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5U3RyZWFtaW5nLCB0cnVlLCBO
b3JtYWwsICJBbGxvdyB0byBydW4gV2ViQXNzZW1ibHkncyBTdHJlYW1pbmcgQVBJIikgXAorICAg
IHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0
eXBlcyBmcm9tIHRoZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRo
ZSB3YXNtIG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5
VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2Fz
bSB0aHJlYWRpbmcgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWFrUmVmcywgdHJ1ZSwgTm9y
bWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKKyAgICB2KEJvb2wsIHVz
ZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJ
bnRsLkRhdGVUaW1lRm9ybWF0IGRheVBlcmlvZCBmZWF0dXJlLiIpIFwKKyAgICB2KEJvb2wsIHVz
ZUludGxEYXRlVGltZUZvcm1hdFJhbmdlVG9QYXJ0cywgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRo
ZSBJbnRsLkRhdGVUaW1lRm9ybWF0I2Zvcm1hdFJhbmdlVG9QYXJ0cyBmZWF0dXJlLiIpIFwKKyAg
ICB2KEJvb2wsIHVzZUF0TWV0aG9kLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1l
dGhvZCBvbiBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKKyAgICB2KEJvb2ws
IHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihC
b29sLCB1c2VUb3BMZXZlbEF3YWl0LCBmYWxzZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtl
eXdvcmQgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCisKIAogZW51bSBPcHRpb25F
cXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBmYjQ2MDAxYmFlZDJmOWMxYzg3ZTU3MjJlMjYx
NWI0MTQ1ZDE4NzAyLi5iZjBlN2M5ZWNiZmM1YjIwNzc2MzgzMTE4NmUxMWU4ODI0ODU5OWQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0z
Myw2ICszMyw4IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJU
eXBlUHJvZmlsZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKwogbmFtZXNw
YWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBTeW1ib2xUYWJsZTo6c19pbmZvID0geyAiU3lt
Ym9sVGFibGUiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KFN5bWJvbFRhYmxlKSB9OwpAQCAtMjgwLDUgKzI4MiwxNyBAQCBSZWZQdHI8VHlwZVNldD4gU3lt
Ym9sVGFibGU6Omdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogfQogCit2b2lkIFN5bWJvbFRhYmxlOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOworICAgIEJhc2U6OmR1bXAob3V0KTsKKworICAgIENvbW1hUHJpbnRlciBjb21t
YTsKKyAgICBvdXQucHJpbnQoIiA8Iik7CisgICAgZm9yIChhdXRvJiBpdGVyIDogbV9tYXApCisg
ICAgICAgIG91dC5wcmludChjb21tYSwgKml0ZXIua2V5LCAiOiAiLCBpdGVyLnZhbHVlLnZhck9m
ZnNldCgpKTsKKyAgICBvdXQucHJpbnRsbigiPiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggYTUz
ODFjY2JlZTFjYjdjM2JjY2Q2NWVhN2UwODE2ZWI0M2E1OTU2NS4uZDMzOTQzMmNiOGIwYjE0MDc0
NGZmYjcwNDdkNjI4N2RlNzIyYzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oCkBAIC03MzgsNiArNzM4LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVf
RVhQT1JUX0lORk87CiAKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7Cisg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3ltYm9sVGFibGUoVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCAzMTMw
MWY1MTY4YjVhZjljNmFhYmZkNzg4ZTA3NzA5Y2E3ZjAyMjViLi5jMTExOWU1Njc0ZmE5NDZlNDNj
NjllYjMxOTUyZWIxZTAxOGNhZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC05NCw3ICs5NCwx
MyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpwcmVwYXJlTGluayhWTSYgdm0sIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuYwogICAgIG1faW5zdGFuY2Uuc2V0KHZtLCB0aGlz
LCBpbnN0YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iamVj
dCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKK1N5bmNocm9ub3VzbmVzcyBXZWJB
c3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRp
b25Nb2RlKQoreworICAgIGxpbmtJbXBsKGdsb2JhbE9iamVjdCwgaW1wb3J0T2JqZWN0LCBjcmVh
dGlvbk1vZGUpOworICAgIHJldHVybiBTeW5jaHJvbm91c25lc3M6OlN5bmM7Cit9CisKK3ZvaWQg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlv
bk1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCmluZGV4IGE2N2YyMGJj
ZWM3MWY3NzE3ZDQxZTFjOGNiNWFhYzZmZWYwMmFhOTAuLjU4ZjljNGYyOTU2YTRhZjE3NzkwZmY5
MGM3Zjc1MWFlNDFjOTBhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApAQCAtNTksMTIgKzU5LDEzIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIGNyZWF0ZShKU0dsb2Jh
bE9iamVjdCosIFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFdhc206
Ok1vZHVsZUluZm9ybWF0aW9uJik7CiAKICAgICB2b2lkIHByZXBhcmVMaW5rKFZNJiwgSlNXZWJB
c3NlbWJseUluc3RhbmNlKik7Ci0gICAgdm9pZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1v
ZGUpOworICAgIFN5bmNocm9ub3VzbmVzcyBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3Qq
KTsKIAogICAgIEpTT2JqZWN0KiBleHBvcnRzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9leHBv
cnRzT2JqZWN0LmdldCgpOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBsaW5rSW1wbChKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSk7CiAg
ICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBj
b25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggNTYzZWZhMDU3MWI1ZDQ2MmQ5ZTY0NTA4
OWYwYmQ4Zjc3ZDE5YTc2OC4uMTQ1ZDFjZDM3NWYyMWRjOWM2ODE1NDFlYzFhNWI5ZDJiOWViM2Nm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
CkBAIC0zNjAsMTEgKzM2MCwxMSBAQCBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBKU0RPTVdpbmRv
d0Jhc2U6Om1vZHVsZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqCiAgICAgcmV0dXJu
IHByb21pc2U7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRl
ckV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU01vZHVs
ZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFs
dWUgbW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK0pTQzo6SlNWYWx1
ZSBKU0RPTVdpbmRvd0Jhc2U6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6
OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFs
dWUgc2NyaXB0RmV0Y2hlciwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVl
IHJlc3VtZU1vZGUpCiB7CiAgICAgSlNET01XaW5kb3dCYXNlKiB0aGlzT2JqZWN0ID0gSlNDOjpq
c0Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoUmVmUHRyPERv
Y3VtZW50PiBkb2N1bWVudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5kb2N1bWVudCgpKQotICAg
ICAgICByZXR1cm4gZG9jdW1lbnQtPm1vZHVsZUxvYWRlcigpLmV2YWx1YXRlKGdsb2JhbE9iamVj
dCwgbW9kdWxlTG9hZGVyLCBtb2R1bGVLZXksIG1vZHVsZVJlY29yZCwgc2NyaXB0RmV0Y2hlcik7
CisgICAgICAgIHJldHVybiBkb2N1bWVudC0+bW9kdWxlTG9hZGVyKCkuZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LCBtb2R1bGVMb2FkZXIsIG1vZHVsZUtleSwgbW9kdWxlUmVjb3JkLCBzY3JpcHRGZXRj
aGVyLCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogICAgIHJldHVybiBKU0M6OmpzVW5kZWZp
bmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNmVhODJiMDNmZThjNGViNTIwODgxZGI5YzcxNTJkOWU1ZGYxNDY4Yy4u
ZDc1ODI3MzRhZjNkNTA3MjAzYjVlNDM4YjdiZTllZWMwZmY1OTY5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTIyNyw3ICsyMjcs
NyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxl
U2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JgogICAgIHJldHVybiBsaW5rQW5kRXZhbHVhdGVN
b2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
OwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29u
c3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVN
b2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQs
IERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6
SlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKHdvcmxkLnZtKCkp
OwogCkBAIC0yNDAsMTUgKzI0MCwxNSBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVjbwogICAgIFNl
dEZvclNjb3BlPGNvbnN0IFVSTCo+IHNvdXJjZVVSTFNjb3BlKG1fc291cmNlVVJMLCAmc291cmNl
VVJMKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0
KG1fZnJhbWUsIHNvdXJjZVVSTC5zdHJpbmcoKSwganNTb3VyY2VDb2RlLmZpcnN0TGluZSgpLm9u
ZUJhc2VkSW50KCksIGpzU291cmNlQ29kZS5zdGFydENvbHVtbigpLm9uZUJhc2VkSW50KCkpOwot
ICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBtb2R1bGVSZWNvcmQuZXZhbHVhdGUoJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBtb2R1bGVSZWNvcmQuZXZhbHVhdGUo
JmxleGljYWxHbG9iYWxPYmplY3QsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKIAogICAg
IHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVsZVJlY29yZCYgbW9k
dWxlUmVjb3JkKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxl
KGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVsZVJlY29yZCYgbW9kdWxlUmVjb3JkLCBKU0M6
OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKLSAgICBy
ZXR1cm4gZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCBtb2R1bGVSZWNvcmQsIG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpKTsKKyAgICByZXR1cm4gZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCBtb2R1
bGVSZWNvcmQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1v
ZGUpOwogfQogCiBSZWY8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRDb250cm9sbGVyOjpjcmVhdGVX
b3JsZChjb25zdCBTdHJpbmcmIG5hbWUsIFdvcmxkVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDk2NDNiOTJmZjhmMDczM2E4
OGM4OWM0YjBkMTQ3MGRlYzBiY2U5MmYuLjYwODIxMmIyYjVhZWE2MjIyMmQ4ZTUxNjg2YWFkYzk5
ZGY0YWE1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmgKQEAgLTEyMyw4ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIGxpbmtB
bmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVNb2R1bGVTY3JpcHQmICwgRE9N
V3JhcHBlcldvcmxkJik7CiAgICAgSlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNj
cmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRl
TW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmLCBET01XcmFwcGVyV29ybGQm
KTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01v
ZHVsZVJlY29yZCYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwm
LCBKU0M6OkpTTW9kdWxlUmVjb3JkJiwgRE9NV3JhcHBlcldvcmxkJiwgSlNDOjpKU1ZhbHVlIGF3
YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIEpTQzo6SlNWYWx1ZSBl
dmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpTTW9kdWxlUmVjb3JkJiwgSlNDOjpKU1Zh
bHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpOwogCiAgICAgV1RGOjpU
ZXh0UG9zaXRpb24gZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXggYWE1Yjgw
YjU4NmI3OWUwZTU3NTAxY2Q1MTA3OGRmMjVhNjI1ZTVkOS4uM2I1OGFiYWM4ZGYyNTJlODFjM2Fk
YTY3YzcwOTIwYmFjYTA0ODY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgVVJMIFNjcmlwdE1v
ZHVsZUxvYWRlcjo6cmVzcG9uc2VVUkxGcm9tUmVxdWVzdFVSTChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBqc0dsb2JhbE8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0
TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2JhbE9iamVj
dCwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1ZSwgSlND
OjpKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU0M6OkpTVmFsdWUpCitKU0M6OkpTVmFsdWUg
U2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBqc0dsb2Jh
bE9iamVjdCwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1
ZSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNW
YWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAgIEpTQzo6
Vk0mIHZtID0ganNHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRN
b2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0
LCBKCiAgICAgICAgIHJldHVybiBKU0M6OnRocm93VHlwZUVycm9yKGpzR2xvYmFsT2JqZWN0LCBz
Y29wZSwgIk1vZHVsZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwuIl9zKTsKIAogICAgIGlmIChhdXRv
KiBmcmFtZSA9IG1fZG9jdW1lbnQuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLT5zY3Jp
cHQoKS5ldmFsdWF0ZU1vZHVsZShzb3VyY2VVUkwsICptb2R1bGVSZWNvcmQpOworICAgICAgICBy
ZXR1cm4gZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlTW9kdWxlKHNvdXJjZVVSTCwgKm1vZHVsZVJl
Y29yZCwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsKICAgICByZXR1cm4gSlNDOjpqc1VuZGVm
aW5lZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVs
ZUxvYWRlci5oCmluZGV4IGRlMjlkMmY0YmYwOTZiNjBjMzY5OTgwMzE2YzE0ODZiMjgyYWJmMDku
LjkzY2Y3NzgyY2UyNzcyYzNjNzYwMWNiNTkwMjhiYmZjZTJiMzdlMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCkBAIC01OCw3ICs1OCw3
IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SWRlbnRpZmllciByZXNvbHZlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWUsIEpT
Qzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
OwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1Zh
bHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIq
LCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU0M6
OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVs
ZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKTsK
ICAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBpbXBvcnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVl
IHBhcmFtZXRlcnMsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJik7CiAgICAgSlNDOjpKU09iamVj
dCogY3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNNb2R1bGVSZWNvcmQqLCBKU0M6
OkpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDUxOTg3OTdkZjM1OGNjODg2NDMyZDI1OWRlNjY0ZGFjYzNjMDk1NWEuLmNj
ZGY3MjgyYjBhNzBhZjU1ZjlmMDYwMjgwY2Y2N2ViYTk2MmZlODQgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdhaXQgcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoK
KwogMjAyMS0wMi0xNSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgYWNjZXNzb3JzCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5k
ZXggNDExNjY3NmRkMWVhODY0MzE1ODY0MDk1ZTU0NjFkMTkwZDZlNWJhMS4uZjBmY2Y4YWRhYTJh
OWY4MTA0ZGI2ZTdkYjcwNWM1MzcxMWMzNWI3YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMTMsNiAr
MTMsNyBAQCBmbGFnczoKICAgQXJyYXkucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhvZAogICBUeXBl
ZEFycmF5LnByb3RvdHlwZS5hdDogdXNlQXRNZXRob2QKICAgU3RyaW5nLnByb3RvdHlwZS5hdDog
dXNlQXRNZXRob2QKKyAgdG9wLWxldmVsLWF3YWl0OiB1c2VUb3BMZXZlbEF3YWl0CiBza2lwOgog
ICBmZWF0dXJlczoKICAgICAtIEF0b21pY3Mud2FpdEFzeW5jCkBAIC0yNSw3ICsyNiw2IEBAIHNr
aXA6CiAgICAgLSBob3N0LWdjLXJlcXVpcmVkCiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc1CiAgICAgLSByZWdleHAtbWF0Y2gtaW5kaWNlcwotICAg
IC0gdG9wLWxldmVsLWF3YWl0CiAgIHBhdGhzOgogICBmaWxlczoKICAgICAjIFNsaWdodGx5IGRp
ZmZlcmVudCBmb3JtYXR0aW5nLiBXZSBzaG91bGQgdXBkYXRlIHRlc3QyNjIgc2lkZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421155</attachid>
            <date>2021-02-21 15:44:05 -0800</date>
            <delta_ts>2021-02-21 16:02:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202484-20210221154404.patch</filename>
            <type>text/plain</type>
            <size>82087</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MzA4YmU5ZWZkM2FmNTkwYWVhMzQwNjFjM2EyMmY3OTlmMDRmMmM5Li43ZjBmNzZkNjI1MjYyYmI2
ZDU1MDk5ODg0MGUzYjU4NGU4NWEzNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAyMS0wMi0yMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIFRvcC1sZXZlbCBhd2FpdCBwcm9wb3NhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBUTEEgcHJvcG9zYWwuIFRoZSBidWxrIG9mIHRoaXMgcGF0
Y2ggaXMgYWRkaW5nIHR3byBtYWluIGZlYXR1cmVzLgorCisgICAgICAgIDEpIGNvbnZlcnRpbmcg
dGhlIEFic3RyYWN0TW9kdWxlUmVjb3JkIHRvIGJlaGF2ZSBjbG9zZXIgdG8KKworICAgICAgICAq
IEFQSS9KU0FQSUdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVj
dC5tbToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1
YXRlKToKKyAgICAgICAgKiBidWlsdGlucy9Nb2R1bGVMb2FkZXIuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLm5ld1JlZ2lzdHJ5RW50cnkpOgorICAgICAgICAobGluayk6CisgICAgICAgIChh
c3luYyByZXF1ZXN0SW1wb3J0TW9kdWxlKToKKyAgICAgICAgKG1vZHVsZUV2YWx1YXRpb24pOiBE
ZWxldGVkLgorICAgICAgICAocmVxdWVzdEltcG9ydE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFdpbGxMZWF2ZUNhbGxG
cmFtZURlYnVnSG9vayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2Vu
ZXJpY0VudW1lcmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Up
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVy
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6YWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkSW5kZXgpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEFic3RyYWN0TW9kdWxl
UmVjb3JkSW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBd2FpdCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OnVzZXNBd2FpdCk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1Ob2RlKToKKyAgICAgICAg
KiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNUb2tlbjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZvclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUF3YWl0RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcnVudGltZS9B
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVj
b3JkOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjpsaW5rKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmg6CisgICAgICAgIChKU0M6
OkFic3RyYWN0TW9kdWxlUmVjb3JkOjppbml0aWFsVmFsdWVzKToKKyAgICAgICAgKEpTQzo6QWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OmludGVybmFsRmllbGQpOgorICAgICAgICAoSlNDOjpBYnN0cmFj
dE1vZHVsZVJlY29yZDo6aW50ZXJuYWxGaWVsZCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9K
U0FzeW5jR2VuZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTTW9k
dWxlTG9hZGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKToK
KyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlTm9uVmlydHVhbCk6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9K
U01vZHVsZUxvYWRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgor
ICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5o
OgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaDoKKyAgICAgICAg
KiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5j
cHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxlOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5r
KToKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKToKKyAg
ICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmg6CisKIDIwMjEtMDItMjEg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBKU0lu
dGVybmFsUHJvbWlzZTo6dGhlbiBjYW4gZmFpbCBpZiBleGVjdXRpb24gaXMgdGVybWluYXRlZApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCmluZGV4IDgx
NjdjNWNjMGJjNGFmZDk3Yzk4NTY0OTUzZGRlZDQzMGM3MzNlNTguLjQ3MjE3OTJhZGE0MTFhOWFi
YjY1OTI4MzE4ZWVmMWU4M2M3MzJiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBJZGVudGlmaWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVs
ZUxvYWRlciosIEpTVmFsdWUga2V5VmFsdWUsIEpTVmFsdWUgcmVmZXJyZXJWYWx1ZSwgSlNWYWx1
ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJGZXRjaChKU0ds
b2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7
CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVy
dGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVS
ZWNvcmQqLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBtb2R1bGVMb2FkZXJFdmFsdWF0
ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNW
YWx1ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFs
dWUsIEpTVmFsdWUpOwogCiAgICAgSlNWYWx1ZSBsb2FkQW5kRXZhbHVhdGVKU1NjcmlwdE1vZHVs
ZShjb25zdCBKU0xvY2tIb2xkZXImLCBKU1NjcmlwdCAqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZGVlNzMyNTNmODVkNWIxMjhk
MmMyYjNhYTUyNGFjNDJiZDlhYThkZS4uZDdhNWUyZmRlNjhmN2EzY2Q3MWQ1OWU5OTQzZTc0NTUz
ZmU4MDQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lm1tCkBAIC0yMzksNyArMjM5LDcgQEAgSlNPYmplY3QqIEpTQVBJR2xvYmFsT2JqZWN0Ojpt
b2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamUKICAgICBy
ZXR1cm4gbWV0YVByb3BlcnRpZXM7CiB9CiAKLUpTVmFsdWUgSlNBUElHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTTW9kdWxl
TG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZh
bHVlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU1ZhbHVlIEpTQVBJR2xvYmFsT2JqZWN0Ojpt
b2R1bGVMb2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU01vZHVs
ZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRW
YWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSBy
ZXN1bWVNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNTgsNyArMjU4LDggQEAgSlNW
YWx1ZSBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgW21vZHVsZUxvYWRlckRlbGVnYXRlIHdpbGxF
dmFsdWF0ZU1vZHVsZTp1cmxdOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0gbW9kdWxlTG9hZGVyLT5ldmFsdWF0ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBr
ZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyKTsKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHVwZGF0ZSB0aGUgZGVsZWdhdGUgY2FsbGJhY2tzIGZvciBhc3luYyBtb2R1bGVzLgor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gbW9kdWxlTG9hZGVyLT5ldmFsdWF0ZU5vblZpcnR1YWwoZ2xv
YmFsT2JqZWN0LCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyLCBzZW50VmFs
dWUsIHJlc3VtZU1vZGUpOwogCiAgICAgaWYgKFttb2R1bGVMb2FkZXJEZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZEV2YWx1YXRlTW9kdWxlOildKQogICAgICAgICBbbW9k
dWxlTG9hZGVyRGVsZWdhdGUgZGlkRXZhbHVhdGVNb2R1bGU6dXJsXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCmluZGV4IGE4Yzg2MTVlOWQyMWVh
ZDRiYzkzNzA2ODc1NzgzN2NiZjBhNTg0ZDAuLmI1MmQ3MzA1Yzc1MGY3MjBlNjgyYzU2M2YxNjYw
NjY3OTYxMmY0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9N
b2R1bGVMb2FkZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVs
ZUxvYWRlci5qcwpAQCAtMTAwLDYgKzEwMCw4IEBAIGZ1bmN0aW9uIG5ld1JlZ2lzdHJ5RW50cnko
a2V5KQogICAgICAgICBsaW5rU3VjY2VlZGVkOiB0cnVlLAogICAgICAgICBldmFsdWF0ZWQ6IGZh
bHNlLAogICAgICAgICB0aGVuOiBAdW5kZWZpbmVkLAorICAgICAgICBpc0FzeW5jOiBmYWxzZSwK
KyAgICAgICAgY29tcGxldGlvblByb21pc2U6IEB1bmRlZmluZWQsCiAgICAgfTsKIH0KIApAQCAt
Mjg2LDExICsyODgsMTUgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwgZmV0Y2hlcikKICAgICAgICAg
Ly8gU2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSAiZGVwZW5kZW5jaWVzIiBmaWVsZCwKICAgICAg
ICAgLy8gd2UgY2FuIGNhbGwgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIHdpdGggdGhl
IGNvcnJlY3Qgb3JkZXIKICAgICAgICAgLy8gd2l0aG91dCBjb25zdHJ1Y3RpbmcgdGhlIGRlcGVu
ZGVuY3kgZ3JhcGggYnkgY2FsbGluZyBkZXBlbmRlbmN5R3JhcGguCisgICAgICAgIHZhciBoYXNB
c3luY0RlcGVuZGVuY3kgPSBmYWxzZTsKICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5
LmRlcGVuZGVuY2llczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVu
Y2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMubGluayhkZXBl
bmRlbmNpZXNbaV0sIGZldGNoZXIpOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0g
ZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
ZGVwZW5kZW5jeSA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIHRoaXMubGluayhkZXBl
bmRlbmN5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgIGhhc0FzeW5jRGVwZW5kZW5jeSB8fD0gZGVw
ZW5kZW5jeS5pc0FzeW5jOworICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJh
dGlvbkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKKyAgICAgICAgZW50cnku
aXNBc3luYyA9IHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVs
ZSwgZmV0Y2hlcikgfHwgaGFzQXN5bmNEZXBlbmRlbmN5OwogICAgIH0gY2F0Y2ggKGVycm9yKSB7
CiAgICAgICAgIGVudHJ5LmxpbmtTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgZW50cnkubGlu
a0Vycm9yID0gZXJyb3I7CkBAIC0zMDMsNyArMzA5LDYgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwg
ZmV0Y2hlcikKIGZ1bmN0aW9uIG1vZHVsZUV2YWx1YXRpb24oZW50cnksIGZldGNoZXIpCiB7CiAg
ICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2Vj
LW1vZHVsZWV2YWx1YXRpb24KLQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmIChlbnRyeS5l
dmFsdWF0ZWQpCkBAIC0zMTIsMTAgKzMxNywzOCBAQCBmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9u
KGVudHJ5LCBmZXRjaGVyKQogCiAgICAgLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3Rl
ZE1vZHVsZXNdXSBpcyBjbG9uZWQgaW50byBlbnRyeS5kZXBlbmRlbmNpZXMuCiAgICAgdmFyIGRl
cGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKLSAgICBmb3IgKHZhciBpID0gMCwgbGVu
Z3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICB0aGlz
Lm1vZHVsZUV2YWx1YXRpb24oZGVwZW5kZW5jaWVzW2ldLCBmZXRjaGVyKTsKIAotICAgIHRoaXMu
ZXZhbHVhdGUoZW50cnkua2V5LCBlbnRyeS5tb2R1bGUsIGZldGNoZXIpOworICAgIGlmICghZW50
cnkuaXNBc3luYykgeworICAgICAgICAvLyBUaGUgY29udGVudHMgb2YgdGhlIFtbUmVxdWVzdGVk
TW9kdWxlc11dIGlzIGNsb25lZCBpbnRvIGVudHJ5LmRlcGVuZGVuY2llcy4KKyAgICAgICAgLy8g
U2luY2UgbGlua2luZyBzZXRzIGlzQXN5bmMgZm9yIGFueSBzdHJvbmdseSBjb25uZWN0ZWQgY29t
cG9uZW50IHdpdGggYW4gYXN5bmMgbW9kdWxlIHdlIHNob3VsZCBvbmx5IGdldCBoZXJlIGlmIGFs
bCBvdXIgZGVwZW5kZW5jaWVzIGFyZSBhbHNvIHN5bmMuCisgICAgICAgIGZvciAodmFyIGkgPSAw
LCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAgICAgICAgQGFz
c2VydCghZGVwZW5kZW5jeS5pc0FzeW5jKTsKKyAgICAgICAgICAgIHRoaXMubW9kdWxlRXZhbHVh
dGlvbihkZXBlbmRlbmN5LCBmZXRjaGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZXZh
bHVhdGUoZW50cnkua2V5LCBlbnRyeS5tb2R1bGUsIGZldGNoZXIpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJldHVybiAoYXN5bmMgZnVuY3Rpb24gYXN5bmNNb2R1bGVFdmFsdWF0aW9uKGVudHJ5
LCBkZXBlbmRlbmNpZXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBk
ZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgYXdh
aXQgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CisKKyAg
ICAgICAgICAgIHZhciByZXN1bWVNb2RlID0gMDsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICAgICAgdmFyIGF3YWl0ZWRWYWx1ZSA9IHRoaXMuZXZhbHVhdGUoZW50cnku
a2V5LCBlbnRyeS5tb2R1bGUsIGZldGNoZXIsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKEBnZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmllbGQo
ZW50cnkubW9kdWxlLCBAYWJzdHJhY3RNb2R1bGVSZWNvcmRGaWVsZFN0YXRlKSA9PSBAR2VuZXJh
dG9yU3RhdGVFeGVjdXRpbmcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0ZWRWYWx1ZSA9IGF3YWl0
IGF3YWl0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdW1lTW9kZSA9IDA7CisgICAg
ICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICBhd2FpdGVkVmFs
dWUgPSBlOworICAgICAgICAgICAgICAgICAgICByZXN1bWVNb2RlID0gMjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pLkBjYWxsKHRoaXMsIGVudHJ5LCBkZXBl
bmRlbmNpZXMpOworICAgIH0KIH0KIAogLy8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9h
ZGVyLgpAQCAtMzY0LDI1ICszOTcsMTMgQEAgYXN5bmMgZnVuY3Rpb24gbG9hZEFuZEV2YWx1YXRl
TW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAgcmV0dXJuIGF3YWl0
IHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGtleSwgZmV0Y2hlcik7CiB9CiAKLWZ1bmN0aW9u
IHJlcXVlc3RJbXBvcnRNb2R1bGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQorYXN5bmMgZnVu
Y3Rpb24gcmVxdWVzdEltcG9ydE1vZHVsZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCiB7CiAg
ICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIGNvbnN0cnVjdG9yID0gQEludGVybmFsUHJvbWlz
ZTsKLSAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNlKGNvbnN0cnVjdG9yLCAvKiBpc0lu
dGVybmFsUHJvbWlzZSAqLyB0cnVlKTsKLSAgICBAcmVzb2x2ZVdpdGhvdXRQcm9taXNlKHRoaXMu
cmVxdWVzdFNhdGlzZnkodGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSksIHBhcmFtZXRlcnMsIGZl
dGNoZXIsIG5ldyBAU2V0KSwKLSAgICAgICAgKGVudHJ5KSA9PiB7Ci0gICAgICAgICAgICB0cnkg
ewotICAgICAgICAgICAgICAgIHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGVudHJ5LmtleSwg
ZmV0Y2hlcik7Ci0gICAgICAgICAgICAgICAgQGZ1bGZpbGxQcm9taXNlV2l0aEZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgdGhpcy5nZXRNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QoZW50cnkubW9kdWxlKSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAg
ICAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2socHJvbWlzZSwgZXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAo
cmVhc29uKSA9PiB7Ci0gICAgICAgICAgICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmlu
Z0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIHJlYXNvbik7Ci0gICAgICAgIH0pOwotICAgIHJl
dHVybiBwcm9taXNlOworICAgIHZhciBlbnRyeSA9IGF3YWl0IHRoaXMucmVxdWVzdFNhdGlzZnko
dGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSksIHBhcmFtZXRlcnMsIGZldGNoZXIsIG5ldyBAU2V0
KTsKKyAgICBhd2FpdCB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShlbnRyeS5rZXksIGZldGNo
ZXIpOworICAgIHJldHVybiB0aGlzLmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChlbnRyeS5tb2R1
bGUpOwogfQogCiBmdW5jdGlvbiBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKGtleSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwCmluZGV4IGE4ZTU2ZDBjZDM5NGJjMWI3YWMwNTI2YmU4NjY3ZWFj
OGJkZDdlNmEuLjZjYjg4Y2U3YWY1MzU3OWE5NmJjYTY0Nzg0YjI3MzFjYTU4MjhmZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgewogICAgICAgICBhdXRvIG5leHRUb0VudGVy
UG9pbnQgPSBlbnRlclBvaW50KCkubmV4dCgpOwogICAgICAgICB1bnNpZ25lZCBzd2l0Y2hUYWJs
ZUluZGV4ID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwotICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3Vt
ZW50OjpTdGF0ZSkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2Nv
ZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIGp1bXBUYWJsZS5taW4gPSAw
OwogICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IFJlZkNvdW50ZWRBcnJheTxpbnQz
Ml90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIH0KIAogICAgIGZvciAoY29uc3QgWWll
bGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3Bl
ID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpKTsKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRp
bmdUaGlzKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6RnJhbWUp
KTsKIAogICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQoZGF0YS5w
b2ludCk7CiAgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KQEAgLTI5MywxMSArMjkzLDE4
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAKIHZvaWQgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYgYnl0ZWNvZGVHZW5lcmF0b3Is
IFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uU3RyZWFt
V3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQogewotICAgIGlmIChVTkxJ
S0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKQor
ICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZp
Y2F0aW9uKCkpKSB7CisgICAgICAgIGRhdGFMb2dMbigiQnl0ZWNvZGVzIGJlZm9yZSBnZW5lcmF0
b3JpZmljYXRpb24iKTsKICAgICAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8VW5saW5rZWRD
b2RlQmxvY2tHZW5lcmF0b3I+OjpkdW1wQmxvY2soY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIFdU
Rjo6ZGF0YUZpbGUoKSk7CisgICAgfQogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24g
cGFzcyhieXRlY29kZUdlbmVyYXRvciwgY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAgICAg
cGFzcy5ydW4oKTsKKworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVm
b3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKSB7CisgICAgICAgIGRhdGFMb2dMbigiQnl0ZWNvZGVz
IGFmdGVyIGdlbmVyYXRvcmlmaWNhdGlvbiIpOworICAgICAgICBDb2RlQmxvY2tCeXRlY29kZUR1
bXBlcjxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj46OmR1bXBCbG9jayhjb2RlQmxvY2ssIGlu
c3RydWN0aW9ucywgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDVjYTM2NDlhN2MxZmM0Nzc1Nzk5NmYz
YzMyMjAyOGNmNDVlMDVjMzIuLjJhNzU4OGQ2ZDVjYzdhMzU4ZThjYzFjODkzMzFjYjkyMWY3OWI3
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgiCiAKKyNp
bmNsdWRlICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllcklu
bGluZXMuaCIKQEAgLTg2LDExICs4NywxMSBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX2dlbmVyYXRvckZpZWxkTmV4
dC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpG
aWVsZDo6TmV4dCkpKTsKICAgICBtX2dlbmVyYXRvckZpZWxkVGhpcy5zZXQobV92bSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhpcykpKTsKICAg
ICBtX2dlbmVyYXRvckZpZWxkRnJhbWUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpOwotICAgIG1fR2VuZXJhdG9yUmVz
dW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7Ci0gICAgbV9HZW5l
cmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSk7Ci0gICAg
bV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkp
KTsKLSAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkp
KTsKLSAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykp
KTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkp
OworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpOwor
ICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQobV92bSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7Cisg
ICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpDb21wbGV0ZWQpKSk7CisgICAgbV9HZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpFeGVjdXRpbmcpKSk7CiAgICAgbV9hcnJheUl0ZXJhdG9y
RmllbGRJdGVyYXRlZE9iamVjdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSk7CiAgICAgbV9hcnJh
eUl0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSk7CiAgICAgbV9hcnJheUl0ZXJhdG9y
RmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FycmF5
SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkpOwpAQCAtMTEyLDYgKzExMyw3IEBAIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1f
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJl
YXNvbjo6QXdhaXQpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2VuZXJhdG9yOjpB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiAgICAgbV91c2VJbnRsRGF0ZVRp
bWVGb3JtYXREYXlQZXJpb2Quc2V0KG1fdm0sIGpzQm9vbGVhbihPcHRpb25zOjp1c2VJbnRsRGF0
ZVRpbWVGb3JtYXREYXlQZXJpb2QoKSkpOworICAgIG1fYWJzdHJhY3RNb2R1bGVSZWNvcmRGaWVs
ZFN0YXRlLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihBYnN0cmFjdE1v
ZHVsZVJlY29yZDo6RmllbGQ6OlN0YXRlKSkpOwogfQogCiBPcHRpb25hbDxCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6bG9va3VwKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKaW5kZXggMWM5
MDgyMzhmM2EzZWVhZDNlMGIyNGM0MzVjNTY3ZjE1ZWU3MGJiNi4uNWNmNGZhNTVjM2VlZWRlZjRm
OGVhOTNjZDYxZDQ2NjFlYjY3ZjgyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBAIC00Nyw2ICs0
Nyw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8o
Z2V0UHJvbWlzZUludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKSBcCisg
ICAgbWFjcm8oZ2V0QWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFj
cm8oZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRTdHJpbmdJ
dGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRNYXBJdGVyYXRvckludGVybmFs
RmllbGQpIFwKQEAgLTE1Miw2ICsxNTMsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1lQ29uc3RhbnQg
OiBpbnQzMl90OwogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbkF3YWl0KSBc
CiAgICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZSkgXAogICAgIG1hY3Jv
KHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZCkgXAorICAgIG1hY3JvKGFic3RyYWN0TW9k
dWxlUmVjb3JkRmllbGRTdGF0ZSkgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fQllURUNPREVfSU5U
UklOU0lDX0NPTlNUQU5UU19DVVNUT01fRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oc2Vu
dGluZWxNYXBCdWNrZXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCmluZGV4IGEyNGQyNjUxYjUxYTg2ZTZjOWU3MDY5ZDc0MjYwYmNhODU3MWU0
OTEuLmNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2ViZmI5ZDcyOTc3NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtMTI5Nyw3ICsx
Mjk3LDYgQEAgb3AgOml0ZXJhdG9yX25leHQsCiAKIG9wIDp5aWVsZCwKICAgICBhcmdzOiB7Ci0g
ICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB5aWVsZFBvaW50OiB1
bnNpZ25lZCwKICAgICAgICAgYXJndW1lbnQ6IFZpcnR1YWxSZWdpc3RlciwKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRl
eCA0MjVhZjI1YjgwNDkyOWY0NjFmMGJiMTM4YzY1YThjZjU0YmI1MjQzLi4wMTZhMDI3ZmEzM2Fi
Nzk0OTQzMTJhNGE0NzdkZmM1YjJlN2EwMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVn
aXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BHZXRJbnRlcm5hbEZpZWxkLCBiYXNlKQog
ICAgIFVTRVMoT3BQdXRJbnRlcm5hbEZpZWxkLCBiYXNlLCB2YWx1ZSkKIAotICAgIFVTRVMoT3BZ
aWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKKyAgICBVU0VTKE9wWWllbGQsIGFyZ3VtZW50KQog
CiAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBp
bnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmgKaW5kZXggYjkzMjQ4MWFhNGUyNWM0N2Q3ZTdhZWU0MTFiMDg5ODMzMDBkYWUxNi4uODUz
OWY1NjJiOTMwNTQ2ZGU0YTczODY1ODMxMDBlNjE0ZmI0OTk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dy
YW1Db2RlQmxvY2suaApAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgPSBvZmZzZXQ7CiAg
ICAgfQogCisgICAgYm9vbCBpc0FzeW5jKCkgY29uc3QgeyByZXR1cm4gY29kZUZlYXR1cmVzKCkg
JiBBd2FpdEZlYXR1cmU7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgQ2FjaGVkTW9kdWxlQ29k
ZUJsb2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDFjZWFiYzBiNWVhZmUyZmRkYjA5YTJjZGNk
NTA2YzA3OWU0OWY3YWQuLmRmOGUwOTM4MDNhY2U1NGZjMDIzYzdiMTg1NGRkZGMwZTFjZWQzODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9k
dWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5lcy5o
IgpAQCAtMjc5LDcgKzI4MCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpCiAgICAgfQogICAgIAogCi0gICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
Qm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpKQorICAgIGlmIChtX2lzQXN5
bmMpCiAgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oKnRoaXMsIG1fY29kZUJsb2Nr
LmdldCgpLCBtX3dyaXRlciwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKICAgICBSRUxFQVNFX0FTU0VSVChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bUNhbGxlZUxvY2FscygpKSA8IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwpAQCAtMzg1LDYg
KzM4Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50
cyA9ICgoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJv
d0Z1bmN0aW9uKCkpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51
c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlz
QXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKSAmJiBwYXJzZU1vZGUgIT0gU291
cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCiAgICAgaWYgKGlzR2Vu
ZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CisgICAgICAg
IG1faXNBc3luYyA9IHRydWU7CiAgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlv
biBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwg
YmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAg
ICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogICAgIH0KQEAgLTQzNCw3ICs0MzYsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGVtaXRFbnRlcigpOwogCiAgICAgaWYgKGlzR2VuZXJh
dG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAgICAgICBtX2dl
bmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKKyAgICAgICAgbV9nZW5lcmF0b3JS
ZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9y
OjpBcmd1bWVudDo6R2VuZXJhdG9yKV07CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwog
CkBAIC05NTEsNiArOTUzLDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgICAgIHJl
dHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKICAg
ICB9OwogCisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXdhaXQoKSkgeworICAgICAg
ICBtX2lzQXN5bmMgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDw9IEpT
R2VuZXJhdG9yOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHM7ICsraSkKKyAgICAgICAgICAg
IGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIg
PSAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29y
ZDo6QXJndW1lbnQ6OkdlbmVyYXRvcildOworICAgIH0KKwogICAgIGVtaXRFbnRlcigpOwogCiAg
ICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKQEAgLTk1OSw3ICs5NjgsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9k
dWxlUHJvZ3JhbU5vZAogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlKTsKIAotICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEp
OyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV9jb2RlQmxvY2stPnNldE51bVBh
cmFtZXRlcnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpBcmd1
bWVudDo6TnVtYmVyT2ZBcmd1bWVudHMpICsgMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhp
cyIgKyBhc3luYyBtb2R1bGUgYXJndW1lbnRzLgogCiAgICAgLy8gTm93IGRlY2xhcmUgYWxsIHZh
cmlhYmxlcy4KIApAQCAtOTgzLDExICs5OTIsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QK
IAogICAgIC8vIFdlIGtlZXAgdGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgY29uc3RhbnQgcG9vbC4K
ICAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0gbnVsbHB0cjsKLSAgICBpZiAo
c2hvdWxkRW1pdFR5cGVQcm9maWxlckhvb2tzKCkpCisgICAgaWYgKHNob3VsZEVtaXRUeXBlUHJv
ZmlsZXJIb29rcygpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXdhaXQoKSkKICAgICAgICAg
Y29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUobW9kdWxlRW52aXJvbm1lbnRT
eW1ib2xUYWJsZSk7CiAgICAgZWxzZQogICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRk
Q29uc3RhbnRWYWx1ZShtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5jbG9uZVNjb3BlUGFy
dChtX3ZtKSk7CiAKKyAgICBpZiAobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBd2FpdCgpKSB7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQobV92bSwgbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUlu
ZGV4ID0gY29uc3RhbnRTeW1ib2xUYWJsZS0+aW5kZXgoKTsKKyAgICAgICAgZW1pdFB1dEludGVy
bmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3Ry
YWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6RnJhbWUpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkp
OworICAgIH0KKwogICAgIHB1c2hURFpWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxlcywgVERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOwogICAg
IGJvb2wgaXNXaXRoU2NvcGUgPSBmYWxzZTsKICAgICBtX2xleGljYWxTY29wZVN0YWNrLmFwcGVu
ZCh7IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUsIG1fdG9wTW9zdFNjb3BlLCBpc1dpdGhT
Y29wZSwgY29uc3RhbnRTeW1ib2xUYWJsZS0+aW5kZXgoKSB9KTsKQEAgLTM3MjksNyArMzc0NCw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWxsTGVhdmVDYWxsRnJhbWVE
ZWJ1Z0hvb2soKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1fc2NvcGVOb2RlLT5pc0Z1bmN0aW9u
Tm9kZSgpKTsKKyAgICAvLyBSRUxFQVNFX0FTU0VSVChtX3Njb3BlTm9kZS0+aXNGdW5jdGlvbk5v
ZGUoKSk7CiAgICAgZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIG1fc2NvcGVOb2Rl
LT5sYXN0TGluZSgpLCBtX3Njb3BlTm9kZS0+c3RhcnRPZmZzZXQoKSwgbV9zY29wZU5vZGUtPmxp
bmVTdGFydE9mZnNldCgpKTsKIH0KIApAQCAtNDE4MCw3ICs0MTk1LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSogbm9kZSwgRXgKIHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9kZSA/IGZvckxv
b3BOb2RlLT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsKICAgICBhdXRvIHNob3VsZEVtaXRBd2FpdCA9
IGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87Ci0gICAgQVNTRVJU
KCFpc0ZvckF3YWl0IHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkpOwor
ICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNl
TW9kZSgpKSB8fCBpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUoKSkpKTsKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1pdE5vZGUoc3Vi
amVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwpAQCAtNDc0MCw3ICs0NzU1LDcgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5
bmNHZW5lcmF0b3I6OkEKICAgICB3aGlsZSAobV93cml0ZXIucG9zaXRpb24oKSAlIE9wY29kZVNp
emU6OldpZGUzMikKICAgICAgICAgT3BOb3A6OmVtaXQ8T3Bjb2RlU2l6ZTo6TmFycm93Pih0aGlz
KTsKICNlbmRpZgotICAgIE9wWWllbGQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpLCB5aWVsZFBvaW50SW5kZXgsIGFyZ3VtZW50KTsKKyAgICBPcFlpZWxkOjplbWl0KHRoaXMs
IHlpZWxkUG9pbnRJbmRleCwgYXJndW1lbnQpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNv
bnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQu
CiAgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CkBAIC00
NzUzLDExICs0NzY4LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWll
bGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6CiAKICAgICBSZWY8TGFi
ZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29u
ZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3Ry
aWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
OjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRp
b24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJl
bCA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1v
ZGU6OlRocm93TW9kZSkpKSk7CiAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0
aHJvd0xhYmVsLmdldCgpKTsKICAgICAvLyBSZXR1cm4uCiAgICAgewpAQCAtNDk0MSwxMCArNDk1
NiwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQo
UmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAgIFJlZjxMYWJl
bD4gcmV0dXJuTGFiZWwgPSBuZXdMYWJlbCgpOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgp
OwotICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVz
dW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CiAK
LSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9u
LmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3Vt
ZU1vZGU6OlJldHVybk1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlP
cDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rl
cigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6UmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAg
IGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0KCkpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4KQEAgLTUwNDgs
OSArNTA2MywxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRl
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSkKIHsKKyAgICAv
LyBGSVhNRTogSXQgc2VlbXMgbGlrZSB0aGlzIHdpbGwgY3JlYXRlIGEgbG90IG9mIGNvbnN0YW50
cyBpZiB0aGVyZSBhcmUgbWFueSB5aWVsZCBwb2ludHMuIE1heWJlIHdlIHNob3VsZCBvcF9pbmMg
dGhlIG9sZCBzdGF0ZS4KICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpOwotICAgIGVtaXRQdXRJbnRl
cm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dl
bmVyYXRvcjo6RmllbGQ6OlN0YXRlKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVtaXRQdXRJbnRl
cm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9k
ZSgpKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6
OlN0YXRlKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRl
KSwgY29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SnVt
cFZpYUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBMYWJlbCYganVt
cFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5MTQyOGU5NjZlZjY0NDA4M2FjYjgxM2Q4NDcxMTAx
MWUwN2MxZjhmLi44NjFjMDlmMTI5OTExNmY2ZDhmNzliZjVlOWI1YzRlZDYxNjdhYTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0xMDU4LDEwICsxMDU4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJh
dG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBKU0FzeW5jR2VuZXJhdG9yOjpBc3lu
Y0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6
OlJlc3VtZU1vZGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCog
Z2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6VmFsdWUpXTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVu
dDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC0xMzI3LDYgKzEzMjcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZjxGb3JJbkNvbnRleHQ+PiBtX2Zvcklu
Q29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3Rh
Y2s7CiAgICAgICAgIHVuc2lnbmVkIG1feWllbGRQb2ludHMgeyAwIH07CisgICAgICAgIGJvb2wg
bV9pc0FzeW5jIHsgZmFsc2UgfTsKIAogICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKICAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDYzZjExYTE5MTE5OWY3Mjg3NTM1ZGM0MTJl
ZTFmNDdmMjViNGM4ZDUuLjdlYWI0NTBjNzRjZGFlZDA1NjVlN2Q5MDU4NDQ5OWY3ODE4Yzg1NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUg
Ik5vZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVjb3JkLmgi
CiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgiCkBAIC0xMzg5LDYg
KzEzOTAsMTUgQEAgc3RhdGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJhdG9y
SW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2kKICAgICByZXR1cm4gSlNBc3luY0dl
bmVyYXRvcjo6RmllbGQ6OlN0YXRlOwogfQogCitzdGF0aWMgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
OkZpZWxkIGFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50
cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkgPT0g
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5vZGUt
PmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmlu
c2ljX2Fic3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIEFic3Ry
YWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGU7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZTsK
K30KKwogc3RhdGljIEpTQXJyYXlJdGVyYXRvcjo6RmllbGQgYXJyYXlJdGVyYXRvckludGVybmFs
RmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5v
ZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6OkVt
aXR0ZXIpOwpAQCAtMTQ3NCw2ICsxNDg0LDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmlu
c2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxkCiAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QWJzdHJhY3RNb2R1bGVSZWNv
cmRJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2Rl
OworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUp
OworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+bV9l
eHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihhYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmllbGRJbmRl
eChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7Cisg
ICAgQVNTRVJUKGluZGV4IDwgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6Om51bWJlck9mSW50ZXJuYWxG
aWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSwgaW5kZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2dldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDk0MCw3ICs0OTYzLDcgQEAg
dm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291
bnQrKyksIGdlbmVyYXRvci5wcm9taXNlUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNVbmRlZmlu
ZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIo
YXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1v
ZGUpKSk7CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQs
IGludCBfbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmaXJz
dExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC00OTU3LDEx
ICs0OTgwLDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxMYWJlbD4gZ2VuZXJh
dG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgp
LCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwogCiAg
ICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
LSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJh
dG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3Vt
ZU1vZGU6OlRocm93TW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRy
dWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApp
bmRleCA3ZWY5NTkxOTk1Y2VkZWVlYzdlMTZkNjgwYzI3ZGJmYTQ5OTIwNWRjLi5hZDFiMTk1Y2Jj
ODUzMmNmZTZlNjY0YmJkMjMwYmYyYTc0ZTgwODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCisjaW5jbHVkZSAi
QWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGlt
aXplci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUNsb3N1
cmUuaCIKQEAgLTQ5LDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5o
IgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVF
bnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxpdGVyYWxQYXJz
ZXIuaCIKQEAgLTEyMDEsNyArMTIwMyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBJbnRlcnByZXRlcjo6
ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50
KiBzY29wZSkKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKEpTTW9k
dWxlUmVjb3JkKiByZWNvcmQsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCog
c2NvcGUsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgVk0m
IHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CkBAIC0xMjMxLDYgKzEyMzMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVj
dXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSgog
ICAgIGlmIChzY29wZS0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkK
ICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKIAorICAgIGNvbnN0
IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3Ry
YWN0TW9kdWxlUmVjb3JkOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHMpOwogICAgIEpTQ2Fs
bGVlKiBjYWxsZWUgPSBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3BlKTsK
ICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewpAQCAtMTI0MCw3
ICsxMjQzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9k
dWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICAgICAgaWYgKFVOTElLRUxZ
KCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNvbXBp
bGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKj4odGVtcENvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyAgICAgICAgQVNTRVJU
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IG51bWJlck9mQXJndW1lbnRzICsgMSk7CiAg
ICAgfQogCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CkBAIC0xMjQ4LDEyICsxMjUxLDIy
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dy
YW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKCiAgICAgewogICAgICAgICBEaXNhbGxvd0dDIGRp
c2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2RlQmxv
Y2sgaW4gRXhlY3V0YWJsZS4KICAgICAgICAgaml0Q29kZSA9IGV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGUoKTsKKworICAgICAgICBKU1ZhbHVlIGFyZ3NbbnVtYmVyT2ZBcmd1bWVudHNdID0g
eworICAgICAgICAgICAgcmVjb3JkLAorICAgICAgICAgICAgcmVjb3JkLT5pbnRlcm5hbEZpZWxk
KEpTTW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpLmdldCgpLAorICAgICAgICAgICAgc2VudFZh
bHVlLAorICAgICAgICAgICAgcmVzdW1lTW9kZSwKKyAgICAgICAgICAgIHNjb3BlLAorICAgICAg
ICB9OwogICAgICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1bmRl
ZmluZWRgLgogICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRpbmcK
ICAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCi0gICAgICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNV
bmRlZmluZWQoKSwgMSk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBn
bG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgbnVtYmVyT2ZBcmd1bWVudHMgKyAx
LCBhcmdzKTsKICAgICB9CiAKKyAgICByZWNvcmQtPmludGVybmFsRmllbGQoSlNNb2R1bGVSZWNv
cmQ6OkZpZWxkOjpTdGF0ZSkuc2V0KHZtLCByZWNvcmQsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dD4oSlNNb2R1bGVSZWNvcmQ6OlN0YXRlOjpFeGVjdXRpbmcpKSk7CisKICAgICAvLyBFeGVjdXRl
IHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRDb2Rl
ID09IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDRmOGJjNzg1YzUz
YjNkY2ViYWYyNTIzM2JhODUwZGI1MmFkNDFmYzUuLjBjM2VmZTEyZTUxMDUzODhmNmNmMjg1MTFk
OWVhNWU0ZWFmMzA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5k
aWYKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUmLCBK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNWYWx1ZSBleGVj
dXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1bGVQ
cm9ncmFtKEpTTW9kdWxlUmVjb3JkKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU0dsb2Jh
bE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1
ZSByZXN1bWVNb2RlKTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNWYWx1
ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBjb25z
dCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1Nj
b3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDQ5
MTBmYzdjZGFmYzViYTg3Y2YyODkzNGNhMjMzYTRmOGJjNmQ3MjMuLjU3ZDg3YmZhYTFmZTJjYWVm
YTg3Nzg2MzNlMWMzMjlhN2FlZTgyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCkBAIC00MDAsNiArNDAwLDcgQEAgcHVibGljOgogICAgIEF3YWl0RXhwck5v
ZGUqIGNyZWF0ZUF3YWl0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBhcmd1bWVudCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewogICAg
ICAgICBBU1NFUlQoYXJndW1lbnQpOworICAgICAgICB1c2VzQXdhaXQoKTsKICAgICAgICAgQXdh
aXRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXdhaXRFeHByTm9kZShsb2Nh
dGlvbiwgYXJndW1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFy
dCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwpAQCAtMTA5OSw2ICsxMTAwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9zY29wZS5tX2ZlYXR1cmVzIHw9IEV2YWxGZWF0dXJlOwog
ICAgIH0KICAgICB2b2lkIHVzZXNOZXdUYXJnZXQoKSB7IG1fc2NvcGUubV9mZWF0dXJlcyB8PSBO
ZXdUYXJnZXRGZWF0dXJlOyB9CisgICAgdm9pZCB1c2VzQXdhaXQoKSB7IG1fc2NvcGUubV9mZWF0
dXJlcyB8PSBBd2FpdEZlYXR1cmU7IH0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlSW50ZWdl
ckxpa2VOdW1iZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91YmxlIGQpCiAg
ICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2VyTm9kZShsb2Nh
dGlvbiwgZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDAyYjc4
NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRiZDM0MDkzNzcuLmE4NDk1ZDExNTBjODhhOWVhZjlk
NzRhMzFhYWViZWVhMjcxZTk5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCkBAIC0xNzcsNiArMTc3LDcgQEAgTW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dyYW1O
b2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2EKICAgICA6IFNj
b3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJjZSwg
Y2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxWYXJp
YWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywgaW5u
ZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0YXJ0
Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAgICwg
bV91c2VzQXdhaXQoZmVhdHVyZXMgJiBBd2FpdEZlYXR1cmUpCiAgICAgLCBtX21vZHVsZVNjb3Bl
RGF0YSgqV1RGTW92ZShtb2R1bGVTY29wZURhdGEpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IDA1YzE4ZWFkZjI0OTAwNTYwNTlhNGJjY2NlMTVhYmU1YWZkNDkx
NmIuLmI4YTcxNmUwMDQwOWNlYjkwYTFjOGFmODdmOWM2MWI2MzE2M2ZlZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE5OTAsNiArMTk5MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVy
biBtX2VuZENvbHVtbjsgfQorICAgICAgICBib29sIHVzZXNBd2FpdCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlc0F3YWl0OyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNjb3BlSXNG
dW5jdGlvbiA9IGZhbHNlOwogCkBAIC0yMDAyLDYgKzIwMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IG51bGxwdHIpIGZpbmFsOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAg
ICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKKyAgICAgICAgYm9vbCBtX3VzZXNBd2FpdDsKICAg
ICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGU5NWFjMDFlYzNlMmM5
YWM1MDJkODRmYzkwYzEyMjU3MDUyMGYxZjUuLjI5MDc1ZjIxMWMwZGU4N2RkNjQ0ZDBjZDRlOTMx
Nzc2YzNmZjM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTIwOSw2ICsyMDksMTEgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogewogfQogCit2
b2lkIEpTVG9rZW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJp
bnQoKm1fZGF0YS5jb29rZWQpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
RXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQsIFN0
cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2Fs
bGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4
dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKQEAgLTEzNTIsNyArMTM1Nyw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgbV9zdGF0ZW1lbnREZXB0aCsrOwogCiAgICAg
aWYgKG1hdGNoKEFXQUlUKSkgewotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRT
Y29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSwgImZvci1hd2FpdC1vZiBjYW4gb25seSBiZSB1c2Vk
IGluIGFuIGFzeW5jIGZ1bmN0aW9uIG9yIGFzeW5jIGdlbmVyYXRvciIpOworICAgICAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSB8fCAoaXNN
b2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpICYmIE9wdGlvbnM6OnVzZVRvcExldmVs
QXdhaXQoKSksICJmb3ItYXdhaXQtb2YgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBhc3luYyBmdW5j
dGlvbiBvciBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgaXNBd2FpdEZvciA9IHRydWU7CiAg
ICAgICAgIG5leHQoKTsKICAgICB9CkBAIC00MTQ0LDcgKzQxNDksOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24oVHJlZUJ1aWxkZXIm
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEFXQUlUKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGN1cnJlbnRTY29wZSgp
LT5pc0FzeW5jRnVuY3Rpb24oKSB8fCBpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUo
KSkpOworICAgIEFTU0VSVChpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUoc291cmNlUGFyc2VNb2Rl
KCkpIHx8IGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSk7CiAgICAgQVNTRVJU
KG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlICE9IEZ1bmN0aW9uUGFyc2VQaGFzZTo6
UGFyYW1ldGVycyk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OwpAQCAtNDgxNCw3ICs0ODIwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICBjYXNl
IEFXQUlUOgogICAgICAgICBpZiAobV9wYXJzZXJTdGF0ZS5mdW5jdGlvblBhcnNlUGhhc2UgPT0g
RnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzKQogICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZGYWxzZShtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQsICJDYW5ub3QgdXNlICdhd2FpdCcgd2l0
aGluIGEgcGFyYW1ldGVyIGRlZmF1bHQgZXhwcmVzc2lvbiIpOwotICAgICAgICBlbHNlIGlmIChj
dXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpKQorICAgICAg
ICBlbHNlIGlmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFy
eSgpIHx8IChpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkgJiYgT3B0aW9uczo6
dXNlVG9wTGV2ZWxBd2FpdCgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUF3YWl0RXhwcmVz
c2lvbihjb250ZXh0KTsKIAogICAgICAgICBnb3RvIGlkZW50aWZpZXJFeHByZXNzaW9uOwpAQCAt
NTMzOCw3ICs1MzQ0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBib29sIGhhc1By
ZWZpeFVwZGF0ZU9wID0gZmFsc2U7CiAgICAgdW5zaWduZWQgbGFzdE9wZXJhdG9yID0gMDsKIAot
ICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+
aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgaWYgKFVOTElLRUxZKG1hdGNoKEFXQUlU
KSAmJiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSB8
fCAoaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKSAmJiBPcHRpb25zOjp1c2VU
b3BMZXZlbEF3YWl0KCkpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlQXdhaXRFeHByZXNzaW9uKGNv
bnRleHQpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggMWNkYWZj
NTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJmNzU1ZGI2NC4uOTYzMzRiYmVhNThhMDE2ZmFmYWQz
ZjI5NmVjMDg2OTRlMjAwYTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyTW9kZXMuaApAQCAtMzIyLDggKzMyMiw5IEBAIGNvbnN0IENvZGVGZWF0dXJlcyBTdXBlclBy
b3BlcnR5RmVhdHVyZSA9ICAgICAgICAgIDEgPDwgOTsKIGNvbnN0IENvZGVGZWF0dXJlcyBOZXdU
YXJnZXRGZWF0dXJlID0gICAgICAgICAgICAgIDEgPDwgMTA7CiBjb25zdCBDb2RlRmVhdHVyZXMg
Tm9FdmFsQ2FjaGVGZWF0dXJlID0gICAgICAgICAgICAxIDw8IDExOwogY29uc3QgQ29kZUZlYXR1
cmVzIE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlID0gMSA8PCAxMjsKK2NvbnN0IENvZGVG
ZWF0dXJlcyBBd2FpdEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgIDEgPDwgMTM7CiAKLWNvbnN0
IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVy
ZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBTdHJpY3RNb2RlRmVhdHVyZSB8IFNoYWRv
d3NBcmd1bWVudHNGZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9u
Q29udGV4dEZlYXR1cmUgfCBTdXBlckNhbGxGZWF0dXJlIHwgU3VwZXJQcm9wZXJ0eUZlYXR1cmUg
fCBOZXdUYXJnZXRGZWF0dXJlIHwgTm9FdmFsQ2FjaGVGZWF0dXJlIHwgTm9uU2ltcGxlUGFyYW1l
dGVyTGlzdEZlYXR1cmU7Citjb25zdCBDb2RlRmVhdHVyZXMgQWxsRmVhdHVyZXMgPSBFdmFsRmVh
dHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IFRoaXNGZWF0dXJlIHwgU3Ry
aWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSB8IEFycm93RnVuY3Rpb25G
ZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwgU3VwZXJDYWxsRmVhdHVyZSB8
IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENhY2hlRmVh
dHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlIHwgQXdhaXRGZWF0dXJlOwogCiB0
eXBlZGVmIHVpbnQ4X3QgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggYTIxOTE3MjRl
MDQ1MWU0NmU0ZjgyODgxMGM3ZGJlM2ZhOWI3ZWI2NS4uZGU2N2E0MGJjNTUwYmU3NzY3OTg0MmE4
ZjNmNjlkZGE5NzlhYjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCkBAIC0yODMsNiArMjgzLDggQEAgc3RydWN0IEpTVG9rZW4gewogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBtX2xvY2F0aW9uOwogICAgIEpTVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3NpdGlv
bjsKICAgICBKU1RleHRQb3NpdGlvbiBtX2VuZFBvc2l0aW9uOworCisgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVcGRhdGVPcChK
U1Rva2VuVHlwZSB0b2tlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCBjNzNkYTUxNDJhMzdjZDNlYjQ1NjQ1
ZGRlYjVmYzNjODc3NjBmNTQ2Li40NWYyYjQxOTY2ZGRjYzRlZDcxNjBmYjhiMWU5MGMxNjBkZDdm
MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJh
Y3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRPYmpl
Y3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVF
bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCkBAIC01
Myw2ICs1NCwxMSBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKKyAgICBhdXRv
IHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA9PSBu
dW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5k
ZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZpZWxk
KGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOworCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRl
KGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwpAQCAtODA4LDcgKzgxNCw3IEBAIHZvaWQg
QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnNldE1vZHVsZUVudmlyb25tZW50KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMs
IG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGlu
ayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitT
eW5jaHJvbm91c25lc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5bmFt
aWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQpAQCAtODE4LDEzICs4MjQsMTQgQEAg
dm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGMKICAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVSZWNvcmQt
PmxpbmsoZ2xvYmFsT2JqZWN0LCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNtOjpDcmVhdGlv
bk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwogfQogCi1KU19F
WFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBBYnN0
cmFjdE1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3JkID0ganNEeW5h
bWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKLSAgICAgICAgcmV0dXJuIGpzTW9k
dWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4ganNNb2R1
bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKGF1dG8qIHdhc21Nb2R1bGVSZWNvcmQg
PSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQogICAg
ICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVj
b3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29y
ZC5oCmluZGV4IDQzMWI5M2NkZTFlMDQyOGJmMTUyMGY3NGUxOGQ0NTUwYjRkZTFiNDYuLmY0MTAy
ZWNhNmJiZTg1NDQ2ZGI4MWY2MzRmMGFkYjI5ODM1NjViOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaApAQCAtMjYsNyAr
MjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCi0jaW5jbHVk
ZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNywxMCArMzgsMTAgQEAgY2xhc3MgSlNN
YXA7CiAKIC8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRl
eHQtbW9kdWxlLXJlY29yZHMKLWNsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PiB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
KyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PjsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIApAQCAtNTAsNiAr
NTEsMjggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIH0KIAorICAgIHVzaW5nIEFyZ3VtZW50ID0gSlNHZW5lcmF0b3I6OkFyZ3VtZW50OworICAg
IHVzaW5nIFN0YXRlID0gSlNHZW5lcmF0b3I6OlN0YXRlOworICAgIHVzaW5nIFJlc3VtZU1vZGUg
PSBKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTsKKworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50
MzJfdCB7CisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAorICAg
ICAgICBGcmFtZSwKKyAgICB9OworCisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVybmFs
RmllbGRzID09IDQpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9mSW50
ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgewor
ICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6OkluaXQpKSwK
KyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAor
ICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgfSB9OworICAgIH0KKwogICAgIC8v
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1y
ZWNvcmRzCiAgICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKICAgICAgICAgZW51bSBjbGFzcyBUeXBl
IHsKQEAgLTEyOSw4ICsxNTIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tb2R1bGVF
bnZpcm9ubWVudC5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGxpbmsoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUg
ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGluayhKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2VudFZhbHVlLCBK
U1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJuYWxG
aWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBpbnRlcm5h
bEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0
YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBBYnN0cmFj
dE1vZHVsZVJlY29yZChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaAppbmRleCAz
ZjNiMDRlNWMyNzU2ZjUyY2VjODdmMmI1YzU5MWY4NGM0MGU1ZGFkLi5kZDQxNTY1ODU3YWUyOGYz
MGNhMGI3Y2U4NDc4ODljMzIxOGQxNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgU3VzcGVuZGVkWWllbGQgPSAtNCwKICAgICAgICAgQXdhaXRpbmdSZXR1cm4gPSAtNSwK
ICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5l
cmF0b3JTdGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0
ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3RhdGU6
OkNvbXBsZXRlZCkpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5
bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykpOwogCiAgICAgZW51bSBjbGFzcyBBc3luY0dlbmVy
YXRvclN1c3BlbmRSZWFzb24gOiBpbnQzMl90IHsKICAgICAgICAgTm9uZSA9IDAsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAppbmRleCA3ODE2NjY5MjRjYTQy
M2Q3Y2RhNWZkZjZhMDM0MGEwNDI3NTdmMTBkLi4yNTc2MTAyZjU0YzliMTc1YzQ3NmJhNzE3MTU1
Y2ZlM2VkMDEwMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJh
dG9yLmgKQEAgLTQ2LDI2ICs0NiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2bS5nZW5l
cmF0b3JTcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yUmVz
dW1lTW9kZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgUmVzdW1lTW9kZSA6IGludDMyX3Qg
ewogICAgICAgICBOb3JtYWxNb2RlID0gMCwKICAgICAgICAgUmV0dXJuTW9kZSA9IDEsCiAgICAg
ICAgIFRocm93TW9kZSA9IDIKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JTdGF0
ZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgU3RhdGUgOiBpbnQzMl90IHsKICAgICAgICAg
Q29tcGxldGVkID0gLTEsCiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgICAgICBJbml0ID0g
MCwKICAgICB9OwogCiAgICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUs
IEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4K
LSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgZW51bSBj
bGFzcyBBcmd1bWVudCA6IGludDMyX3QgewogICAgICAgICBUaGlzVmFsdWUgPSAwLAogICAgICAg
ICBHZW5lcmF0b3IgPSAxLAogICAgICAgICBTdGF0ZSA9IDIsCiAgICAgICAgIFZhbHVlID0gMywK
ICAgICAgICAgUmVzdW1lTW9kZSA9IDQsCiAgICAgICAgIEZyYW1lID0gNSwKKyAgICAgICAgTnVt
YmVyT2ZBcmd1bWVudHMgPSBGcmFtZSwKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBGaWVsZCA6
IHVpbnQzMl90IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIHsgewogICAgICAgICAgICAganNOdWxsKCksCi0gICAgICAgICAgICBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLAorICAgICAgICAgICAganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6OkluaXQpKSwKICAgICAgICAgICAgIGpz
VW5kZWZpbmVkKCksCiAgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAogICAgICAgICAgICAganNV
bmRlZmluZWQoKSwKQEAgLTEwMSw0ICsxMDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mKTsKIH07CiAKK09WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZPUl9F
TlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKEpTR2VuZXJhdG9yOjpBcmd1bWVudCk7CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggZDVkNDM2YzI2MWVlODNlMTgwMDZkYzliM2IzNTI4M2M3Y2VhYmYxMy4u
M2U5YmQ2MjQ1OTMzMWI4YTUxNjI2MjIzMTQ5OGFkZjJlMTEzNzI1OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzAsNyArMjMwLDcg
QEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIEpTT2JqZWN0
KiAoKk1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzUHRyKShKU0dsb2JhbE9i
amVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVl
KTsKICAgICBNb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllc1B0ciBtb2R1bGVM
b2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllczsKIAotICAgIHR5cGVkZWYgSlNWYWx1ZSAo
Kk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVy
KiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTW9k
dWxlTG9hZGVyRXZhbHVhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBK
U1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyLCBKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICBNb2R1
bGVMb2FkZXJFdmFsdWF0ZVB0ciBtb2R1bGVMb2FkZXJFdmFsdWF0ZTsKIAogICAgIHR5cGVkZWYg
dm9pZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpTUHJv
bWlzZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggNzdiYjJiMGI1OWQ3ZDZm
YmY2MDU2OTc3MGM1YzZjMjkyODRiNDJjOS4uNzcxMGZkMzA3MjMyNDc4MTUyYzU1YTQwNDE3MDEz
NjJhY2Q3ZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlTG9hZGVyLmNwcApAQCAtMzA3LDIwICszMDcsMjAgQEAgSlNPYmplY3QqIEpTTW9kdWxlTG9h
ZGVyOjpjcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWMKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgpLCBn
bG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiB9CiAKLUpTVmFs
dWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNW
YWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2Rl
KQogewogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwg
IkxvYWRlciBbZXZhbHVhdGVdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxPYmplY3QsIGtl
eSkpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
bW9kdWxlTG9hZGVyRXZhbHVhdGUpCi0gICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwg
dGhpcywga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgICAgIHJl
dHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRl
ckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgdGhpcywga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2Ny
aXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKIAotICAgIHJldHVybiBldmFsdWF0
ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRG
ZXRjaGVyKTsKKyAgICByZXR1cm4gZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5
LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
KTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGVOb25WaXJ0dWFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFs
dWUsIEpTVmFsdWUpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNWYWx1ZSBtb2R1bGVSZWNv
cmRWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkK
IHsKICAgICBpZiAoYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFjdE1v
ZHVsZVJlY29yZCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgbW9kdWxlUmVjb3JkVmFsdWUpKQotICAg
ICAgICByZXR1cm4gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOworICAgICAg
ICByZXR1cm4gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIHNlbnRWYWx1ZSwg
cmVzdW1lTW9kZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTM2NSw2ICsz
NjUsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obW9kdWxlTG9hZGVyUGFyc2VNb2R1bGUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5OjppbnN0YW50aWF0ZShnbG9i
YWxPYmplY3QsIHByb21pc2UsIG1vZHVsZUtleSwganNTb3VyY2VDb2RlKSkpOwogI2VuZGlmCiAK
KyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJsb2Fk
ZXIgW3BhcnNpbmddICIsIG1vZHVsZUtleSk7CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0g
cGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgc291cmNlQ29kZSwgSWRlbnRp
ZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLApAQCAtNDA5LDEwICs0MTEs
MTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlck1vZHVsZURlY2xhcmF0
aW9uSW5zdGFudGlhdGlvbiwgKEpTR2xvYmFsT2IKIAogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6
OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwgIkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVjb3Jk
LT5tb2R1bGVLZXkoKSk7CiAKLSAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIHN5bmMgPSBtb2R1bGVSZWNvcmQtPmxp
bmsoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oc3luYyA9PSBTeW5jaHJvbm91c25lc3M6OkFzeW5jKSk7CiB9CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTQ4MSw3ICs0ODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obW9k
dWxlTG9hZGVyRXZhbHVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQogICAg
IEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVyKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDIpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggMWUwNmI3NzBhMWY4YWNiYTM0MTBk
YzIxYWVlMGZmZTAxYWVlOWMyMC4uYjNkODVhOTVjZmZmYzY5MTA5NGVkOTYyM2FkZDFlYjhlYjhl
ZmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVM
b2FkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRl
ci5oCkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogY3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNNb2R1bGVSZWNv
cmQqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgLy8gQWRkaXRpb25hbCBwbGF0Zm9y
bSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCi0gICAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKTsKLSAgICBKU1ZhbHVlIGV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KTsKKyAgICBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBrZXksIEpT
VmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTVmFsdWUgc2VudFZh
bHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIEpTVmFsdWUgZXZhbHVhdGVOb25WaXJ0dWFs
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUp
OwogCiAgICAgLy8gVXRpbGl0eSBmdW5jdGlvbnMuCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QqIGdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbW9k
dWxlUmVjb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxl
UmVjb3JkLmNwcAppbmRleCAxZDUwNzU4NzM2YmI4NDhlZmQwMjUxZDE4MjQ5OTI5YWNhZjJhN2Yw
Li43YjZiMDY5ODgwNGMyNDg2NmYxMTAwMTc3ZTgyZmEzYTRhNWFmYzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2Vs
bCwgVmlzaXRvciYgdmlzaXRvcikKIAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTTW9kdWxlUmVj
b3JkKTsKIAotdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitTeW5jaHJvbm91c25lc3MgSlNNb2R1bGVS
ZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05MCwxMSArOTAsMTMgQEAgdm9pZCBK
U01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpCiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFleGVjdXRhYmxlKTsKICAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgdGhyb3dT
eW50YXhFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwogICAgIH0KICAgICBpbnN0YW50aWF0ZURl
Y2xhcmF0aW9ucyhnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUsIHNjcmlwdEZldGNoZXIpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgU3luY2hyb25vdXNuZXNzOjpTeW5jKTsKICAgICBtX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CisKKyAgICByZXR1cm4gZXhlY3V0
YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCktPmlzQXN5bmMoKSA/IFN5bmNo
cm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiB9CiAKIHZvaWQgSlNN
b2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjM4LDE0ICsyNDAsMTYgQEAgdm9pZCBKU01v
ZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgTW9kdWwKICAgICBzZXRNb2R1bGVFbnZpcm9ubWVudChnbG9iYWxPYmplY3QsIG1v
ZHVsZUVudmlyb25tZW50KTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXZhbHVhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV2
YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2VudFZhbHVlLCBK
U1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgaWYgKCFtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxl
KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOwotICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUuY2xlYXIoKTsKLSAgICByZXR1cm4gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVNb2R1bGVQcm9n
cmFtKGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQoKSk7CisgICAg
SlNWYWx1ZSByZXN1bHRPckF3YWl0ZWRWYWx1ZSA9IHZtLmludGVycHJldGVyLT5leGVjdXRlTW9k
dWxlUHJvZ3JhbSh0aGlzLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIG1vZHVsZUVudmlyb25t
ZW50KCksIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgaWYgKEpTVmFsdWUgc3RhdGUgPSBp
bnRlcm5hbEZpZWxkKEZpZWxkOjpTdGF0ZSkuZ2V0KCk7ICFzdGF0ZS5pc051bWJlcigpIHx8IHN0
YXRlLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFN0YXRlOjpFeGVjdXRpbmcp
KQorICAgICAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAgcmV0dXJu
IHJlc3VsdE9yQXdhaXRlZFZhbHVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDhhNTUwN2Fm
NGFjNmI0MTY4NTA5ODc4ODYxMWIxMTZlOGVjNmFlZjMuLjAxYWUwMGMwOTNkMWIyN2FhN2I3Njli
ZGFkYmE5NTgxNDM5NjY3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
ICAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZNJiwg
U3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0gICAg
dm9pZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0Kik7CisgICAg
U3luY2hyb25vdXNuZXNzIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKIAogICAgIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7IH0K
ICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDc4NTEx
NWM5NGI1YzBlNjkxM2VjNDM2YjcxNzFiOTU1Zjc5OTY5MzcuLjU5NTQzNzM1YWQxNTM1NThkNjY2
NjJiZDI5YmMyNWEzZjI5ODM4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjYsNiArNjYsNyBAQCBw
dWJsaWM6CiAgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWlyZW1l
bnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0TW9k
ZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1
bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayogdW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KKyAgICBib29sIGlzQXN5bmMoKSBjb25zdCB7IHJldHVy
biBmZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9kdWxl
RW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRTeW1i
b2xUYWJsZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCBhZjdjNzI0OTcxNzM1ZjA3NzA0YTVkMDZhZmJhMmQ3NmViYjZhNTAzLi5h
ODA2NzhiZDU4NzAzNTkwMDRmMDM3Y2JlMDg2ZGQxNDRjYjFjNTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4MywxNiArNDgzLDcgQEAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihPcHRpb25SYW5nZSwg
d2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZSwgMCwgTm9ybWFsLCAid2FzbSBmdW5jdGlv
biBpbmRleCByYW5nZSB0byBhbGxvdyBjb21waWxhdGlvbiBvbiwgZS5nLiAxOjEwMCIpIFwKICAg
ICB2KEJvb2wsIHdhc21MTEludFRpZXJzVXBUb0JCUSwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdihTaXplLCB3ZWJBc3NlbWJseUJCUUFpck1vZGVUaHJlc2hvbGQsIGlzSU9TKCkgPyAo
MTAgKiBNQikgOiAwLCBOb3JtYWwsICJJZiAwLCB3ZSBhbHdheXMgdXNlIEJCUSBBaXIuIElmIFdh
c20gbW9kdWxlIGNvZGUgc2l6ZSBoaXRzIHRoaXMgdGhyZXNob2xkLCB3ZSBjb21waWxlIFdhc20g
bW9kdWxlIHdpdGggQjMgQkJRIG1vZGUuIikgXAotICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlT
dHJlYW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJseSdzIFN0cmVh
bWluZyBBUEkiKSBcCiAgICAgdihCb29sLCB1c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFzaGlu
ZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9kdWxlcyBhcmUgaWRlbnRp
ZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYgYXZhaWxhYmxlLiIpIFwK
LSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1ZSwgTm9ybWFsLCAiQWxs
b3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAotICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJv
bSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCi0gICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZyb20gdGhl
IHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAotICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIHRydWUs
IE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCi0gICAgdihCb29s
LCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0
aGUgSW50bC5EYXRlVGltZUZvcm1hdCBkYXlQZXJpb2QgZmVhdHVyZS4iKSBcCi0gICAgdihCb29s
LCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXRSYW5nZVRvUGFydHMsIHRydWUsIE5vcm1hbCwgIkV4cG9z
ZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRSYW5nZVRvUGFydHMgZmVhdHVyZS4iKSBc
Ci0gICAgdihCb29sLCB1c2VBdE1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgYXQo
KSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmluZy4iKSBcCi0gICAgdihC
b29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0
cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJ
ZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1
bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3JtYWws
ICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdpdGgg
YSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1pbmlWTU1vZGUs
IGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0gbW9kZSBvbi4i
KSBcCkBAIC01MTMsOCArNTA0LDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRD
YWdlKCk7CiAgICAgdihCb29sLCB1c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxvY2F0
aW9uLCBmYWxzZSwgTm9ybWFsLCAiRm9yIHRoZSBhcm02NCBFeGVjdXRhYmxlQWxsb2NhdG9yLCBp
ZiB0cnVlLCBzZWxlY3Qgd2hpY2ggcmVnaW9uIHRvIHVzZSByYW5kb21seS4gVGhpcyBpcyB1c2Vm
dWwgZm9yIHRlc3RpbmcgdGhhdCBqdW1wIGlzbGFuZHMgd29yay4iKSBcCiAgICAgdihCb29sLCBl
eHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdl
IHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGlu
ZyBwcm9maWxlciBhbmQgdGhlIHN1cGVyIHNhbXBsZXIiKSBcCiAgICAgdihCb29sLCBhbGxvd1Vu
c3VwcG9ydGVkVGllcnMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIG5vdCBkaXNh
YmxlIERGRyBvciBGVEwgd2hlbiBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBpcyBlbmFibGVkLiIp
IFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNp
ZGUgY2xhc3Nlcy4iKSBcCi0gICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2Rz
IGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJvbUluZmluaXRl
TG9vcHNGb3JGdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihTaXplLCBl
YXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5vcm1hbCwgIldo
ZW4gcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1ZSwgdGhpcyBk
ZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1biBmb3IgYmVm
b3JlIGp1c3QgcmV0dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6ZXIgc28gaXQg
ZG9lc24ndCBnZXQgc3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYoQm9vbCwgdXNl
TElDTUZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTUyMiw4ICs1MTEsMjQg
QEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihEb3VibGUs
IGFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHksIDAuNSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihCb29sLCBleHBvc2VDdXN0b21TZXR0ZXJzT25HbG9iYWxPYmplY3RGb3JUZXN0aW5nLCBm
YWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VKSVRDYWdlLCBjYW5Vc2VK
SVRDYWdlKCksIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKKyAgICAvKiBGZWF0dXJlIEZsYWdz
ICovXAorICAgIFwKICAgICB2KEJvb2wsIHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgc3Rh
dGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHVzZVByaXZh
dGVTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3
aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBzdGF0aWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMu
IikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGlu
c2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1ldGhv
ZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlTdHJlYW1p
bmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJseSdzIFN0cmVhbWluZyBB
UEkiKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMsIHRydWUsIE5vcm1h
bCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJlbmNlcyBzcGVjLiIpIFwKKyAgICB2
KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5
cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBm
cm9tIHRoZSB3YXNtIHRocmVhZGluZyBzcGVjLiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYWtSZWZz
LCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAorICAg
IHYoQm9vbCwgdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kLCB0cnVlLCBOb3JtYWwsICJF
eHBvc2UgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgZGF5UGVyaW9kIGZlYXR1cmUuIikgXAorICAg
IHYoQm9vbCwgdXNlSW50bERhdGVUaW1lRm9ybWF0UmFuZ2VUb1BhcnRzLCB0cnVlLCBOb3JtYWws
ICJFeHBvc2UgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQjZm9ybWF0UmFuZ2VUb1BhcnRzIGZlYXR1
cmUuIikgXAorICAgIHYoQm9vbCwgdXNlQXRNZXRob2QsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2Ug
dGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJpbmcuIikgXAor
ICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKKyAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIGZhbHNlLCBOb3JtYWwsICJhbGxvdyB0
aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIpIFwKKwogCiBl
bnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDMyZTMxYmI5MGMzNjIxNjc4
YWQ4NzlkOTM5MWI0NmFkN2IzOGMzZmUuLjFjMjdhZDQ5NmNjZDczNzYxMGZhYTAyYTE5MDMwNWI2
ZDUxNGRmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5o
PgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFN5bWJvbFRhYmxlOjpzX2lu
Zm8gPSB7ICJTeW1ib2xUYWJsZSIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoU3ltYm9sVGFibGUpIH07CkBAIC0yODMsNSArMjg1LDE3IEBAIFJlZlB0cjxU
eXBlU2V0PiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYKICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiB9CiAKK3ZvaWQgU3ltYm9s
VGFibGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgQmFzZTo6ZHVtcChvdXQpOworCisgICAgQ29tbWFQ
cmludGVyIGNvbW1hOworICAgIG91dC5wcmludCgiIDwiKTsKKyAgICBmb3IgKGF1dG8mIGl0ZXIg
OiBtX21hcCkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqaXRlci5rZXksICI6ICIsIGl0ZXIu
dmFsdWUudmFyT2Zmc2V0KCkpOworICAgIG91dC5wcmludGxuKCI+Iik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAppbmRleCAwMTc5NmM3ZGVkNjM0MzdjNWY2MzM3MmRiYjE2NGI3YzI5OTIwMTg3Li5lNWEyMDY1
YzJmNTRjNmNkNzI3Nzk2MDc5ZGFmMDQ5ODYzZmEwYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTczOCw2ICs3MzgsNyBAQCBwdWJsaWM6CiAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoVk0mKTsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xUYWJsZShWTSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3Bw
CmluZGV4IGI1NTY4NmViZTY1YzFkNmI5M2I2NzI4NTc3MjczOTFjOGZlY2RkNDguLjI5MTcyNDk3
Y2MxMTM0Njg2YWE4YmJlYWRlMGExZWUxYTRhMTZkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAg
LTk3LDcgKzk3LDEzIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OnByZXBhcmVMaW5r
KFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jCiAgICAgbV9pbnN0YW5jZS5z
ZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBKU09iamVjdCog
aW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQorU3luY2hyb25v
dXNuZXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9u
TW9kZSBjcmVhdGlvbk1vZGUpCit7CisgICAgbGlua0ltcGwoZ2xvYmFsT2JqZWN0LCBpbXBvcnRP
YmplY3QsIGNyZWF0aW9uTW9kZSk7CisgICAgcmV0dXJuIFN5bmNocm9ub3VzbmVzczo6U3luYzsK
K30KKwordm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRpb25N
b2RlIGNyZWF0aW9uTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKaW5k
ZXggMzcyYmY5YjM3ODdmOGM3Y2FiYjcwOTBiNmJjYTgwMmE2ZTRhNThlMC4uNmM5OTkyMTFiZTA0
MDY4ZTFmZjIxNDhmNzY2YTdjYTFlODViNDU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCkBAIC01OSwxMiAr
NTksMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1vZHVsZVJlY29yZCogY3Jl
YXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKIAogICAgIHZvaWQgcHJlcGFyZUxpbmso
Vk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKLSAgICB2b2lkIGxpbmsoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206
OkNyZWF0aW9uTW9kZSk7CisgICAgU3luY2hyb25vdXNuZXNzIGxpbmsoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNy
ZWF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShKU0ds
b2JhbE9iamVjdCopOwogCiAgICAgSlNPYmplY3QqIGV4cG9ydHNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBtX2V4cG9ydHNPYmplY3QuZ2V0KCk7IH0KIAogcHJpdmF0ZToKKyAgICB2b2lkIGxpbmtJ
bXBsKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRp
b25Nb2RlKTsKICAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29yZChWTSYsIFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmpl
Y3QqLCBWTSYsIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZlYTgyYjAzZmU4
YzRlYjUyMDg4MWRiOWM3MTUyZDllNWRmMTQ2OGMuLmQ3NTgyNzM0YWYzZDUwNzIwM2I1ZTQzOGI3
YmU5ZWVjMGZmNTk2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlw
dCYKICAgICByZXR1cm4gbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVT
Y3JpcHQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVs
ZVJlY29yZCYgbW9kdWxlUmVjb3JkLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorSlNDOjpKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJM
LCBKU01vZHVsZVJlY29yZCYgbW9kdWxlUmVjb3JkLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBK
U0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIApAQCAtMjQwLDE1ICsyNDAsMTUgQEAg
SlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYg
c291cmNlVVJMLCBKU01vZHVsZVJlY28KICAgICBTZXRGb3JTY29wZTxjb25zdCBVUkwqPiBzb3Vy
Y2VVUkxTY29wZShtX3NvdXJjZVVSTCwgJnNvdXJjZVVSTCk7CiAKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwuc3RyaW5n
KCksIGpzU291cmNlQ29kZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpLCBqc1NvdXJjZUNvZGUu
c3RhcnRDb2x1bW4oKS5vbmVCYXNlZEludCgpKTsKLSAgICBhdXRvIHJldHVyblZhbHVlID0gbW9k
dWxlUmVjb3JkLmV2YWx1YXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJldHVy
blZhbHVlID0gbW9kdWxlUmVjb3JkLmV2YWx1YXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBhd2Fp
dGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RXZhbHVhdGVTY3JpcHQobV9mcmFtZSk7CiAKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAK
LUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwm
IHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCkKK0pTQzo6SlNWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNN
b2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlND
OjpKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlTW9kdWxlKHNvdXJj
ZVVSTCwgbW9kdWxlUmVjb3JkLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJu
IGV2YWx1YXRlTW9kdWxlKHNvdXJjZVVSTCwgbW9kdWxlUmVjb3JkLCBtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsKIH0KIAogUmVmPERPTVdyYXBwZXJX
b3JsZD4gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoY29uc3QgU3RyaW5nJiBuYW1lLCBX
b3JsZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaAppbmRleCA5NjQzYjkyZmY4ZjA3MzNhODhjODljNGIwZDE0NzBkZWMwYmNlOTJmLi42
MDgyMTJiMmI1YWVhNjIyMjJkOGU1MTY4NmFhZGM5OWRmNGFhNTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMjMsOCArMTIzLDggQEAg
cHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldv
cmxkKExvYWRhYmxlTW9kdWxlU2NyaXB0JiAsIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIEpTQzo6
SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQm
KTsKIAotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpT
TW9kdWxlUmVjb3JkJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1
YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmKTsKKyAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYsIERP
TVdyYXBwZXJXb3JsZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSBy
ZXN1bWVNb2RlKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwg
SlNDOjpKU01vZHVsZVJlY29yZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNW
YWx1ZSByZXN1bWVNb2RlKTsKIAogICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBv
c2l0aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IGQxZWU3MWI5YjU1ZjA1NmJjMzU2YTY5NmYzMDFlODRk
YWRlNzdjZjguLjQ3NTFlMGEwMGJiYzg0NzM4MTRiMGU2MDdlMDBmYmI4NTdlZWQ4ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApA
QCAtMjIwLDcgKzIyMCw3IEBAIFVSTCBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc3BvbnNlVVJMRnJv
bVJlcXVlc3RVUkwoSlNDOjpKU0dsb2JhbE9iamVjdCYganNHbG9iYWxPCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1
ZSwgSlNDOjpKU1ZhbHVlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNv
cmRWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpT
VmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBKU0M6OlZNJiB2bSA9IGpzR2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIzOCwx
MSArMjM4LDExIEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKCiAKICAgICBpZiAobV9vd25lclR5
cGUgPT0gT3duZXJUeXBlOjpEb2N1bWVudCkgewogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBk
b3duY2FzdDxEb2N1bWVudD4obV9jb250ZXh0KS5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJu
IGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZU1vZHVsZShzb3VyY2VVUkwsICptb2R1bGVSZWNvcmQp
OworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZU1vZHVsZShzb3Vy
Y2VVUkwsICptb2R1bGVSZWNvcmQsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgQVNTRVJUKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihtX2Nv
bnRleHQpKTsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdCA9IGRvd25jYXN0PFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlPihtX2NvbnRleHQpLnNjcmlwdCgpKQotICAgICAgICAgICAgcmV0dXJu
IHNjcmlwdC0+ZXZhbHVhdGVNb2R1bGUoKm1vZHVsZVJlY29yZCk7CisgICAgICAgICAgICByZXR1
cm4gc2NyaXB0LT5ldmFsdWF0ZU1vZHVsZSgqbW9kdWxlUmVjb3JkLCBhd2FpdGVkVmFsdWUsIHJl
c3VtZU1vZGUpOwogICAgIH0KICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAppbmRleCBk
ZjM0ZDU1MWExMWNkOThmNGUyMzZhMmFhMWY0ODI3OWQ5NjRjNjg1Li5lODJhOGJiNDMzNzFlYTZj
YWI4ZmNmYTg0MjRkODdlYjNjOTg2MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAg
ICBKU0M6OklkZW50aWZpZXIgcmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01v
ZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgaW1wb3J0
ZXJNb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0M6OkpTSW50
ZXJuYWxQcm9taXNlKiBmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxv
YWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBK
U0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1v
ZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1
ZSBtb2R1bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU0M6OkpTVmFsdWUg
YXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSk7CiAgICAgSlNDOjpKU0ludGVy
bmFsUHJvbWlzZSogaW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9k
dWxlTG9hZGVyKiwgSlNDOjpKU1N0cmluZyosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25z
dCBKU0M6OlNvdXJjZU9yaWdpbiYpOwogICAgIEpTQzo6SlNPYmplY3QqIGNyZWF0ZUltcG9ydE1l
dGFQcm9wZXJ0aWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OkpTTW9kdWxlUmVjb3JkKiwgSlNDOjpKU1ZhbHVlKTsKIApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4NTRm
OWZiMzVlNmRiMGUzNWE5MjExNzFmOWIzMTI2ZjM1ZDhjZThhLi4yYTYzMDI4NzU2NGZlYTRlMjA0
YWYyYjRhMjFmZmJlY2NmZWI0ZTIzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTAyLTIxICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0aGUg
VG9wLWxldmVsIGF3YWl0IHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDItMjEgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGdyYWRl
IHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAyZmNlYjQ0ODczZmNjYmRhMDExNWU1ZGZkM2Ix
Y2JhMjQ3YzgyM2Y2Li44NTVkNTA2YWM0YjJmYTBmMjY3MjcwZGY2OTU3MjY2ZmVlMDZhNDcwIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCkBAIC0xNCw2ICsxNCw3IEBAIGZsYWdzOgogICBBcnJheS5wcm90b3R5
cGUuYXQ6IHVzZUF0TWV0aG9kCiAgIFR5cGVkQXJyYXkucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhv
ZAogICBTdHJpbmcucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhvZAorICB0b3AtbGV2ZWwtYXdhaXQ6
IHVzZVRvcExldmVsQXdhaXQKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gQXRvbWljcy53YWl0
QXN5bmMKQEAgLTI2LDggKzI3LDYgQEAgc2tpcDoKIAogICAgICMgRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNDIKICAgICAtIHJlZ2V4cC1tYXRjaC1p
bmRpY2VzCi0KLSAgICAtIHRvcC1sZXZlbC1hd2FpdAogICBwYXRoczoKICAgZmlsZXM6CiAgICAg
IyBTbGlnaHRseSBkaWZmZXJlbnQgZm9ybWF0dGluZy4gV2Ugc2hvdWxkIHVwZGF0ZSB0ZXN0MjYy
IHNpZGUuCg==
</data>
<flag name="commit-queue"
          id="439927"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421156</attachid>
            <date>2021-02-21 15:53:44 -0800</date>
            <delta_ts>2021-02-21 16:12:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202484-20210221155343.patch</filename>
            <type>text/plain</type>
            <size>82868</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MzA4YmU5ZWZkM2FmNTkwYWVhMzQwNjFjM2EyMmY3OTlmMDRmMmM5Li45MTQzMDBkOGI0ZjM0MTlm
YjNmNmU4OWMyNzg1MmNjNWNhMGVhNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdhaXQgcHJvcG9zYWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgVExBIHByb3Bvc2FsLiBUaGUgYnVsayBvZiB0aGlzIHBh
dGNoIGlzIGFkZGluZyBhIGNvdXBsZSBvZiBtYWluIHBhcnRzLgorCisgICAgICAgIDEpIGNvbnZl
cnRpbmcgdGhlIEFic3RyYWN0TW9kdWxlUmVjb3JkIHRvIGNvbnRhaW4gbWFueSBvZiBzYW1lIGlu
dGVybmFsIGZpZWxkcyBhcyBKU0dlbmVyYXRvciBzbyBtdWNoIG9mIHRoZSBhc3luYyBjb2RlZ2Vu
IGNhbiBiZSBzaGFyZWQuCisgICAgICAgIDIpIGhhdmluZyB0aGUgbGluayBwaGFzZSBvZiB0aGUg
bW9kdWxlIGxvYWRlciByZWNvcmQgd2hldGhlciBhIG1vZHVsZSBzdWJncmFwaCBpcyBhc3luYy4K
KyAgICAgICAgMykgdGVhY2hpbmcgdGhlIG1vZHVsZSBsb2FkZXIgdGhhdCBldmFsdWF0aW5nIGEg
bW9kdWxlIG1heSByZXF1aXJlIG1vcmUgdGhhbiBvbmUgdm0gZW50cnkgYW5kIGZvcndhcmRpbmcg
dGhlIGF3YWl0ZWQgdmFsdWUgYXMgd2VsbCBhcyB0aGUgcmVzdW1lIG1vZGUgdG8gdGhlIFZNLgor
CisgICAgICAgIE9uZSB0aGluZyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYWJvdXQgdGhpcyBw
YXRjaCBpcyB0aGF0IG1vZHVsZUV2YWx1YXRpb24gbm93ICpzb21ldGltZXMqICh3aGVuIGEgc3Ry
b25nbHkgY29ubmVjdGVkIHN1YmdyYXBoIGlzIGFzeW5jKSB3aWxsIHJldHVybiBhIHByb21pc2Uu
IFRoaXMgaGFwcGVuZWQgdG8gYWxyZWFkeSBiZSBhd2FpdGVkIHdoZW4gY2FsbGVkIGZyb20gbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlICh1bm5lY2Vzc2FyaWx5IGJlZm9yZSkgYnV0IG5vdyBhbHNvIG5l
ZWRzIHRvIGJlIGhhbmRsZWQgYnkgcmVxdWVzdEltcG9ydE1vZHVsZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSBldmVyeSB0ZXN0IEkgY2FtZSB1cCB3aXRoIHdhcyBzdWJzdW1lZCBi
eSB0ZXN0cyBhbHJlYWR5IGluIHRlc3QyNjIuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgIChK
U0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICog
YnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdp
c3RyeUVudHJ5KToKKyAgICAgICAgKGxpbmspOgorICAgICAgICAoYXN5bmMgcmVxdWVzdEltcG9y
dE1vZHVsZSk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KHJlcXVlc3RJbXBvcnRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWxsTGVhdmVDYWxsRnJhbWVEZWJ1Z0hvb2spOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0TW9kdWxl
UmVjb3JkSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmll
bGQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXdhaXQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp1c2VzQXdh
aXQpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVBy
b2dyYW1Ob2RlOjpNb2R1bGVQcm9ncmFtTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTVG9rZW46OmR1
bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNv
cmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6aW5pdGlhbFZhbHVlcyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjppbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omlu
dGVybmFsRmllbGQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXZhbHVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiBydW50
aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJs
ZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorCiAyMDIxLTAyLTIxICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNJbnRlcm5hbFByb21pc2U6OnRo
ZW4gY2FuIGZhaWwgaWYgZXhlY3V0aW9uIGlzIHRlcm1pbmF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAppbmRleCA4MTY3YzVjYzBiYzRhZmQ5N2M5
ODU2NDk1M2RkZWQ0MzBjNzMzZTU4Li40NzIxNzkyYWRhNDExYTlhYmI2NTkyODMxOGVlZjFlODNj
NzMyYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVj
dC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1
bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVl
IGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVycmVyVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01v
ZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09i
amVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7
Ci0gICAgc3RhdGljIEpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHN0YXRp
YyBKU1ZhbHVlIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVM
b2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIAog
ICAgIEpTVmFsdWUgbG9hZEFuZEV2YWx1YXRlSlNTY3JpcHRNb2R1bGUoY29uc3QgSlNMb2NrSG9s
ZGVyJiwgSlNTY3JpcHQgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJ
R2xvYmFsT2JqZWN0Lm1tCmluZGV4IGRlZTczMjUzZjg1ZDViMTI4ZDJjMmIzYWE1MjRhYzQyYmQ5
YWE4ZGUuLmQ3YTVlMmZkZTY4ZjdhM2NkNzFkNTllOTk0M2U3NDU1M2ZlODA0NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtMjM5LDcg
KzIzOSw3IEBAIEpTT2JqZWN0KiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplCiAgICAgcmV0dXJuIG1ldGFQcm9wZXJ0
aWVzOwogfQogCi1KU1ZhbHVlIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlciogbW9kdWxlTG9h
ZGVyLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQorSlNWYWx1ZSBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRXZhbHVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxv
YWRlciwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2Ny
aXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMjU4LDcgKzI1OCw4IEBAIEpTVmFsdWUgSlNBUElHbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTCiAgICAgICAgIFttb2R1bGVMb2FkZXJEZWxlZ2F0ZSB3aWxsRXZhbHVhdGVNb2R1bGU6dXJs
XTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1vZHVsZUxv
YWRlci0+ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBtb2R1bGVSZWNvcmRW
YWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRhdGUgdGhl
IGRlbGVnYXRlIGNhbGxiYWNrcyBmb3IgYXN5bmMgbW9kdWxlcy4KKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IG1vZHVsZUxvYWRlci0+ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBt
b2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsK
IAogICAgIGlmIChbbW9kdWxlTG9hZGVyRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihkaWRFdmFsdWF0ZU1vZHVsZTopXSkKICAgICAgICAgW21vZHVsZUxvYWRlckRlbGVnYXRl
IGRpZEV2YWx1YXRlTW9kdWxlOnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL01vZHVsZUxvYWRlci5qcwppbmRleCBhOGM4NjE1ZTlkMjFlYWQ0YmM5MzcwNjg3NTc4Mzdj
YmYwYTU4NGQwLi5iNTJkNzMwNWM3NTBmNzIwZTY4MmM1NjNmMTY2MDY2Nzk2MTJmNDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKQEAgLTEw
MCw2ICsxMDAsOCBAQCBmdW5jdGlvbiBuZXdSZWdpc3RyeUVudHJ5KGtleSkKICAgICAgICAgbGlu
a1N1Y2NlZWRlZDogdHJ1ZSwKICAgICAgICAgZXZhbHVhdGVkOiBmYWxzZSwKICAgICAgICAgdGhl
bjogQHVuZGVmaW5lZCwKKyAgICAgICAgaXNBc3luYzogZmFsc2UsCisgICAgICAgIGNvbXBsZXRp
b25Qcm9taXNlOiBAdW5kZWZpbmVkLAogICAgIH07CiB9CiAKQEAgLTI4NiwxMSArMjg4LDE1IEBA
IGZ1bmN0aW9uIGxpbmsoZW50cnksIGZldGNoZXIpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFscmVh
ZHkgaGF2ZSB0aGUgImRlcGVuZGVuY2llcyIgZmllbGQsCiAgICAgICAgIC8vIHdlIGNhbiBjYWxs
IG1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IG9yZGVyCiAg
ICAgICAgIC8vIHdpdGhvdXQgY29uc3RydWN0aW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGJ5IGNh
bGxpbmcgZGVwZW5kZW5jeUdyYXBoLgorICAgICAgICB2YXIgaGFzQXN5bmNEZXBlbmRlbmN5ID0g
ZmFsc2U7CiAgICAgICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwg
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmxpbmsoZGVwZW5kZW5jaWVzW2ldLCBmZXRj
aGVyKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5n
dGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBl
bmRlbmNpZXNbaV07CisgICAgICAgICAgICB0aGlzLmxpbmsoZGVwZW5kZW5jeSwgZmV0Y2hlcik7
CisgICAgICAgICAgICBoYXNBc3luY0RlcGVuZGVuY3kgfHw9IGRlcGVuZGVuY3kuaXNBc3luYzsK
KyAgICAgICAgfQogCi0gICAgICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9u
KGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgICAgIGVudHJ5LmlzQXN5bmMgPSB0aGlzLm1v
ZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpIHx8IGhh
c0FzeW5jRGVwZW5kZW5jeTsKICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICBlbnRyeS5s
aW5rU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgIGVudHJ5LmxpbmtFcnJvciA9IGVycm9yOwpA
QCAtMzAzLDcgKzMwOSw2IEBAIGZ1bmN0aW9uIGxpbmsoZW50cnksIGZldGNoZXIpCiBmdW5jdGlv
biBtb2R1bGVFdmFsdWF0aW9uKGVudHJ5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9u
Ci0KICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoZW50cnkuZXZhbHVhdGVkKQpAQCAtMzEy
LDEwICszMTcsMzggQEAgZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZmV0Y2hlcikK
IAogICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1bGVzXV0gaXMgY2xv
bmVkIGludG8gZW50cnkuZGVwZW5kZW5jaWVzLgogICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRy
eS5kZXBlbmRlbmNpZXM7Ci0gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2ll
cy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9u
KGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CiAKLSAgICB0aGlzLmV2YWx1YXRlKGVudHJ5Lmtl
eSwgZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKKyAgICBpZiAoIWVudHJ5LmlzQXN5bmMpIHsKKyAg
ICAgICAgLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1vZHVsZXNdXSBpcyBjbG9u
ZWQgaW50byBlbnRyeS5kZXBlbmRlbmNpZXMuCisgICAgICAgIC8vIFNpbmNlIGxpbmtpbmcgc2V0
cyBpc0FzeW5jIGZvciBhbnkgc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudCB3aXRoIGFuIGFz
eW5jIG1vZHVsZSB3ZSBzaG91bGQgb25seSBnZXQgaGVyZSBpZiBhbGwgb3VyIGRlcGVuZGVuY2ll
cyBhcmUgYWxzbyBzeW5jLgorICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5k
ZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZGVwZW5k
ZW5jeSA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIEBhc3NlcnQoIWRlcGVuZGVuY3ku
aXNBc3luYyk7CisgICAgICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZGVwZW5kZW5jeSwg
ZmV0Y2hlcik7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmV2YWx1YXRlKGVudHJ5LmtleSwg
ZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gKGFz
eW5jIGZ1bmN0aW9uIGFzeW5jTW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZGVwZW5kZW5jaWVzKSB7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0
aDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubW9kdWxlRXZh
bHVhdGlvbihkZXBlbmRlbmNpZXNbaV0sIGZldGNoZXIpOworCisgICAgICAgICAgICB2YXIgcmVz
dW1lTW9kZSA9IDA7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAg
IHZhciBhd2FpdGVkVmFsdWUgPSB0aGlzLmV2YWx1YXRlKGVudHJ5LmtleSwgZW50cnkubW9kdWxl
LCBmZXRjaGVyLCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgICAgIGlm
IChAZ2V0QWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkKGVudHJ5Lm1vZHVsZSwgQGFi
c3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZSkgPT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgICAgICBhd2FpdGVkVmFsdWUgPSBhd2FpdCBhd2FpdGVkVmFsdWU7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VtZU1vZGUgPSAwOworICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXRlZFZhbHVlID0gZTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdW1lTW9kZSA9IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9KS5AY2FsbCh0aGlzLCBlbnRyeSwgZGVwZW5kZW5jaWVzKTsKKyAgICB9
CiB9CiAKIC8vIEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KQEAgLTM2NCwyNSAr
Mzk3LDEzIEBAIGFzeW5jIGZ1bmN0aW9uIGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShtb2R1bGVOYW1l
LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogICAgIHJldHVybiBhd2FpdCB0aGlzLmxpbmtBbmRFdmFs
dWF0ZU1vZHVsZShrZXksIGZldGNoZXIpOwogfQogCi1mdW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9k
dWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKK2FzeW5jIGZ1bmN0aW9uIHJlcXVlc3RJbXBv
cnRNb2R1bGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQogewogICAgICJ1c2Ugc3RyaWN0IjsK
IAotICAgIHZhciBjb25zdHJ1Y3RvciA9IEBJbnRlcm5hbFByb21pc2U7Ci0gICAgdmFyIHByb21p
c2UgPSBAY3JlYXRlUHJvbWlzZShjb25zdHJ1Y3RvciwgLyogaXNJbnRlcm5hbFByb21pc2UgKi8g
dHJ1ZSk7Ci0gICAgQHJlc29sdmVXaXRob3V0UHJvbWlzZSh0aGlzLnJlcXVlc3RTYXRpc2Z5KHRo
aXMuZW5zdXJlUmVnaXN0ZXJlZChrZXkpLCBwYXJhbWV0ZXJzLCBmZXRjaGVyLCBuZXcgQFNldCks
Ci0gICAgICAgIChlbnRyeSkgPT4gewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShlbnRyeS5rZXksIGZldGNoZXIpOwotICAgICAg
ICAgICAgICAgIEBmdWxmaWxsUHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENo
ZWNrKHByb21pc2UsIHRoaXMuZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSkp
OwotICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBAcmVqZWN0
UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIGVycm9y
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSwKLSAgICAgICAgKHJlYXNvbikgPT4gewotICAg
ICAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVj
ayhwcm9taXNlLCByZWFzb24pOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcHJvbWlzZTsKKyAg
ICB2YXIgZW50cnkgPSBhd2FpdCB0aGlzLnJlcXVlc3RTYXRpc2Z5KHRoaXMuZW5zdXJlUmVnaXN0
ZXJlZChrZXkpLCBwYXJhbWV0ZXJzLCBmZXRjaGVyLCBuZXcgQFNldCk7CisgICAgYXdhaXQgdGhp
cy5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKKyAgICByZXR1cm4g
dGhpcy5nZXRNb2R1bGVOYW1lc3BhY2VPYmplY3QoZW50cnkubW9kdWxlKTsKIH0KIAogZnVuY3Rp
b24gZGVwZW5kZW5jeUtleXNJZkV2YWx1YXRlZChrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cAppbmRleCBhOGU1NmQwY2QzOTRiYzFiN2FjMDUyNmJlODY2N2VhYzhiZGQ3ZTZhLi42Y2I4OGNl
N2FmNTM1NzlhOTZiY2E2NDc4NGIyNzMxY2E1ODI4ZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpydW4oKQogICAgIHsKICAgICAgICAgYXV0byBuZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2lu
dCgpLm5leHQoKTsKICAgICAgICAgdW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1fY29kZUJs
b2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJ
bmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6
U3RhdGUpKTsKICAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRj
aEp1bXBUYWJsZSgpOwogICAgICAgICBqdW1wVGFibGUubWluID0gMDsKICAgICAgICAganVtcFRh
YmxlLmJyYW5jaE9mZnNldHMgPSBSZWZDb3VudGVkQXJyYXk8aW50MzJfdD4obV95aWVsZHMuc2l6
ZSgpICsgMSk7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6cnVuKCkKICAgICB9CiAKICAgICBmb3IgKGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1f
eWllbGRzKSB7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBz
Y29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OkZyYW1lKSk7CiAKICAgICAgICAgYXV0
byBpbnN0cnVjdGlvbiA9IG1faW5zdHJ1Y3Rpb25zLmF0KGRhdGEucG9pbnQpOwogICAgICAgICAv
LyBFbWl0IHNhdmUgc2VxdWVuY2UuCkBAIC0yOTMsMTEgKzI5MywxOCBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogCiB2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24oQnl0ZWNvZGVHZW5lcmF0b3ImIGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvciogY29kZUJsb2NrLCBJbnN0cnVjdGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rp
b25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGVJbmRleCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkKKyAgICBpZiAoVU5MSUtFTFko
T3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNhdGlvbigpKSkgeworICAg
ICAgICBkYXRhTG9nTG4oIkJ5dGVjb2RlcyBiZWZvcmUgZ2VuZXJhdG9yaWZpY2F0aW9uIik7CiAg
ICAgICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9y
Pjo6ZHVtcEJsb2NrKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBXVEY6OmRhdGFGaWxlKCkpOwor
ICAgIH0KIAogICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoYnl0ZWNvZGVHZW5l
cmF0b3IsIGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
LCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogICAgIHBhc3MucnVuKCk7CisKKyAg
ICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rlc0JlZm9yZUdlbmVyYXRvcmlmaWNh
dGlvbigpKSkgeworICAgICAgICBkYXRhTG9nTG4oIkJ5dGVjb2RlcyBhZnRlciBnZW5lcmF0b3Jp
ZmljYXRpb24iKTsKKyAgICAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8VW5saW5rZWRDb2Rl
QmxvY2tHZW5lcmF0b3I+OjpkdW1wQmxvY2soY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIFdURjo6
ZGF0YUZpbGUoKSk7CisgICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAppbmRleCA1Y2EzNjQ5YTdjMWZjNDc3NTc5OTZmM2MzMjIwMjhjZjQ1ZTA1YzMy
Li4yYTc1ODhkNmQ1Y2M3YTM1OGU4Y2MxYzg5MzMxY2I5MjFmNzliNzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RN
b2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCkBAIC04Niwx
MSArODcsMTEgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeShWTSYgdm0pCiAgICAgbV9nZW5lcmF0b3JGaWVsZE5leHQuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6Ok5leHQpKSk7CiAg
ICAgbV9nZW5lcmF0b3JGaWVsZFRoaXMuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlRoaXMpKSk7CiAgICAgbV9nZW5lcmF0b3JGaWVs
ZEZyYW1lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpGcmFtZSkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0
KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRo
cm93LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6
R2VuZXJhdG9yUmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yUmVzdW1l
TW9kZVJldHVybi5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSk7Ci0gICAgbV9HZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpKSk7Ci0gICAgbV9HZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKSk7CisgICAgbV9HZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICBtX0dlbmVyYXRv
clJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsKKyAgICBtX0dlbmVyYXRvclJl
c3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpOworICAgIG1fR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpTdGF0ZTo6Q29tcGxldGVkKSkpOworICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpT
dGF0ZTo6RXhlY3V0aW5nKSkpOwogICAgIG1fYXJyYXlJdGVyYXRvckZpZWxkSXRlcmF0ZWRPYmpl
Y3Quc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6Okl0ZXJhdGVkT2JqZWN0KSkpOwogICAgIG1fYXJyYXlJdGVyYXRvckZpZWxkSW5k
ZXguc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVyYXRv
cjo6RmllbGQ6OkluZGV4KSkpOwogICAgIG1fYXJyYXlJdGVyYXRvckZpZWxkS2luZC5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6
S2luZCkpKTsKQEAgLTExMiw2ICsxMTMsNyBAQCBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX0FzeW5jR2VuZXJhdG9yU3Vz
cGVuZFJlYXNvbkF3YWl0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0FzeW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OkF3YWl0KSkpOwog
ICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZS5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNw
ZW5kUmVhc29uOjpOb25lKSkpOwogICAgIG1fdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9k
LnNldChtX3ZtLCBqc0Jvb2xlYW4oT3B0aW9uczo6dXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVy
aW9kKCkpKTsKKyAgICBtX2Fic3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZS5zZXQobV92bSwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxk
OjpTdGF0ZSkpKTsKIH0KIAogT3B0aW9uYWw8Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6RW50
cnk+IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCmluZGV4IDFjOTA4MjM4ZjNhM2VlYWQzZTBi
MjRjNDM1YzU2N2YxNWVlNzBiYjYuLjVjZjRmYTU1YzNlZWVkZWY0ZjhlYTkzY2Q2MWQ0NjYxZWI2
N2Y4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUludHJpbnNpY1JlZ2lzdHJ5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaApAQCAtNDcsNiArNDcsNyBAQCBlbnVtIGNsYXNz
IExpbmtUaW1lQ29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKGdldFByb21pc2VJbnRlcm5h
bEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1h
Y3JvKGdldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAorICAgIG1hY3JvKGdldEFic3Ry
YWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldEFycmF5SXRlcmF0
b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0U3RyaW5nSXRlcmF0b3JJbnRlcm5hbEZp
ZWxkKSBcCiAgICAgbWFjcm8oZ2V0TWFwSXRlcmF0b3JJbnRlcm5hbEZpZWxkKSBcCkBAIC0xNTIs
NiArMTUzLDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBt
YWNybyhBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdCkgXAogICAgIG1hY3JvKEFzeW5j
R2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUpIFwKICAgICBtYWNybyh1c2VJbnRsRGF0ZVRpbWVG
b3JtYXREYXlQZXJpb2QpIFwKKyAgICBtYWNybyhhYnN0cmFjdE1vZHVsZVJlY29yZEZpZWxkU3Rh
dGUpIFwKIAogI2RlZmluZSBKU0NfQ09NTU9OX0JZVEVDT0RFX0lOVFJJTlNJQ19DT05TVEFOVFNf
Q1VTVE9NX0VBQ0hfTkFNRShtYWNybykgXAogICAgIG1hY3JvKHNlbnRpbmVsTWFwQnVja2V0KSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRl
eCBhMjRkMjY1MWI1MWE4NmU2YzllNzA2OWQ3NDI2MGJjYTg1NzFlNDkxLi5jYjBlN2M4YzliYmJh
MTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTEyOTcsNyArMTI5Nyw2IEBAIG9wIDppdGVy
YXRvcl9uZXh0LAogCiBvcCA6eWllbGQsCiAgICAgYXJnczogewotICAgICAgICBnZW5lcmF0b3I6
IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgeWllbGRQb2ludDogdW5zaWduZWQsCiAgICAgICAg
IGFyZ3VtZW50OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggNDI1YWYyNWI4MDQ5Mjlm
NDYxZjBiYjEzOGM2NWE4Y2Y1NGJiNTI0My4uMDE2YTAyN2ZhMzNhYjc5NDk0MzEyYTRhNDc3ZGZj
NWIyZTdhMDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0
cnUKICAgICBVU0VTKE9wR2V0SW50ZXJuYWxGaWVsZCwgYmFzZSkKICAgICBVU0VTKE9wUHV0SW50
ZXJuYWxGaWVsZCwgYmFzZSwgdmFsdWUpCiAKLSAgICBVU0VTKE9wWWllbGQsIGdlbmVyYXRvciwg
YXJndW1lbnQpCisgICAgVVNFUyhPcFlpZWxkLCBhcmd1bWVudCkKIAogICAgIGNhc2Ugb3BfaXRl
cmF0b3Jfb3BlbjogewogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9w
SXRlcmF0b3JPcGVuPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCmluZGV4IGI5MzI0
ODFhYTRlMjVjNDdkN2U3YWVlNDExYjA4OTgzMzAwZGFlMTYuLjg1MzlmNTYyYjkzMDU0NmRlNGE3
Mzg2NTgzMTAwZTYxNGZiNDk5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKQEAg
LTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgICAgICBtX21vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGVDb25zdGFudFJlZ2lzdGVyT2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAorICAgIGJvb2wg
aXNBc3luYygpIGNvbnN0IHsgcmV0dXJuIGNvZGVGZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9
CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIENhY2hlZE1vZHVsZUNvZGVCbG9jazsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCAxY2VhYmMwYjVlYWZlMmZkZGIwOWEyY2RjZDUwNmMwNzllNDlmN2FkLi5k
ZjhlMDkzODAzYWNlNTRmYzAyM2M3YjE4NTRkZGRjMGUxY2VkMzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAKKyNpbmNsdWRlICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaCIKQEAgLTI3OSw3ICsyODAs
NyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIH0KICAg
ICAKIAotICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUobV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpKSkKKyAgICBpZiAobV9pc0FzeW5jKQogICAgICAgICBwZXJm
b3JtR2VuZXJhdG9yaWZpY2F0aW9uKCp0aGlzLCBtX2NvZGVCbG9jay5nZXQoKSwgbV93cml0ZXIs
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpOwogCiAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1fY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKSkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpKTsKQEAgLTM4NSw2ICszODYsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoKGZ1bmN0aW9uTm9k
ZS0+dXNlc0FyZ3VtZW50cygpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpKSB8fCBj
b2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24o
KSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklu
bmVyQXJyb3dGdW5jdGlvbigpKSkgJiYgcGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6Q2xh
c3NGaWVsZEluaXRpYWxpemVyTW9kZTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5j
dGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkgeworICAgICAgICBtX2lzQXN5bmMgPSB0cnVl
OwogICAgICAgICAvLyBHZW5lcmF0b3IgYW5kIEFzeW5jRnVuY3Rpb24gbmV2ZXIgcHJvdmlkZXMg
ImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFu
IHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVudHMg
PSBmYWxzZTsKICAgICB9CkBAIC00MzQsNyArNDM2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICBlbWl0RW50ZXIoKTsKIAogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKLSAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9
ICZtX3BhcmFtZXRlcnNbMV07CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJh
bWV0ZXJzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OkdlbmVy
YXRvcildOwogCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIApAQCAtOTUxLDYgKzk1Mywx
MyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQ
cm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlk
KSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAorICAgIGlmICht
b2R1bGVQcm9ncmFtTm9kZS0+dXNlc0F3YWl0KCkpIHsKKyAgICAgICAgbV9pc0FzeW5jID0gdHJ1
ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8PSBKU0dlbmVyYXRvcjo6QXJndW1l
bnQ6Ok51bWJlck9mQXJndW1lbnRzOyArK2kpCisgICAgICAgICAgICBpbml0aWFsaXplTmV4dFBh
cmFtZXRlcigpOworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkFyZ3VtZW50OjpHZW5l
cmF0b3IpXTsKKyAgICB9CisKICAgICBlbWl0RW50ZXIoKTsKIAogICAgIGFsbG9jYXRlQW5kRW1p
dFNjb3BlKCk7CkBAIC05NTksNyArOTY4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAg
ICAKICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7
CiAKLSAgICBtX2NvZGVCbG9jay0+c2V0TnVtUGFyYW1ldGVycygxKTsgLy8gQWxsb2NhdGUgc3Bh
Y2UgZm9yICJ0aGlzIgorICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6QXJndW1lbnQ6Ok51bWJlck9mQXJn
dW1lbnRzKSArIDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiICsgYXN5bmMgbW9kdWxl
IGFyZ3VtZW50cy4KIAogICAgIC8vIE5vdyBkZWNsYXJlIGFsbCB2YXJpYWJsZXMuCiAKQEAgLTk4
MywxMSArOTkyLDE3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAKICAgICAvLyBXZSBrZWVw
IHRoZSBzeW1ib2wgdGFibGUgaW4gdGhlIGNvbnN0YW50IHBvb2wuCiAgICAgUmVnaXN0ZXJJRCog
Y29uc3RhbnRTeW1ib2xUYWJsZSA9IG51bGxwdHI7Ci0gICAgaWYgKHNob3VsZEVtaXRUeXBlUHJv
ZmlsZXJIb29rcygpKQorICAgIGlmIChzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSB8fCBt
b2R1bGVQcm9ncmFtTm9kZS0+dXNlc0F3YWl0KCkpCiAgICAgICAgIGNvbnN0YW50U3ltYm9sVGFi
bGUgPSBhZGRDb25zdGFudFZhbHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUpOwogICAg
IGVsc2UKICAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUobW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZS0+Y2xvbmVTY29wZVBhcnQobV92bSkpOwogCisgICAg
aWYgKG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXdhaXQoKSkgeworICAgICAgICBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUuc2V0KG1fdm0sIG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUp
OworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IGNvbnN0YW50U3lt
Ym9sVGFibGUtPmluZGV4KCk7CisgICAgICAgIGVtaXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6
RmllbGQ6OkZyYW1lKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBw
dXNoVERaVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpP
cHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKICAgICBib29sIGlzV2l0aFNjb3Bl
ID0gZmFsc2U7CiAgICAgbV9sZXhpY2FsU2NvcGVTdGFjay5hcHBlbmQoeyBtb2R1bGVFbnZpcm9u
bWVudFN5bWJvbFRhYmxlLCBtX3RvcE1vc3RTY29wZSwgaXNXaXRoU2NvcGUsIGNvbnN0YW50U3lt
Ym9sVGFibGUtPmluZGV4KCkgfSk7CkBAIC0zNzI5LDcgKzM3NDQsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGVidWdIb29rKEV4cHJlc3Npb25Ob2RlKiBleHByKQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0V2lsbExlYXZlQ2FsbEZyYW1lRGVidWdIb29rKCkKIHsKLSAg
ICBSRUxFQVNFX0FTU0VSVChtX3Njb3BlTm9kZS0+aXNGdW5jdGlvbk5vZGUoKSk7CisgICAgLy8g
UkVMRUFTRV9BU1NFUlQobV9zY29wZU5vZGUtPmlzRnVuY3Rpb25Ob2RlKCkpOwogICAgIGVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBtX3Njb3BlTm9kZS0+bGFzdExpbmUoKSwgbV9z
Y29wZU5vZGUtPnN0YXJ0T2Zmc2V0KCksIG1fc2NvcGVOb2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7
CiB9CiAKQEAgLTQxODAsNyArNDE5NSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4CiB7CiAg
ICAgYm9vbCBpc0ZvckF3YWl0ID0gZm9yTG9vcE5vZGUgPyBmb3JMb29wTm9kZS0+aXNGb3JBd2Fp
dCgpIDogZmFsc2U7CiAgICAgYXV0byBzaG91bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1p
dEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5vOwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBp
c0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpKTsKKyAgICBBU1NFUlQoIWlzRm9y
QXdhaXQgfHwgKGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSkgfHwgaXNNb2R1
bGVQYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3Vi
amVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAgIGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1Ympl
Y3ROb2RlKTsKQEAgLTQ3NDAsNyArNDc1NSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBCiAg
ICAgd2hpbGUgKG1fd3JpdGVyLnBvc2l0aW9uKCkgJSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAg
ICAgIE9wTm9wOjplbWl0PE9wY29kZVNpemU6Ok5hcnJvdz4odGhpcyk7CiAjZW5kaWYKLSAgICBP
cFlpZWxkOjplbWl0KHRoaXMsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgeWllbGRQb2ludElu
ZGV4LCBhcmd1bWVudCk7CisgICAgT3BZaWVsZDo6ZW1pdCh0aGlzLCB5aWVsZFBvaW50SW5kZXgs
IGFyZ3VtZW50KTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3Rh
cnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdlIHBvaW50LgogICAgIG1fdHJ5Q29udGV4
dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOwpAQCAtNDc1MywxMSArNDc2OCwxMSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOgogCiAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9
IG5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBv
cmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpO
b3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24u
Z2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9y
bWFsTW9kZSkpKSk7CiAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxM
YWJlbC5nZXQoKSk7CiAKICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwot
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkp
OwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7
CiAgICAgLy8gUmV0dXJuLgogICAgIHsKQEAgLTQ5NDEsMTAgKzQ5NTYsMTAgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAgICBSZWY8TGFiZWw+IHJldHVybkxhYmVsID0g
bmV3TGFiZWwoKTsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgICAg
ICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1v
ZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVl
KGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAg
ICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2Rl
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29u
ZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1v
ZGU6OlJldHVybk1vZGUpKSkpOwogICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShj
b25kaXRpb24uZ2V0KCksIHJldHVybkxhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAg
ICAvLyBGYWxsdGhyb3VnaCB0byBUaHJvd01vZGUuCkBAIC01MDQ4LDkgKzUwNjMsMTAgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50LCBUaHJvd2FibGUKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVy
YXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiB7CisgICAgLy8gRklYTUU6IEl0IHNlZW1z
IGxpa2UgdGhpcyB3aWxsIGNyZWF0ZSBhIGxvdCBvZiBjb25zdGFudHMgaWYgdGhlcmUgYXJlIG1h
bnkgeWllbGQgcG9pbnRzLiBNYXliZSB3ZSBzaG91bGQgb3BfaW5jIHRoZSBvbGQgc3RhdGUuCiAg
ICAgUmVnaXN0ZXJJRCogY29tcGxldGVkU3RhdGUgPSBlbWl0TG9hZChudWxscHRyLCBqc051bWJl
cihzdGF0ZSkpOwogICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6U3RhdGUpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0FzeW5jR2Vu
ZXJhdG9yOjpGaWVsZDo6U3RhdGUpKTsKLSAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpT
dGF0ZSksIGNvbXBsZXRlZFN0YXRlKTsKKyAgICBlbWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUoKSkgPyBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZSkgOiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSksIGNvbXBsZXRlZFN0YXRl
KTsKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEp1bXBWaWFGaW5hbGx5SWZOZWVk
ZWQoaW50IHRhcmdldExhYmVsU2NvcGVEZXB0aCwgTGFiZWwmIGp1bXBUYXJnZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggOTE0MjhlOTY2ZWY2NDQwODNhY2I4MTNkODQ3MTEwMTFlMDdjMWY4Zi4uODYxYzA5
ZjEyOTkxMTZmNmQ4Zjc5YmY1ZTliNWM0ZWQ2MTY3YWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTA1
OCwxMCArMTA1OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0R2VuZXJh
dG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uID0gSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uOjpZaWVsZCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJl
Z2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVy
c1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0
YXRlKV07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvckFyZ3VtZW50OjpWYWx1ZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0K
LSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFy
Z3VtZW50OjpGcmFtZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsg
fQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4g
Jm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6
OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZVR5cGU7IH0KIApAQCAtMTMyNyw2ICsxMzI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFZlY3RvcjxSZWY8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAg
ICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwogICAgICAgICB1bnNp
Z25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9OworICAgICAgICBib29sIG1faXNBc3luYyB7IGZhbHNl
IH07CiAKICAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGU7CiAgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAppbmRleCA2M2YxMWExOTExOTlmNzI4NzUzNWRjNDEyZWUxZjQ3ZjI1YjRjOGQ1Li43
ZWFiNDUwYzc0Y2RhZWQwNTY1ZTdkOTA1ODQ0OTlmNzgxOGM4NTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3Jz
LmgiCiAKKyNpbmNsdWRlICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJ1aWx0
aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JCYXNlSW5saW5lcy5oIgpAQCAtMTM4OSw2ICsxMzkwLDE1IEBAIHN0YXRp
YyBKU0FzeW5jR2VuZXJhdG9yOjpGaWVsZCBhc3luY0dlbmVyYXRvckludGVybmFsRmllbGRJbmRl
eChCeXRlY29kZUludHJpbnNpCiAgICAgcmV0dXJuIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpT
dGF0ZTsKIH0KIAorc3RhdGljIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZCBhYnN0cmFjdE1v
ZHVsZVJlY29yZEludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUp
Cit7CisgICAgQVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnk6OlR5cGU6OkVtaXR0ZXIpOworICAgIGlmIChub2RlLT5lbnRyeSgpLmVtaXR0ZXIo
KSA9PSAmQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19hYnN0cmFjdE1vZHVs
ZVJlY29yZEZpZWxkU3RhdGUpCisgICAgICAgIHJldHVybiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6
RmllbGQ6OlN0YXRlOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGU7Cit9CisKIHN0YXRpYyBKU0Fy
cmF5SXRlcmF0b3I6OkZpZWxkIGFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUo
KSA9PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKQEAgLTE0NzQs
NiArMTQ4NCwxOSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2dldEFzeW5jR2VuZXJhdG9ySW50ZXJuYWxGaWVsZAogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwg
YmFzZS5nZXQoKSwgaW5kZXgpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX2dldEFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgQXJn
dW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJncy0+bV9saXN0Tm9kZTsKKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlKTsKKyAgICBub2RlID0gbm9k
ZS0+bV9uZXh0OworICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUtPm1fZXhwci0+aXNCeXRlY29kZUlu
dHJpbnNpY05vZGUoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oYWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkSW5kZXgoc3RhdGljX2Nhc3Q8Qnl0
ZWNvZGVJbnRyaW5zaWNOb2RlKj4obm9kZS0+bV9leHByKSkpOworICAgIEFTU0VSVChpbmRleCA8
IEFic3RyYWN0TW9kdWxlUmVjb3JkOjpudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBBU1NF
UlQoIW5vZGUtPm1fbmV4dCk7CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5h
bEZpZWxkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4
KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNp
Y19nZXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1f
YXJncy0+bV9saXN0Tm9kZTsKQEAgLTQ5NDAsNyArNDk2Myw3IEBAIHZvaWQgRnVuY3Rpb25Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENv
dW50KyspLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBnZW5lcmF0b3Iu
cHJvbWlzZVJlZ2lzdGVyKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1
bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyks
IGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1
bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5h
cmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwogICAgICAgICAv
LyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9m
ZnNldCkKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zm
c2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKIApAQCAtNDk1NywxMSArNDk4MCwxMSBAQCB2b2lk
IEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogICAgICAgICBSZWY8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uZGl0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2Vu
ZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVy
YXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1h
bE1vZGUpKSkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlv
bi5nZXQoKSwgZ2VuZXJhdG9yQm9keUxhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAgUmVmPExh
YmVsPiB0aHJvd0xhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxs
cHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9y
UmVzdW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1
YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JS
ZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVy
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQo
KSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KGdlbmVyYXRvci5nZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggN2VmOTU5MTk5NWNl
ZGVlZWM3ZTE2ZDY4MGMyN2RiZmE0OTkyMDVkYy4uYWQxYjE5NWNiYzg1MzJjZmU2ZTY2NGJiZDIz
MGJmMmE3NGU4MDg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVj
b3JkLmgiCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRl
ICJCeXRlY29kZXMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVDbG9zdXJlLmgiCkBAIC00OSw2ICs1
MCw3IEBACiAjaW5jbHVkZSAiSlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKICNpbmNsdWRlICJKU0xl
eGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNp
bmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiTExJbnRUaHVua3MuaCIKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCkBAIC0xMjAxLDcg
KzEyMDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBl
dmFsLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbAogICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKHJlc3VsdCk7CiB9CiAKLUpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9n
cmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVudCogc2NvcGUpCitKU1ZhbHVl
IEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShKU01vZHVsZVJlY29yZCogcmVjb3Jk
LCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1lbnQqIHNjb3BlLCBKU1ZhbHVlIHNl
bnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAgIFZNJiB2bSA9IHNjb3BlLT52bSgp
OwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMTIz
MSw2ICsxMjMzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0o
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICBpZiAoc2NvcGUtPnN0
cnVjdHVyZSh2bSktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCiAgICAgICAgIHNjb3BlLT5m
bGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CiAKKyAgICBjb25zdCB1bnNpZ25lZCBudW1iZXJP
ZkFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6
QXJndW1lbnQ6Ok51bWJlck9mQXJndW1lbnRzKTsKICAgICBKU0NhbGxlZSogY2FsbGVlID0gSlND
YWxsZWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jayogY29kZUJsb2NrOwogICAgIHsKQEAgLTEyNDAsNyArMTI0Myw3IEBAIEpTVmFs
dWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBKCiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikp
CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAgICAg
ICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxv
Y2spOwotICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gMSk7IC8v
IDEgcGFyYW1ldGVyIGZvciAndGhpcycuCisgICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSBudW1iZXJPZkFyZ3VtZW50cyArIDEpOwogICAgIH0KIAogICAgIFJlZlB0
cjxKSVRDb2RlPiBqaXRDb2RlOwpAQCAtMTI0OCwxMiArMTI1MSwyMiBAQCBKU1ZhbHVlIEludGVy
cHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSgogICAgIHsKICAgICAgICAgRGlzYWxsb3dHQyBkaXNhbGxvd0dDOyAvLyBFbnN1
cmUgbm8gR0MgaGFwcGVucy4gR0MgY2FuIHJlcGxhY2UgQ29kZUJsb2NrIGluIEV4ZWN1dGFibGUu
CiAgICAgICAgIGppdENvZGUgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CisKKyAg
ICAgICAgSlNWYWx1ZSBhcmdzW251bWJlck9mQXJndW1lbnRzXSA9IHsKKyAgICAgICAgICAgIHJl
Y29yZCwKKyAgICAgICAgICAgIHJlY29yZC0+aW50ZXJuYWxGaWVsZChKU01vZHVsZVJlY29yZDo6
RmllbGQ6OlN0YXRlKS5nZXQoKSwKKyAgICAgICAgICAgIHNlbnRWYWx1ZSwKKyAgICAgICAgICAg
IHJlc3VtZU1vZGUsCisgICAgICAgICAgICBzY29wZSwKKyAgICAgICAgfTsKICAgICAgICAgLy8g
VGhlIHx0aGlzfCBvZiB0aGUgbW9kdWxlIGlzIGFsd2F5cyBgdW5kZWZpbmVkYC4KICAgICAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWhhc3RoaXNiaW5kaW5nCiAgICAgICAgIC8vIGh0dHA6
Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52
aXJvbm1lbnQtcmVjb3Jkcy1nZXR0aGlzYmluZGluZwotICAgICAgICBwcm90b0NhbGxGcmFtZS5p
bml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxsZWUsIGpzVW5kZWZpbmVkKCksIDEpOwor
ICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBjYWxs
ZWUsIGpzVW5kZWZpbmVkKCksIG51bWJlck9mQXJndW1lbnRzICsgMSwgYXJncyk7CiAgICAgfQog
CisgICAgcmVjb3JkLT5pbnRlcm5hbEZpZWxkKEpTTW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUp
LnNldCh2bSwgcmVjb3JkLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQ+KEpTTW9kdWxlUmVjb3Jk
OjpTdGF0ZTo6RXhlY3V0aW5nKSkpOworCiAgICAgLy8gRXhlY3V0ZSB0aGUgY29kZToKICAgICB0
aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBBU1NFUlQoaml0Q29kZSA9PSBleGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlKCkucHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA0ZjhiYzc4NWM1M2IzZGNlYmFmMjUyMzNiYTg1
MGRiNTJhZDQxZmM1Li4wYzNlZmUxMmU1MTA1Mzg4ZjZjZjI4NTExZDllYTVlNGVhZjMwN2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApA
QCAtMTA1LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICAgICAgSlNW
YWx1ZSBleGVjdXRlUHJvZ3JhbShjb25zdCBTb3VyY2VDb2RlJiwgSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogdGhpc09iaik7Ci0gICAgICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVsZVByb2dyYW0o
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJv
bm1lbnQqKTsKKyAgICAgICAgSlNWYWx1ZSBleGVjdXRlTW9kdWxlUHJvZ3JhbShKU01vZHVsZVJl
Y29yZCosIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVs
ZUVudmlyb25tZW50KiwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CiAg
ICAgICAgIEpTVmFsdWUgZXhlY3V0ZUNhbGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogZnVu
Y3Rpb24sIGNvbnN0IENhbGxEYXRhJiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3Qm
KTsKICAgICAgICAgSlNPYmplY3QqIGV4ZWN1dGVDb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogZnVuY3Rpb24sIGNvbnN0IENhbGxEYXRhJiwgY29uc3QgQXJnTGlzdCYsIEpTVmFs
dWUgbmV3VGFyZ2V0KTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNTY29wZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCA0OTEwZmM3Y2RhZmM1YmE4N2Nm
Mjg5MzRjYTIzM2E0ZjhiYzZkNzIzLi41N2Q4N2JmYWExZmUyY2FlZmE4Nzc4NjMzZTFjMzI5YTdh
ZWU4MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAt
NDAwLDYgKzQwMCw3IEBAIHB1YmxpYzoKICAgICBBd2FpdEV4cHJOb2RlKiBjcmVhdGVBd2FpdChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJndW1lbnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgQVNTRVJUKGFyZ3Vt
ZW50KTsKKyAgICAgICAgdXNlc0F3YWl0KCk7CiAgICAgICAgIEF3YWl0RXhwck5vZGUqIG5vZGUg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEF3YWl0RXhwck5vZGUobG9jYXRpb24sIGFyZ3VtZW50KTsK
ICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKQEAgLTEwOTksNiArMTEwMCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsKICAgICB9CiAgICAgdm9pZCB1
c2VzTmV3VGFyZ2V0KCkgeyBtX3Njb3BlLm1fZmVhdHVyZXMgfD0gTmV3VGFyZ2V0RmVhdHVyZTsg
fQorICAgIHZvaWQgdXNlc0F3YWl0KCkgeyBtX3Njb3BlLm1fZmVhdHVyZXMgfD0gQXdhaXRGZWF0
dXJlOyB9CiAgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUludGVnZXJMaWtlTnVtYmVyKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgSW50ZWdlck5vZGUobG9jYXRpb24sIGQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCAwMmI3ODc1Y2NhZjZhZmY2NjNhYzFl
ZWY1YWRkYjhkYmQzNDA5Mzc3Li5hODQ5NWQxMTUwYzg4YTllYWY5ZDc0YTMxYWFlYmVlYTI3MWU5
OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTc3LDYgKzE3
Nyw3IEBAIE1vZHVsZVByb2dyYW1Ob2RlOjpNb2R1bGVQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYg
cGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhCiAgICAgOiBTY29wZU5vZGUocGFyc2VyQXJl
bmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJFbnZp
cm9ubWVudCwgV1RGTW92ZShmdW5jU3RhY2spLCBsZXhpY2FsVmFyaWFibGVzLCBXVEZNb3ZlKHNs
b3BweU1vZGVIb2lzdGVkRnVuY3Rpb25zKSwgZmVhdHVyZXMsIGlubmVyQXJyb3dGdW5jdGlvbkNv
ZGVGZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zdGFydENvbHVtbihzdGFydENvbHVt
bikKICAgICAsIG1fZW5kQ29sdW1uKGVuZENvbHVtbikKKyAgICAsIG1fdXNlc0F3YWl0KGZlYXR1
cmVzICYgQXdhaXRGZWF0dXJlKQogICAgICwgbV9tb2R1bGVTY29wZURhdGEoKldURk1vdmUobW9k
dWxlU2NvcGVEYXRhKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCAwNWMxOGVhZGYyNDkwMDU2MDU5YTRiY2NjZTE1YWJlNWFmZDQ5MTZiLi5iOGE3MTZlMDA0MDlj
ZWI5MGExYzhhZjg3ZjljNjFiNjMxNjNmZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC0xOTkwLDYgKzE5OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1
bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAg
ICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0K
KyAgICAgICAgYm9vbCB1c2VzQXdhaXQoKSBjb25zdCB7IHJldHVybiBtX3VzZXNBd2FpdDsgfQog
CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsK
IApAQCAtMjAwMiw2ICsyMDAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5h
bDsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQgbV9l
bmRDb2x1bW47CisgICAgICAgIGJvb2wgbV91c2VzQXdhaXQ7CiAgICAgICAgIFJlZjxNb2R1bGVT
Y29wZURhdGE+IG1fbW9kdWxlU2NvcGVEYXRhOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBlOTVhYzAxZWMzZTJjOWFjNTAyZDg0ZmM5MGMxMjI1
NzA1MjBmMWY1Li4yOTA3NWYyMTFjMGRlODdkZDY0NGQwY2Q0ZTkzMTc3NmMzZmYzODAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDksNiArMjA5LDExIEBA
IFBhcnNlcjxMZXhlclR5cGU+Ojp+UGFyc2VyKCkKIHsKIH0KIAordm9pZCBKU1Rva2VuOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCptX2RhdGEuY29va2Vk
KTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIEV4cGVjdGVkPHR5cGVuYW1l
IFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFBhcnNpbmdD
b250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGNsYXNz
RmllbGRMb2NhdGlvbnMpCiB7CkBAIC0xMzUyLDcgKzEzNTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3Rh
dGVtZW50KAogICAgIG1fc3RhdGVtZW50RGVwdGgrKzsKIAogICAgIGlmIChtYXRjaChBV0FJVCkp
IHsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNBc3luY0Z1
bmN0aW9uKCksICJmb3ItYXdhaXQtb2YgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBhc3luYyBmdW5j
dGlvbiBvciBhc3luYyBnZW5lcmF0b3IiKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShj
dXJyZW50U2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uKCkgfHwgKGlzTW9kdWxlUGFyc2VNb2RlKHNv
dXJjZVBhcnNlTW9kZSgpKSAmJiBPcHRpb25zOjp1c2VUb3BMZXZlbEF3YWl0KCkpLCAiZm9yLWF3
YWl0LW9mIGNhbiBvbmx5IGJlIHVzZWQgaW4gYW4gYXN5bmMgZnVuY3Rpb24gb3IgYXN5bmMgZ2Vu
ZXJhdG9yIik7CiAgICAgICAgIGlzQXdhaXRGb3IgPSB0cnVlOwogICAgICAgICBuZXh0KCk7CiAg
ICAgfQpAQCAtNDE0NCw3ICs0MTQ5LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQXdhaXRFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAg
IEFTU0VSVChtYXRjaChBV0FJVCkpOwotICAgIEFTU0VSVChjdXJyZW50U2NvcGUoKS0+aXNBc3lu
Y0Z1bmN0aW9uKCkpOworICAgIEFTU0VSVChjdXJyZW50U2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9u
KCkgfHwgaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKTsKKyAgICBBU1NFUlQo
aXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSB8fCBpc01vZHVsZVBh
cnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkpOwogICAgIEFTU0VSVChtX3BhcnNlclN0YXRlLmZ1
bmN0aW9uUGFyc2VQaGFzZSAhPSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMpOwogICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBv
c2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKQEAgLTQ4MTQsNyArNDgy
MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgY2FzZSBBV0FJVDoKICAgICAgICAg
aWYgKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQaGFz
ZTo6UGFyYW1ldGVycykKICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UobV9wYXJzZXJT
dGF0ZS5hbGxvd0F3YWl0LCAiQ2Fubm90IHVzZSAnYXdhaXQnIHdpdGhpbiBhIHBhcmFtZXRlciBk
ZWZhdWx0IGV4cHJlc3Npb24iKTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVudEZ1bmN0aW9uU2Nv
cGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkKKyAgICAgICAgZWxzZSBpZiAoY3VycmVu
dEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSB8fCAoaXNNb2R1bGVQ
YXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpICYmIE9wdGlvbnM6OnVzZVRvcExldmVsQXdhaXQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VBd2FpdEV4cHJlc3Npb24oY29udGV4dCk7CiAK
ICAgICAgICAgZ290byBpZGVudGlmaWVyRXhwcmVzc2lvbjsKQEAgLTUzMzgsNyArNTM0NCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgYm9vbCBoYXNQcmVmaXhVcGRhdGVPcCA9IGZh
bHNlOwogICAgIHVuc2lnbmVkIGxhc3RPcGVyYXRvciA9IDA7CiAKLSAgICBpZiAoVU5MSUtFTFko
bWF0Y2goQVdBSVQpICYmIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJv
dW5kYXJ5KCkpKQorICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgKGN1cnJlbnRGdW5j
dGlvblNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgKGlzTW9kdWxlUGFyc2VN
b2RlKHNvdXJjZVBhcnNlTW9kZSgpKSkgJiYgT3B0aW9uczo6dXNlVG9wTGV2ZWxBd2FpdCgpKSkp
CiAgICAgICAgIHJldHVybiBwYXJzZUF3YWl0RXhwcmVzc2lvbihjb250ZXh0KTsKIAogICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IDFjZGFmYzU4NTkyNjA3NmNmMTNiNjM4
ZmEyMTYyN2QyZjc1NWRiNjQuLjk2MzM0YmJlYTU4YTAxNmZhZmFkM2YyOTZlYzA4Njk0ZTIwMGE0
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTMy
Miw4ICszMjIsOSBAQCBjb25zdCBDb2RlRmVhdHVyZXMgU3VwZXJQcm9wZXJ0eUZlYXR1cmUgPSAg
ICAgICAgICAxIDw8IDk7CiBjb25zdCBDb2RlRmVhdHVyZXMgTmV3VGFyZ2V0RmVhdHVyZSA9ICAg
ICAgICAgICAgICAxIDw8IDEwOwogY29uc3QgQ29kZUZlYXR1cmVzIE5vRXZhbENhY2hlRmVhdHVy
ZSA9ICAgICAgICAgICAgMSA8PCAxMTsKIGNvbnN0IENvZGVGZWF0dXJlcyBOb25TaW1wbGVQYXJh
bWV0ZXJMaXN0RmVhdHVyZSA9IDEgPDwgMTI7Citjb25zdCBDb2RlRmVhdHVyZXMgQXdhaXRGZWF0
dXJlID0gICAgICAgICAgICAgICAgICAxIDw8IDEzOwogCi1jb25zdCBDb2RlRmVhdHVyZXMgQWxs
RmVhdHVyZXMgPSBFdmFsRmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8
IFRoaXNGZWF0dXJlIHwgU3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVy
ZSB8IEFycm93RnVuY3Rpb25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwg
U3VwZXJDYWxsRmVhdHVyZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVy
ZSB8IE5vRXZhbENhY2hlRmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlOwor
Y29uc3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNG
ZWF0dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVhdHVyZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwg
U2hhZG93c0FyZ3VtZW50c0ZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IEFycm93RnVu
Y3Rpb25Db250ZXh0RmVhdHVyZSB8IFN1cGVyQ2FsbEZlYXR1cmUgfCBTdXBlclByb3BlcnR5RmVh
dHVyZSB8IE5ld1RhcmdldEZlYXR1cmUgfCBOb0V2YWxDYWNoZUZlYXR1cmUgfCBOb25TaW1wbGVQ
YXJhbWV0ZXJMaXN0RmVhdHVyZSB8IEF3YWl0RmVhdHVyZTsKIAogdHlwZWRlZiB1aW50OF90IElu
bmVyQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IGEyMTkxNzI0ZTA0NTFlNDZlNGY4Mjg4MTBj
N2RiZTNmYTliN2ViNjUuLmRlNjdhNDBiYzU1MGJlNzc2Nzk4NDJhOGYzZjY5ZGRhOTc5YWI3ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMjgz
LDYgKzI4Myw4IEBAIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuTG9jYXRpb24gbV9sb2Nh
dGlvbjsKICAgICBKU1RleHRQb3NpdGlvbiBtX3N0YXJ0UG9zaXRpb247CiAgICAgSlNUZXh0UG9z
aXRpb24gbV9lbmRQb3NpdGlvbjsKKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwogfTsKIAogQUxXQVlTX0lOTElORSBib29sIGlzVXBkYXRlT3AoSlNUb2tlblR5cGUgdG9rZW4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVs
ZVJlY29yZC5jcHAKaW5kZXggYzczZGE1MTQyYTM3Y2QzZWI0NTY0NWRkZWI1ZmMzYzg3NzYwZjU0
Ni4uNDVmMmI0MTk2NmRkY2M0ZWQ3MTYwZmI4YjFlOTBjMTYwZGQ3ZjBjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbElubGluZXMuaCIK
ICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgpAQCAtNTMsNiArNTQsMTEgQEAgdm9p
ZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtKQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogCisgICAgYXV0byB2YWx1ZXMgPSBpbml0aWFs
VmFsdWVzKCk7CisgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPT0gbnVtYmVyT2ZJbnRlcm5hbEZp
ZWxkcyk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLnNpemUo
KTsgKytpbmRleCkKKyAgICAgICAgQmFzZTo6aW50ZXJuYWxGaWVsZChpbmRleCkuc2V0KHZtLCB0
aGlzLCB2YWx1ZXNbaW5kZXhdKTsKKwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBKU01hcCogbWFwID0gSlNNYXA6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZt
LCBnbG9iYWxPYmplY3QtPm1hcFN0cnVjdHVyZSgpKTsKICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKQEAgLTgwOCw3ICs4MTQsNyBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpzZXRNb2R1bGVFbnZpcm9ubWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
UwogICAgIG1fbW9kdWxlRW52aXJvbm1lbnQuc2V0KHZtLCB0aGlzLCBtb2R1bGVFbnZpcm9ubWVu
dCk7CiB9CiAKLXZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorU3luY2hyb25vdXNuZXNzIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJl
Y29yZCo+KHZtLCB0aGlzKSkKQEAgLTgxOCwxMyArODI0LDE0IEBAIHZvaWQgQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3Jp
cHRGZXRjCiAgICAgICAgIHJldHVybiB3YXNtTW9kdWxlUmVjb3JkLT5saW5rKGdsb2JhbE9iamVj
dCwgc2NyaXB0RmV0Y2hlciwgbnVsbHB0ciwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tTW9kdWxl
TG9hZGVyKTsKICNlbmRpZgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIFN5bmNocm9ub3VzbmVzczo6U3luYzsKIH0KIAotSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2VudFZhbHVl
LCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwogICAgIGlmIChhdXRvKiBqc01vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVS
ZWNvcmQqPih2bSwgdGhpcykpCi0gICAgICAgIHJldHVybiBqc01vZHVsZVJlY29yZC0+ZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIGpzTW9kdWxlUmVjb3JkLT5ldmFsdWF0
ZShnbG9iYWxPYmplY3QsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogICAgIGlmIChhdXRvKiB3YXNtTW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKICAgICAgICAgcmV0dXJuIHdhc21N
b2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaAppbmRleCA0MzFiOTNj
ZGUxZTA0MjhiZjE1MjBmNzRlMThkNDU1MGI0ZGUxYjQ2Li5mNDEwMmVjYTZiYmU4NTQ0NmRiODFm
NjM0ZjBhZGIyOTgzNTY1YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKQEAgLTI2LDcgKzI2LDggQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMzcsMTAgKzM4LDEwIEBAIGNsYXNzIEpTTWFwOwogCiAvLyBCYXNlZCBv
biB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAogLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1vZHVsZS1yZWNvcmRz
Ci1jbGFzcyBBYnN0cmFjdE1vZHVsZVJlY29yZCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K2NsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8ND4gewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJs
aWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgdXNpbmcgQmFzZSA9
IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8ND47CiAKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAKQEAgLTUwLDYgKzUxLDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKKyAgICB1c2lu
ZyBBcmd1bWVudCA9IEpTR2VuZXJhdG9yOjpBcmd1bWVudDsKKyAgICB1c2luZyBTdGF0ZSA9IEpT
R2VuZXJhdG9yOjpTdGF0ZTsKKyAgICB1c2luZyBSZXN1bWVNb2RlID0gSlNHZW5lcmF0b3I6OlJl
c3VtZU1vZGU7CisKKyAgICBlbnVtIGNsYXNzIEZpZWxkIDogdWludDMyX3QgeworICAgICAgICBT
dGF0ZSwKKyAgICAgICAgTmV4dCwKKyAgICAgICAgVGhpcywKKyAgICAgICAgRnJhbWUsCisgICAg
fTsKKworICAgIHN0YXRpY19hc3NlcnQobnVtYmVyT2ZJbnRlcm5hbEZpZWxkcyA9PSA0KTsKKyAg
ICBzdGF0aWMgc3RkOjphcnJheTxKU1ZhbHVlLCBudW1iZXJPZkludGVybmFsRmllbGRzPiBpbml0
aWFsVmFsdWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IHsKKyAgICAgICAgICAgIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KFN0YXRlOjpJbml0KSksCisgICAgICAgICAgICBqc1Vu
ZGVmaW5lZCgpLAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5k
ZWZpbmVkKCksCisgICAgICAgIH0gfTsKKyAgICB9CisKICAgICAvLyBodHRwczovL3RjMzkuZ2l0
aHViLmlvL2VjbWEyNjIvI3NlYy1zb3VyY2UtdGV4dC1tb2R1bGUtcmVjb3JkcwogICAgIHN0cnVj
dCBFeHBvcnRFbnRyeSB7CiAgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CkBAIC0xMjksOCArMTUy
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQuZ2V0KCk7
CiAgICAgfQogCi0gICAgdm9pZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFs
T2JqZWN0Kik7CisgICAgU3luY2hyb25vdXNuZXNzIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVh
dGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2Rl
KTsKKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGludGVybmFsRmllbGQoRmllbGQgZmllbGQp
IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxk
KSk7IH0KKyAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gaW50ZXJuYWxGaWVsZChGaWVsZCBmaWVs
ZCkgY29uc3QgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1aW50MzJf
dD4oZmllbGQpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQWJzdHJhY3RNb2R1bGVSZWNvcmQoVk0m
LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKaW5kZXggM2YzYjA0ZTVjMjc1NmY1MmNl
Yzg3ZjJiNWM1OTFmODRjNDBlNWRhZC4uZGQ0MTU2NTg1N2FlMjhmMzBjYTBiN2NlODQ3ODg5YzMy
MThkMTUwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3lu
Y0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNH
ZW5lcmF0b3IuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN1c3BlbmRlZFlp
ZWxkID0gLTQsCiAgICAgICAgIEF3YWl0aW5nUmV0dXJuID0gLTUsCiAgICAgfTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBs
ZXRlZCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRl
OjpDb21wbGV0ZWQpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMyX3Q+KEFz
eW5jR2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkgPT0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpDb21wbGV0ZWQpKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PGludDMyX3Q+KEFzeW5jR2VuZXJhdG9yU3RhdGU6
OkV4ZWN1dGluZykgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpF
eGVjdXRpbmcpKTsKIAogICAgIGVudW0gY2xhc3MgQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29u
IDogaW50MzJfdCB7CiAgICAgICAgIE5vbmUgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yLmgKaW5kZXggNzgxNjY2OTI0Y2E0MjNkN2NkYTVmZGY2YTAzNDBh
MDQyNzU3ZjEwZC4uMjU3NjEwMmY1NGM5YjE3NWM0NzZiYTcxNzE1NWNmZTNlZDAxMDE1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCkBAIC00NiwyNiAr
NDYsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdm0uZ2VuZXJhdG9yU3BhY2U8bW9kZT4o
KTsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclJlc3VtZU1vZGUgOiBpbnQzMl90
IHsKKyAgICBlbnVtIGNsYXNzIFJlc3VtZU1vZGUgOiBpbnQzMl90IHsKICAgICAgICAgTm9ybWFs
TW9kZSA9IDAsCiAgICAgICAgIFJldHVybk1vZGUgPSAxLAogICAgICAgICBUaHJvd01vZGUgPSAy
CiAgICAgfTsKIAotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yU3RhdGUgOiBpbnQzMl90IHsKKyAg
ICBlbnVtIGNsYXNzIFN0YXRlIDogaW50MzJfdCB7CiAgICAgICAgIENvbXBsZXRlZCA9IC0xLAog
ICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAgICAgICAgSW5pdCA9IDAsCiAgICAgfTsKIAogICAg
IC8vIFt0aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCi0gICAgZW51bSBjbGFzcyBH
ZW5lcmF0b3JBcmd1bWVudCA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgQXJndW1lbnQgOiBp
bnQzMl90IHsKICAgICAgICAgVGhpc1ZhbHVlID0gMCwKICAgICAgICAgR2VuZXJhdG9yID0gMSwK
ICAgICAgICAgU3RhdGUgPSAyLAogICAgICAgICBWYWx1ZSA9IDMsCiAgICAgICAgIFJlc3VtZU1v
ZGUgPSA0LAogICAgICAgICBGcmFtZSA9IDUsCisgICAgICAgIE51bWJlck9mQXJndW1lbnRzID0g
RnJhbWUsCiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgRmllbGQgOiB1aW50MzJfdCB7CkBAIC04
Miw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiB7IHsKICAgICAgICAg
ICAgIGpzTnVsbCgpLAotICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
R2VuZXJhdG9yU3RhdGU6OkluaXQpKSwKKyAgICAgICAgICAgIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludDMyX3Q+KFN0YXRlOjpJbml0KSksCiAgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAogICAg
ICAgICAgICAganNVbmRlZmluZWQoKSwKICAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCkBAIC0x
MDEsNCArMTAyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiB9
OwogCitPVkVSTE9BRF9SRUxBVElPTkFMX09QRVJBVE9SU19GT1JfRU5VTV9DTEFTU19XSVRIX0lO
VEVHUkFMUyhKU0dlbmVyYXRvcjo6QXJndW1lbnQpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGQ1
ZDQzNmMyNjFlZTgzZTE4MDA2ZGM5YjNiMzUyODNjN2NlYWJmMTMuLjNlOWJkNjI0NTkzMzFiOGE1
MTYyNjIyMzE0OThhZGYyZTExMzcyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjMwLDcgKzIzMCw3IEBAIHN0cnVjdCBHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBKU09iamVjdCogKCpNb2R1bGVMb2FkZXJD
cmVhdGVJbXBvcnRNZXRhUHJvcGVydGllc1B0cikoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxv
YWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7CiAgICAgTW9kdWxlTG9h
ZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXNQdHIgbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXM7CiAKLSAgICB0eXBlZGVmIEpTVmFsdWUgKCpNb2R1bGVMb2FkZXJFdmFs
dWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFs
dWUsIEpTVmFsdWUpOworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRl
UHRyKShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSBrZXksIEpTVmFs
dWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBhd2Fp
dGVkVmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CiAgICAgTW9kdWxlTG9hZGVyRXZhbHVhdGVQ
dHIgbW9kdWxlTG9hZGVyRXZhbHVhdGU7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpQcm9taXNlUmVq
ZWN0aW9uVHJhY2tlclB0cikoSlNHbG9iYWxPYmplY3QqLCBKU1Byb21pc2UqLCBKU1Byb21pc2VS
ZWplY3Rpb25PcGVyYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDc3YmIyYjBiNTlkN2Q2ZmJmNjA1Njk3NzBjNWM2YzI5
Mjg0YjQyYzkuLjc3MTBmZDMwNzIzMjQ3ODE1MmM1NWE0MDQxNzAxMzYyYWNkN2QwNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKQEAg
LTMwNywyMCArMzA3LDIwIEBAIEpTT2JqZWN0KiBKU01vZHVsZUxvYWRlcjo6Y3JlYXRlSW1wb3J0
TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgcmV0dXJuIGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5udWxs
UHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlTG9hZGVy
OjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQorSlNWYWx1ZSBK
U01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2NyaXB0RmV0Y2hl
ciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBkYXRhTG9n
TG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJMb2FkZXIgW2V2YWx1YXRl
XSAiLCBwcmludGFibGVNb2R1bGVLZXkoZ2xvYmFsT2JqZWN0LCBrZXkpKTsKIAogICAgIGlmIChn
bG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1
YXRlKQotICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSgpLT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIHRoaXMsIGtleSwgbW9kdWxl
UmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIpOworICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxP
YmplY3QsIHRoaXMsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUsIHNjcmlwdEZldGNoZXIsIHNlbnRW
YWx1ZSwgcmVzdW1lTW9kZSk7CiAKLSAgICByZXR1cm4gZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2Jh
bE9iamVjdCwga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgcmV0
dXJuIGV2YWx1YXRlTm9uVmlydHVhbChnbG9iYWxPYmplY3QsIGtleSwgbW9kdWxlUmVjb3JkVmFs
dWUsIHNjcmlwdEZldGNoZXIsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CiB9CiAKLUpTVmFsdWUg
SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlLCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlKQorSlNW
YWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGVOb25WaXJ0dWFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgaWYgKGF1dG8q
IG1vZHVsZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8QWJzdHJhY3RNb2R1bGVSZWNvcmQqPihnbG9i
YWxPYmplY3QtPnZtKCksIG1vZHVsZVJlY29yZFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG1vZHVs
ZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG1vZHVsZVJl
Y29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwogICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0zNjUsNiArMzY1LDggQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoSlNXZWJBc3NlbWJseTo6aW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNl
LCBtb2R1bGVLZXksIGpzU291cmNlQ29kZSkpKTsKICNlbmRpZgogCisgICAgZGF0YUxvZ0xuSWYo
T3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpLCAibG9hZGVyIFtwYXJzaW5nXSAiLCBt
b2R1bGVLZXkpOworCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dy
YW1Ob2RlPigKICAgICAgICAgdm0sIHNvdXJjZUNvZGUsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKQEAgLTQwOSwxMCArNDExLDEwIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihtb2R1bGVMb2FkZXJNb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24s
IChKU0dsb2JhbE9iCiAKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGlu
Z1N0YXRlKCksICJMb2FkZXIgW2xpbmtdICIsIG1vZHVsZVJlY29yZC0+bW9kdWxlS2V5KCkpOwog
Ci0gICAgbW9kdWxlUmVjb3JkLT5saW5rKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgYXV0byBzeW5jID0gbW9kdWxlUmVjb3JkLT5saW5rKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN5bmMgPT0gU3lu
Y2hyb25vdXNuZXNzOjpBc3luYykpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00ODEs
NyArNDgzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlckV2YWx1YXRl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKICAgICBKU01vZHVsZUxvYWRlciog
bG9hZGVyID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZUxvYWRlcio+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+
ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgzKSwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5oCmluZGV4IDFlMDZiNzcwYTFmOGFjYmEzNDEwZGMyMWFlZTBmZmUwMWFlZTlj
MjAuLmIzZDg1YTk1Y2ZmZmM2OTEwOTRlZDk2MjNhZGQxZWI4ZWI4ZWZjMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaApAQCAtODQsOCArODQs
OCBAQCBwdWJsaWM6CiAgICAgSlNPYmplY3QqIGNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBrZXksIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKIAogICAgIC8vIEFkZGl0aW9uYWwgcGxhdGZvcm0gZGVwZW5kZW50IGhvb2tl
ZCBBUElzLgotICAgIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtl
eSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNW
YWx1ZSBldmFsdWF0ZU5vblZpcnR1YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBtb2R1bGVSZWNvcmQsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNWYWx1ZSBl
dmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29y
ZCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1
bWVNb2RlKTsKKyAgICBKU1ZhbHVlIGV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
LCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKIAogICAgIC8vIFV0aWxp
dHkgZnVuY3Rpb25zLgogICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1l
c3BhY2VPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG1vZHVsZVJlY29yZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXgg
MWQ1MDc1ODczNmJiODQ4ZWZkMDI1MWQxODI0OTkyOWFjYWYyYTdmMC4uN2I2YjA2OTg4MDRjMjQ4
NjZmMTEwMDE3N2U4MmZhM2E0YTVhZmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEpTTW9k
dWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0
b3IpCiAKIERFRklORV9WSVNJVF9DSElMRFJFTihKU01vZHVsZVJlY29yZCk7CiAKLXZvaWQgSlNN
b2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKQorU3luY2hyb25vdXNuZXNzIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtOTAsMTEgKzkwLDEzIEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omxp
bmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZXhlY3V0YWJsZSk7
CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFN5bmNocm9u
b3VzbmVzczo6U3luYzsKICAgICB9CiAgICAgaW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoZ2xvYmFs
T2JqZWN0LCBleGVjdXRhYmxlLCBzY3JpcHRGZXRjaGVyKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFN5bmNo
cm9ub3VzbmVzczo6U3luYyk7CiAgICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5zZXQodm0s
IHRoaXMsIGV4ZWN1dGFibGUpOworCisgICAgcmV0dXJuIGV4ZWN1dGFibGUtPnVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jaygpLT5pc0FzeW5jKCkgPyBTeW5jaHJvbm91c25lc3M6OkFzeW5j
IDogU3luY2hyb25vdXNuZXNzOjpTeW5jOwogfQogCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjppbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUsIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKQEAgLTIzOCwxNCArMjQwLDE2IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3Rh
bnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1vZHVsCiAg
ICAgc2V0TW9kdWxlRW52aXJvbm1lbnQoZ2xvYmFsT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCk7
CiB9CiAKLUpTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCitKU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2Rl
KQogewogICAgIGlmICghbV9tb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9tb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5nZXQoKTsKLSAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7Ci0gICAg
cmV0dXJuIHZtLmludGVycHJldGVyLT5leGVjdXRlTW9kdWxlUHJvZ3JhbShleGVjdXRhYmxlLCBn
bG9iYWxPYmplY3QsIG1vZHVsZUVudmlyb25tZW50KCkpOworICAgIEpTVmFsdWUgcmVzdWx0T3JB
d2FpdGVkVmFsdWUgPSB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZU1vZHVsZVByb2dyYW0odGhpcywg
ZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCgpLCBzZW50VmFsdWUs
IHJlc3VtZU1vZGUpOworICAgIGlmIChKU1ZhbHVlIHN0YXRlID0gaW50ZXJuYWxGaWVsZChGaWVs
ZDo6U3RhdGUpLmdldCgpOyAhc3RhdGUuaXNOdW1iZXIoKSB8fCBzdGF0ZS5hc051bWJlcigpID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTdGF0ZTo6RXhlY3V0aW5nKSkKKyAgICAgICAgbV9tb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZS5jbGVhcigpOworICAgIHJldHVybiByZXN1bHRPckF3YWl0ZWRW
YWx1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCA4YTU1MDdhZjRhYzZiNDE2ODUwOTg3ODg2
MTFiMTE2ZThlYzZhZWYzLi4wMWFlMDBjMDkzZDFiMjdhYTdiNzY5YmRhZGJhOTU4MTQzOTY2NzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29y
ZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgK
QEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTTW9k
dWxlUmVjb3JkKiBjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKTsKIAotICAgIHZvaWQgbGluayhKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCopOworICAgIFN5bmNocm9ub3VzbmVzcyBs
aW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzZW50
VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CiAKICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2VDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VDb2RlOyB9CiAgICAgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX2RlY2xh
cmVkVmFyaWFibGVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAppbmRleCA3ODUxMTVjOTRiNWMwZTY5MTNlYzQz
NmI3MTcxYjk1NWY3OTk2OTM3Li41OTU0MzczNWFkMTUzNTU4ZDY2NjYyYmQyOWJjMjVhM2YyOTgz
OGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9n
cmFtRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLmgKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIEV4ZWN1
dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8o
dXNlc0V2YWwoKSwgZmFsc2UsIFByaXZhdGVCcmFuZFJlcXVpcmVtZW50OjpOb25lLCBmYWxzZSwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlLCBk
ZXJpdmVkQ29udGV4dFR5cGUoKSwgTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Ok5vLCBpc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCksIGZhbHNlLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUpOyB9CiAK
ICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jaygpIHsgcmV0dXJuIG1fdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrLmdl
dCgpOyB9CisgICAgYm9vbCBpc0FzeW5jKCkgY29uc3QgeyByZXR1cm4gZmVhdHVyZXMoKSAmIEF3
YWl0RmVhdHVyZTsgfQogCiAgICAgU3ltYm9sVGFibGUqIG1vZHVsZUVudmlyb25tZW50U3ltYm9s
VGFibGUoKSB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUuZ2V0KCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYWY3
YzcyNDk3MTczNWYwNzcwNGE1ZDA2YWZiYTJkNzZlYmI2YTUwMy4uYTgwNjc4YmQ1ODcwMzU5MDA0
ZjAzN2NiZTA4NmRkMTQ0Y2IxYzU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCkBAIC00ODMsMTYgKzQ4Myw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoT3B0aW9uUmFuZ2UsIHdhc21GdW5jdGlvbkluZGV4
UmFuZ2VUb0NvbXBpbGUsIDAsIE5vcm1hbCwgIndhc20gZnVuY3Rpb24gaW5kZXggcmFuZ2UgdG8g
YWxsb3cgY29tcGlsYXRpb24gb24sIGUuZy4gMToxMDAiKSBcCiAgICAgdihCb29sLCB3YXNtTExJ
bnRUaWVyc1VwVG9CQlEsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoU2l6ZSwgd2Vi
QXNzZW1ibHlCQlFBaXJNb2RlVGhyZXNob2xkLCBpc0lPUygpID8gKDEwICogTUIpIDogMCwgTm9y
bWFsLCAiSWYgMCwgd2UgYWx3YXlzIHVzZSBCQlEgQWlyLiBJZiBXYXNtIG1vZHVsZSBjb2RlIHNp
emUgaGl0cyB0aGlzIHRocmVzaG9sZCwgd2UgY29tcGlsZSBXYXNtIG1vZHVsZSB3aXRoIEIzIEJC
USBtb2RlLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5U3RyZWFtaW5nLCB0cnVlLCBO
b3JtYWwsICJBbGxvdyB0byBydW4gV2ViQXNzZW1ibHkncyBTdHJlYW1pbmcgQVBJIikgXAogICAg
IHYoQm9vbCwgdXNlRWFnZXJXZWJBc3NlbWJseU1vZHVsZUhhc2hpbmcsIGZhbHNlLCBOb3JtYWws
ICJVbm5hbWVkIFdlYkFzc2VtYmx5IG1vZHVsZXMgYXJlIGlkZW50aWZpZWQgaW4gYmFja3RyYWNl
cyB0aHJvdWdoIHRoZWlyIGhhc2gsIGlmIGF2YWlsYWJsZS4iKSBcCi0gICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseVJlZmVyZW5jZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhl
IHdhc20gcmVmZXJlbmNlcyBzcGVjLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVs
dGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQt
dmFsdWVzIHNwZWMuIikgXAotICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRocmVhZGluZyBz
cGVjLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCB0cnVlLCBOb3JtYWwsICJFeHBvc2Ug
dGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAotICAgIHYoQm9vbCwgdXNlSW50bERhdGVUaW1l
Rm9ybWF0RGF5UGVyaW9kLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGF0ZVRpbWVG
b3JtYXQgZGF5UGVyaW9kIGZlYXR1cmUuIikgXAotICAgIHYoQm9vbCwgdXNlSW50bERhdGVUaW1l
Rm9ybWF0UmFuZ2VUb1BhcnRzLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGF0ZVRp
bWVGb3JtYXQjZm9ybWF0UmFuZ2VUb1BhcnRzIGZlYXR1cmUuIikgXAotICAgIHYoQm9vbCwgdXNl
QXRNZXRob2QsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5
LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJpbmcuIikgXAotICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJy
YXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5
QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ug
b3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxv
Y2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwKICAg
ICB2KEJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRl
X3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1
Y3R1cmUuIikgXAogICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgaXQgd2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApAQCAtNTEzLDggKzUw
NCw2IEBAIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoQm9v
bCwgdXNlUmFuZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1h
bCwgIkZvciB0aGUgYXJtNjQgRXhlY3V0YWJsZUFsbG9jYXRvciwgaWYgdHJ1ZSwgc2VsZWN0IHdo
aWNoIHJlZ2lvbiB0byB1c2UgcmFuZG9tbHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIHRo
YXQganVtcCBpc2xhbmRzIHdvcmsuIikgXAogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25H
bG9iYWxPYmplY3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5j
dGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRo
ZSBzdXBlciBzYW1wbGVyIikgXAogICAgIHYoQm9vbCwgYWxsb3dVbnN1cHBvcnRlZFRpZXJzLCBm
YWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBub3QgZGlzYWJsZSBERkcgb3IgRlRMIHdo
ZW4gYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgaXMgZW5hYmxlZC4iKSBcCi0gICAgdihCb29sLCB1
c2VQcml2YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIg
d2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAot
ICAgIHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRo
ZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0aG9kcyBpbnNpZGUgY2xhc3Nlcy4i
KSBcCiAgICAgdihCb29sLCByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZywg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoU2l6ZSwgZWFybHlSZXR1cm5Gcm9tSW5m
aW5pdGVMb29wc0xpbWl0LCAxMzAwMDAwMDAwLCBOb3JtYWwsICJXaGVuIHJldHVybkVhcmx5RnJv
bUluZmluaXRlTG9vcHNGb3JGdXp6aW5nIGlzIHRydWUsIHRoaXMgZGV0ZXJtaW5lcyB0aGUgbnVt
YmVyIG9mIGV4ZWN1dGlvbnMgYSBsb29wIGNhbiBydW4gZm9yIGJlZm9yZSBqdXN0IHJldHVybmlu
Zy4gVGhpcyBpcyBoZWxwZnVsIGZvciB0aGUgZnV6emVyIHNvIGl0IGRvZXNuJ3QgZ2V0IHN0dWNr
IGluIGluZmluaXRlIGxvb3BzLiIpIFwKICAgICB2KEJvb2wsIHVzZUxJQ01GdXp6aW5nLCBmYWxz
ZSwgTm9ybWFsLCBudWxscHRyKSBcCkBAIC01MjIsOCArNTExLDI0IEBAIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgY2FuVXNlSklUQ2FnZSgpOwogICAgIHYoRG91YmxlLCBhbGxvd0hvaXN0aW5nTElD
TVByb2JhYmlsaXR5LCAwLjUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgZXhwb3Nl
Q3VzdG9tU2V0dGVyc09uR2xvYmFsT2JqZWN0Rm9yVGVzdGluZywgZmFsc2UsIE5vcm1hbCwgbnVs
bHB0cikgXAogICAgIHYoQm9vbCwgdXNlSklUQ2FnZSwgY2FuVXNlSklUQ2FnZSgpLCBOb3JtYWws
IG51bGxwdHIpIFwKKyAgICBcCisgICAgLyogRmVhdHVyZSBGbGFncyAqL1wKKyAgICBcCiAgICAg
dihCb29sLCB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIHN0YXRpYyBkYXRhIGZpZWxkcyBp
bnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVs
ZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHBy
aXZhdGUgc3RhdGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2ws
IHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNl
ciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBc
CisgICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
dGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRob2RzIGluc2lkZSBjbGFzc2Vz
LiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5U3RyZWFtaW5nLCB0cnVlLCBOb3JtYWws
ICJBbGxvdyB0byBydW4gV2ViQXNzZW1ibHkncyBTdHJlYW1pbmcgQVBJIikgXAorICAgIHYoQm9v
bCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBm
cm9tIHRoZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3Nl
bWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNt
IG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5VGhyZWFk
aW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgd2FzbSB0aHJl
YWRpbmcgc3BlYy4iKSBcCisgICAgdihCb29sLCB1c2VXZWFrUmVmcywgdHJ1ZSwgTm9ybWFsLCAi
RXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxE
YXRlVGltZUZvcm1hdERheVBlcmlvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLkRh
dGVUaW1lRm9ybWF0IGRheVBlcmlvZCBmZWF0dXJlLiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxE
YXRlVGltZUZvcm1hdFJhbmdlVG9QYXJ0cywgdHJ1ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRs
LkRhdGVUaW1lRm9ybWF0I2Zvcm1hdFJhbmdlVG9QYXJ0cyBmZWF0dXJlLiIpIFwKKyAgICB2KEJv
b2wsIHVzZUF0TWV0aG9kLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBhdCgpIG1ldGhvZCBv
biBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKKyAgICB2KEJvb2wsIHVzZVNo
YXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdihCb29sLCB1
c2VUb3BMZXZlbEF3YWl0LCBmYWxzZSwgTm9ybWFsLCAiYWxsb3cgdGhlIGF3YWl0IGtleXdvcmQg
YXQgdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZS4iKSBcCisKIAogZW51bSBPcHRpb25FcXVpdmFs
ZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAppbmRleCAzMmUzMWJiOTBjMzYyMTY3OGFkODc5ZDkzOTFiNDZhZDdi
MzhjM2ZlLi4xYzI3YWQ0OTZjY2Q3Mzc2MTBmYWEwMmExOTAzMDViNmQ1MTRkZjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0zMyw2ICsz
Myw4IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJUeXBlUHJv
ZmlsZXIuaCIKIAorI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKwogbmFtZXNwYWNlIEpT
QyB7CiAKIGNvbnN0IENsYXNzSW5mbyBTeW1ib2xUYWJsZTo6c19pbmZvID0geyAiU3ltYm9sVGFi
bGUiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN5bWJv
bFRhYmxlKSB9OwpAQCAtMjgzLDUgKzI4NSwxNyBAQCBSZWZQdHI8VHlwZVNldD4gU3ltYm9sVGFi
bGU6Omdsb2JhbFR5cGVTZXRGb3JWYXJpYWJsZShjb25zdCBDb25jdXJyZW50SlNMb2NrZXImCiAg
ICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogfQogCit2b2lkIFN5bWJvbFRhYmxlOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xv
Y2spOworICAgIEJhc2U6OmR1bXAob3V0KTsKKworICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAg
ICBvdXQucHJpbnQoIiA8Iik7CisgICAgZm9yIChhdXRvJiBpdGVyIDogbV9tYXApCisgICAgICAg
IG91dC5wcmludChjb21tYSwgKml0ZXIua2V5LCAiOiAiLCBpdGVyLnZhbHVlLnZhck9mZnNldCgp
KTsKKyAgICBvdXQucHJpbnRsbigiPiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggMDE3OTZjN2Rl
ZDYzNDM3YzVmNjMzNzJkYmIxNjRiN2MyOTkyMDE4Ny4uZTVhMjA2NWMyZjU0YzZjZDcyNzc5NjA3
OWRhZjA0OTg2M2ZhMGM3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCkBAIC03MzgsNiArNzM4LDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87CiAKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7CisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgU3ltYm9sVGFibGUoVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCBiNTU2ODZlYmU2
NWMxZDZiOTNiNjcyODU3NzI3MzkxYzhmZWNkZDQ4Li4yOTE3MjQ5N2NjMTEzNDY4NmFhOGJiZWFk
ZTBhMWVlMWE0YTE2ZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC05Nyw3ICs5NywxMyBAQCB2
b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpwcmVwYXJlTGluayhWTSYgdm0sIEpTV2ViQXNz
ZW1ibHlJbnN0YW5jZSogaW5zdGFuYwogICAgIG1faW5zdGFuY2Uuc2V0KHZtLCB0aGlzLCBpbnN0
YW5jZSk7CiB9CiAKLXZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2Fz
bTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKK1N5bmNocm9ub3VzbmVzcyBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2Rl
KQoreworICAgIGxpbmtJbXBsKGdsb2JhbE9iamVjdCwgaW1wb3J0T2JqZWN0LCBjcmVhdGlvbk1v
ZGUpOworICAgIHJldHVybiBTeW5jaHJvbm91c25lc3M6OlN5bmM7Cit9CisKK3ZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCmluZGV4IDM3MmJmOWIzNzg3Zjhj
N2NhYmI3MDkwYjZiY2E4MDJhNmU0YTU4ZTAuLjZjOTk5MjExYmUwNDA2OGUxZmYyMTQ4Zjc2NmE3
Y2ExZTg1YjQ1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApAQCAtNTksMTIgKzU5LDEzIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFdhc206Ok1vZHVs
ZUluZm9ybWF0aW9uJik7CiAKICAgICB2b2lkIHByZXBhcmVMaW5rKFZNJiwgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKik7Ci0gICAgdm9pZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUpOwor
ICAgIFN5bmNocm9ub3VzbmVzcyBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUpOwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqKTsKIAog
ICAgIEpTT2JqZWN0KiBleHBvcnRzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9leHBvcnRzT2Jq
ZWN0LmdldCgpOyB9CiAKIHByaXZhdGU6CisgICAgdm9pZCBsaW5rSW1wbChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSk7CiAgICAgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQoVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7
CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBjb25zdCBX
YXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2ZWE4MmIwM2ZlOGM0ZWI1MjA4ODFkYjljNzE1
MmQ5ZTVkZjE0NjhjLi5kNzU4MjczNGFmM2Q1MDcyMDNiNWU0MzhiN2JlOWVlYzBmZjU5NjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApA
QCAtMjI3LDcgKzIyNyw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpsaW5rQW5k
RXZhbHVhdGVNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmCiAgICAgcmV0dXJuIGxp
bmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvcmQmIG1vZHVsZVJl
Y29yZCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK0pTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvcmQm
IG1vZHVsZVJlY29yZCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpKU1ZhbHVlIGF3YWl0
ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sod29ybGQudm0oKSk7CiAKQEAgLTI0MCwxNSArMjQwLDE1IEBAIEpTQzo6SlNWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1
bGVSZWNvCiAgICAgU2V0Rm9yU2NvcGU8Y29uc3QgVVJMKj4gc291cmNlVVJMU2NvcGUobV9zb3Vy
Y2VVUkwsICZzb3VyY2VVUkwpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLnN0cmluZygpLCBqc1NvdXJjZUNvZGUu
Zmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSwganNTb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkub25l
QmFzZWRJbnQoKSk7Ci0gICAgYXV0byByZXR1cm5WYWx1ZSA9IG1vZHVsZVJlY29yZC5ldmFsdWF0
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byByZXR1cm5WYWx1ZSA9IG1vZHVsZVJl
Y29yZC5ldmFsdWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgYXdhaXRlZFZhbHVlLCByZXN1bWVN
b2RlKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1f
ZnJhbWUpOwogCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1KU0M6OkpTVmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9k
dWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1
bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVN
b2RlKQogewotICAgIHJldHVybiBldmFsdWF0ZU1vZHVsZShzb3VyY2VVUkwsIG1vZHVsZVJlY29y
ZCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiBldmFsdWF0ZU1vZHVsZShz
b3VyY2VVUkwsIG1vZHVsZVJlY29yZCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGF3YWl0ZWRW
YWx1ZSwgcmVzdW1lTW9kZSk7CiB9CiAKIFJlZjxET01XcmFwcGVyV29ybGQ+IFNjcmlwdENvbnRy
b2xsZXI6OmNyZWF0ZVdvcmxkKGNvbnN0IFN0cmluZyYgbmFtZSwgV29ybGRUeXBlIHR5cGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOTY0
M2I5MmZmOGYwNzMzYTg4Yzg5YzRiMGQxNDcwZGVjMGJjZTkyZi4uNjA4MjEyYjJiNWFlYTYyMjIy
ZDhlNTE2ODZhYWRjOTlkZjRhYTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTIzLDggKzEyMyw4IEBAIHB1YmxpYzoKICAgICBKU0M6
OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2FkYWJsZU1vZHVs
ZVNjcmlwdCYgLCBET01XcmFwcGVyV29ybGQmKTsKICAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2
YWx1YXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0Jik7CiAKLSAgICBKU0M6OkpT
VmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYsIERP
TVdyYXBwZXJXb3JsZCYpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBV
UkwmLCBKU0M6OkpTTW9kdWxlUmVjb3JkJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9k
dWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmLCBET01XcmFwcGVyV29ybGQmLCBK
U0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSk7CisgICAg
SlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNv
cmQmLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSk7
CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNw
cAppbmRleCBkMWVlNzFiOWI1NWYwNTZiYzM1NmE2OTZmMzAxZTg0ZGFkZTc3Y2Y4Li40NzUxZTBh
MDBiYmM4NDczODE0YjBlNjA3ZTAwZmJiODU3ZWVkOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTIyMCw3ICsyMjAsNyBA
QCBVUkwgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21SZXF1ZXN0VVJMKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGpzR2xvYmFsTwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTQzo6
SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGpzR2xvYmFsT2JqZWN0LCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVs
ZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTQzo6SlNWYWx1ZSkK
K0pTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVl
IG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTQzo6SlNW
YWx1ZSwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUp
CiB7CiAgICAgSlNDOjpWTSYgdm0gPSBqc0dsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBKU0M6
OkpTVmFsdWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiBqc0dsb2JhbE9iamVjdCwgSgogCiAgICAgaWYgKG1fb3duZXJUeXBlID09IE93bmVyVHlwZTo6
RG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KG1fY29udGV4dCkuZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCku
ZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCAqbW9kdWxlUmVjb3JkKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCAqbW9kdWxlUmVj
b3JkLCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4obV9jb250ZXh0KSk7CiAgICAgICAg
IGlmIChhdXRvKiBzY3JpcHQgPSBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4o
bV9jb250ZXh0KS5zY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JpcHQtPmV2YWx1YXRl
TW9kdWxlKCptb2R1bGVSZWNvcmQpOworICAgICAgICAgICAgcmV0dXJuIHNjcmlwdC0+ZXZhbHVh
dGVNb2R1bGUoKm1vZHVsZVJlY29yZCwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsKICAgICB9
CiAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggZGYzNGQ1NTFhMTFjZDk4ZjRl
MjM2YTJhYTFmNDgyNzlkOTY0YzY4NS4uZTgyYThiYjQzMzcxZWE2Y2FiOGZjZmE4NDI0ZDg3ZWIz
Yzk4NjMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9k
dWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgSlNDOjpJZGVudGlmaWVy
IHJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6
OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxlS2V5LCBKU0M6
OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogZmV0
Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFs
dWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgSlNDOjpKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNW
YWx1ZSBtb2R1bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU0M6
OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBK
U0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlND
OjpKU1ZhbHVlIHJlc3VtZU1vZGUpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIGltcG9y
dE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6
SlNTdHJpbmcqLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgSlNDOjpTb3VyY2VPcmln
aW4mKTsKICAgICBKU0M6OkpTT2JqZWN0KiBjcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlND
OjpKU01vZHVsZVJlY29yZCosIEpTQzo6SlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODU0ZjlmYjM1ZTZkYjBlMzVhOTIx
MTcxZjliMzEyNmYzNWQ4Y2U4YS4uMmE2MzAyODc1NjRmZWE0ZTIwNGFmMmI0YTIxZmZiZWNjZmVi
NGUyMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0yMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIFRvcC1sZXZlbCBhd2FpdCBw
cm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAyNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTAyLTIxICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBncmFkZSB0ZXN0MjYyCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKaW5kZXggMmZjZWI0NDg3M2ZjY2JkYTAxMTVlNWRmZDNiMWNiYTI0N2M4MjNmNi4uODU1
ZDUwNmFjNGIyZmEwZjI2NzI3MGRmNjk1NzI2NmZlZTA2YTQ3MCAxMDA2NDQKLS0tIGEvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApA
QCAtMTQsNiArMTQsNyBAQCBmbGFnczoKICAgQXJyYXkucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhv
ZAogICBUeXBlZEFycmF5LnByb3RvdHlwZS5hdDogdXNlQXRNZXRob2QKICAgU3RyaW5nLnByb3Rv
dHlwZS5hdDogdXNlQXRNZXRob2QKKyAgdG9wLWxldmVsLWF3YWl0OiB1c2VUb3BMZXZlbEF3YWl0
CiBza2lwOgogICBmZWF0dXJlczoKICAgICAtIEF0b21pY3Mud2FpdEFzeW5jCkBAIC0yNiw4ICsy
Nyw2IEBAIHNraXA6CiAKICAgICAjIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyMTQyCiAgICAgLSByZWdleHAtbWF0Y2gtaW5kaWNlcwotCi0gICAgLSB0
b3AtbGV2ZWwtYXdhaXQKICAgcGF0aHM6CiAgIGZpbGVzOgogICAgICMgU2xpZ2h0bHkgZGlmZmVy
ZW50IGZvcm1hdHRpbmcuIFdlIHNob3VsZCB1cGRhdGUgdGVzdDI2MiBzaWRlLgo=
</data>
<flag name="commit-queue"
          id="439929"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421157</attachid>
            <date>2021-02-21 16:02:44 -0800</date>
            <delta_ts>2021-02-21 16:05:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202484-20210221160243.patch</filename>
            <type>text/plain</type>
            <size>84019</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MzA4YmU5ZWZkM2FmNTkwYWVhMzQwNjFjM2EyMmY3OTlmMDRmMmM5Li45MTQzMDBkOGI0ZjM0MTlm
YjNmNmU4OWMyNzg1MmNjNWNhMGVhNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdhaXQgcHJvcG9zYWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgVExBIHByb3Bvc2FsLiBUaGUgYnVsayBvZiB0aGlzIHBh
dGNoIGlzIGFkZGluZyBhIGNvdXBsZSBvZiBtYWluIHBhcnRzLgorCisgICAgICAgIDEpIGNvbnZl
cnRpbmcgdGhlIEFic3RyYWN0TW9kdWxlUmVjb3JkIHRvIGNvbnRhaW4gbWFueSBvZiBzYW1lIGlu
dGVybmFsIGZpZWxkcyBhcyBKU0dlbmVyYXRvciBzbyBtdWNoIG9mIHRoZSBhc3luYyBjb2RlZ2Vu
IGNhbiBiZSBzaGFyZWQuCisgICAgICAgIDIpIGhhdmluZyB0aGUgbGluayBwaGFzZSBvZiB0aGUg
bW9kdWxlIGxvYWRlciByZWNvcmQgd2hldGhlciBhIG1vZHVsZSBzdWJncmFwaCBpcyBhc3luYy4K
KyAgICAgICAgMykgdGVhY2hpbmcgdGhlIG1vZHVsZSBsb2FkZXIgdGhhdCBldmFsdWF0aW5nIGEg
bW9kdWxlIG1heSByZXF1aXJlIG1vcmUgdGhhbiBvbmUgdm0gZW50cnkgYW5kIGZvcndhcmRpbmcg
dGhlIGF3YWl0ZWQgdmFsdWUgYXMgd2VsbCBhcyB0aGUgcmVzdW1lIG1vZGUgdG8gdGhlIFZNLgor
CisgICAgICAgIE9uZSB0aGluZyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYWJvdXQgdGhpcyBw
YXRjaCBpcyB0aGF0IG1vZHVsZUV2YWx1YXRpb24gbm93ICpzb21ldGltZXMqICh3aGVuIGEgc3Ry
b25nbHkgY29ubmVjdGVkIHN1YmdyYXBoIGlzIGFzeW5jKSB3aWxsIHJldHVybiBhIHByb21pc2Uu
IFRoaXMgaGFwcGVuZWQgdG8gYWxyZWFkeSBiZSBhd2FpdGVkIHdoZW4gY2FsbGVkIGZyb20gbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlICh1bm5lY2Vzc2FyaWx5IGJlZm9yZSkgYnV0IG5vdyBhbHNvIG5l
ZWRzIHRvIGJlIGhhbmRsZWQgYnkgcmVxdWVzdEltcG9ydE1vZHVsZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSBldmVyeSB0ZXN0IEkgY2FtZSB1cCB3aXRoIHdhcyBzdWJzdW1lZCBi
eSB0ZXN0cyBhbHJlYWR5IGluIHRlc3QyNjIuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgIChK
U0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICog
YnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdp
c3RyeUVudHJ5KToKKyAgICAgICAgKGxpbmspOgorICAgICAgICAoYXN5bmMgcmVxdWVzdEltcG9y
dE1vZHVsZSk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KHJlcXVlc3RJbXBvcnRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWxsTGVhdmVDYWxsRnJhbWVEZWJ1Z0hvb2spOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0TW9kdWxl
UmVjb3JkSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmll
bGQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXdhaXQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp1c2VzQXdh
aXQpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVBy
b2dyYW1Ob2RlOjpNb2R1bGVQcm9ncmFtTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTVG9rZW46OmR1
bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNv
cmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6aW5pdGlhbFZhbHVlcyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjppbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omlu
dGVybmFsRmllbGQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXZhbHVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiBydW50
aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJs
ZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorCiAyMDIxLTAyLTIxICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNJbnRlcm5hbFByb21pc2U6OnRo
ZW4gY2FuIGZhaWwgaWYgZXhlY3V0aW9uIGlzIHRlcm1pbmF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAppbmRleCA4MTY3YzVjYzBiYzRhZmQ5N2M5
ODU2NDk1M2RkZWQ0MzBjNzMzZTU4Li40NzIxNzkyYWRhNDExYTlhYmI2NTkyODMxOGVlZjFlODNj
NzMyYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVj
dC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSWRlbnRpZmllciBtb2R1
bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVl
IGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVycmVyVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBK
U0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqLCBKU01v
ZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRpYyBKU09i
amVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNWYWx1ZSk7
Ci0gICAgc3RhdGljIEpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxPYmplY3Qq
LCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIHN0YXRp
YyBKU1ZhbHVlIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVM
b2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKIAog
ICAgIEpTVmFsdWUgbG9hZEFuZEV2YWx1YXRlSlNTY3JpcHRNb2R1bGUoY29uc3QgSlNMb2NrSG9s
ZGVyJiwgSlNTY3JpcHQgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJ
R2xvYmFsT2JqZWN0Lm1tCmluZGV4IGRlZTczMjUzZjg1ZDViMTI4ZDJjMmIzYWE1MjRhYzQyYmQ5
YWE4ZGUuLmQ3YTVlMmZkZTY4ZjdhM2NkNzFkNTllOTk0M2U3NDU1M2ZlODA0NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtMjM5LDcg
KzIzOSw3IEBAIEpTT2JqZWN0KiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRl
SW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplCiAgICAgcmV0dXJuIG1ldGFQcm9wZXJ0
aWVzOwogfQogCi1KU1ZhbHVlIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlciogbW9kdWxlTG9h
ZGVyLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQorSlNWYWx1ZSBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRXZhbHVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXIqIG1vZHVsZUxv
YWRlciwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2Ny
aXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMjU4LDcgKzI1OCw4IEBAIEpTVmFsdWUgSlNBUElHbG9iYWxP
YmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTCiAgICAgICAgIFttb2R1bGVMb2FkZXJEZWxlZ2F0ZSB3aWxsRXZhbHVhdGVNb2R1bGU6dXJs
XTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1vZHVsZUxv
YWRlci0+ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBtb2R1bGVSZWNvcmRW
YWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRhdGUgdGhl
IGRlbGVnYXRlIGNhbGxiYWNrcyBmb3IgYXN5bmMgbW9kdWxlcy4KKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IG1vZHVsZUxvYWRlci0+ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBt
b2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsK
IAogICAgIGlmIChbbW9kdWxlTG9hZGVyRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihkaWRFdmFsdWF0ZU1vZHVsZTopXSkKICAgICAgICAgW21vZHVsZUxvYWRlckRlbGVnYXRl
IGRpZEV2YWx1YXRlTW9kdWxlOnVybF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL01vZHVsZUxvYWRlci5qcwppbmRleCBhOGM4NjE1ZTlkMjFlYWQ0YmM5MzcwNjg3NTc4Mzdj
YmYwYTU4NGQwLi4zYTEwZDBhOGJjNTA1YmQwOWU1NWY2NjQ4MmI5OGY2NTZkOWUxOGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKQEAgLTEw
MCw2ICsxMDAsOCBAQCBmdW5jdGlvbiBuZXdSZWdpc3RyeUVudHJ5KGtleSkKICAgICAgICAgbGlu
a1N1Y2NlZWRlZDogdHJ1ZSwKICAgICAgICAgZXZhbHVhdGVkOiBmYWxzZSwKICAgICAgICAgdGhl
bjogQHVuZGVmaW5lZCwKKyAgICAgICAgaXNBc3luYzogZmFsc2UsCisgICAgICAgIGNvbXBsZXRp
b25Qcm9taXNlOiBAdW5kZWZpbmVkLAogICAgIH07CiB9CiAKQEAgLTI4NiwxMSArMjg4LDE1IEBA
IGZ1bmN0aW9uIGxpbmsoZW50cnksIGZldGNoZXIpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFscmVh
ZHkgaGF2ZSB0aGUgImRlcGVuZGVuY2llcyIgZmllbGQsCiAgICAgICAgIC8vIHdlIGNhbiBjYWxs
IG1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IG9yZGVyCiAg
ICAgICAgIC8vIHdpdGhvdXQgY29uc3RydWN0aW5nIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGJ5IGNh
bGxpbmcgZGVwZW5kZW5jeUdyYXBoLgorICAgICAgICB2YXIgaGFzQXN5bmNEZXBlbmRlbmN5ID0g
ZmFsc2U7CiAgICAgICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRyeS5kZXBlbmRlbmNpZXM7Ci0g
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwg
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmxpbmsoZGVwZW5kZW5jaWVzW2ldLCBmZXRj
aGVyKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5n
dGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBl
bmRlbmNpZXNbaV07CisgICAgICAgICAgICB0aGlzLmxpbmsoZGVwZW5kZW5jeSwgZmV0Y2hlcik7
CisgICAgICAgICAgICBoYXNBc3luY0RlcGVuZGVuY3kgfHw9IGRlcGVuZGVuY3kuaXNBc3luYzsK
KyAgICAgICAgfQogCi0gICAgICAgIHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9u
KGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgICAgIGVudHJ5LmlzQXN5bmMgPSB0aGlzLm1v
ZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbihlbnRyeS5tb2R1bGUsIGZldGNoZXIpIHx8IGhh
c0FzeW5jRGVwZW5kZW5jeTsKICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICBlbnRyeS5s
aW5rU3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgIGVudHJ5LmxpbmtFcnJvciA9IGVycm9yOwpA
QCAtMzAzLDcgKzMwOSw2IEBAIGZ1bmN0aW9uIGxpbmsoZW50cnksIGZldGNoZXIpCiBmdW5jdGlv
biBtb2R1bGVFdmFsdWF0aW9uKGVudHJ5LCBmZXRjaGVyKQogewogICAgIC8vIGh0dHA6Ly93d3cu
ZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9u
Ci0KICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoZW50cnkuZXZhbHVhdGVkKQpAQCAtMzEy
LDEwICszMTcsMzcgQEAgZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihlbnRyeSwgZmV0Y2hlcikK
IAogICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGUgW1tSZXF1ZXN0ZWRNb2R1bGVzXV0gaXMgY2xv
bmVkIGludG8gZW50cnkuZGVwZW5kZW5jaWVzLgogICAgIHZhciBkZXBlbmRlbmNpZXMgPSBlbnRy
eS5kZXBlbmRlbmNpZXM7Ci0gICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2ll
cy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9u
KGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hlcik7CiAKLSAgICB0aGlzLmV2YWx1YXRlKGVudHJ5Lmtl
eSwgZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKKyAgICBpZiAoIWVudHJ5LmlzQXN5bmMpIHsKKyAg
ICAgICAgLy8gU2luY2UgbGlua2luZyBzZXRzIGlzQXN5bmMgZm9yIGFueSBzdHJvbmdseSBjb25u
ZWN0ZWQgY29tcG9uZW50IHdpdGggYW4gYXN5bmMgbW9kdWxlIHdlIHNob3VsZCBvbmx5IGdldCBo
ZXJlIGlmIGFsbCBvdXIgZGVwZW5kZW5jaWVzIGFyZSBhbHNvIHN5bmMuCisgICAgICAgIGZvciAo
dmFyIGkgPSAwLCBsZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5kZW5jaWVzW2ldOworICAgICAg
ICAgICAgQGFzc2VydCghZGVwZW5kZW5jeS5pc0FzeW5jKTsKKyAgICAgICAgICAgIHRoaXMubW9k
dWxlRXZhbHVhdGlvbihkZXBlbmRlbmN5LCBmZXRjaGVyKTsKKyAgICAgICAgfQorCisgICAgICAg
IHRoaXMuZXZhbHVhdGUoZW50cnkua2V5LCBlbnRyeS5tb2R1bGUsIGZldGNoZXIpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHJldHVybiAoYXN5bmMgZnVuY3Rpb24gYXN5bmNNb2R1bGVFdmFsdWF0
aW9uKGVudHJ5LCBkZXBlbmRlbmNpZXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBs
ZW5ndGggPSBkZXBlbmRlbmNpZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICAgICAgYXdhaXQgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKGRlcGVuZGVuY2llc1tpXSwgZmV0Y2hl
cik7CisKKyAgICAgICAgICAgIHZhciByZXN1bWVNb2RlID0gMDsKKyAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGF3YWl0ZWRWYWx1ZSA9IHRoaXMuZXZhbHVh
dGUoZW50cnkua2V5LCBlbnRyeS5tb2R1bGUsIGZldGNoZXIsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1l
TW9kZSk7CisgICAgICAgICAgICAgICAgaWYgKEBnZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVy
bmFsRmllbGQoZW50cnkubW9kdWxlLCBAYWJzdHJhY3RNb2R1bGVSZWNvcmRGaWVsZFN0YXRlKSA9
PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0ZWRWYWx1
ZSA9IGF3YWl0IGF3YWl0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdW1lTW9kZSA9
IDA7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgICAgICBh
d2FpdGVkVmFsdWUgPSBlOworICAgICAgICAgICAgICAgICAgICByZXN1bWVNb2RlID0gMjsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pLkBjYWxsKHRoaXMsIGVu
dHJ5LCBkZXBlbmRlbmNpZXMpOworICAgIH0KIH0KIAogLy8gQVBJcyB0byBjb250cm9sIHRoZSBt
b2R1bGUgbG9hZGVyLgpAQCAtMzY0LDI1ICszOTYsMTMgQEAgYXN5bmMgZnVuY3Rpb24gbG9hZEFu
ZEV2YWx1YXRlTW9kdWxlKG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIGZldGNoZXIpCiAgICAgcmV0
dXJuIGF3YWl0IHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGtleSwgZmV0Y2hlcik7CiB9CiAK
LWZ1bmN0aW9uIHJlcXVlc3RJbXBvcnRNb2R1bGUoa2V5LCBwYXJhbWV0ZXJzLCBmZXRjaGVyKQor
YXN5bmMgZnVuY3Rpb24gcmVxdWVzdEltcG9ydE1vZHVsZShrZXksIHBhcmFtZXRlcnMsIGZldGNo
ZXIpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAgdmFyIGNvbnN0cnVjdG9yID0gQEludGVy
bmFsUHJvbWlzZTsKLSAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNlKGNvbnN0cnVjdG9y
LCAvKiBpc0ludGVybmFsUHJvbWlzZSAqLyB0cnVlKTsKLSAgICBAcmVzb2x2ZVdpdGhvdXRQcm9t
aXNlKHRoaXMucmVxdWVzdFNhdGlzZnkodGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSksIHBhcmFt
ZXRlcnMsIGZldGNoZXIsIG5ldyBAU2V0KSwKLSAgICAgICAgKGVudHJ5KSA9PiB7Ci0gICAgICAg
ICAgICB0cnkgewotICAgICAgICAgICAgICAgIHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGVu
dHJ5LmtleSwgZmV0Y2hlcik7Ci0gICAgICAgICAgICAgICAgQGZ1bGZpbGxQcm9taXNlV2l0aEZp
cnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgdGhpcy5nZXRNb2R1bGVOYW1l
c3BhY2VPYmplY3QoZW50cnkubW9kdWxlKSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikg
ewotICAgICAgICAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rp
b25DYWxsQ2hlY2socHJvbWlzZSwgZXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9LAot
ICAgICAgICAocmVhc29uKSA9PiB7Ci0gICAgICAgICAgICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJz
dFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIHJlYXNvbik7Ci0gICAgICAgIH0p
OwotICAgIHJldHVybiBwcm9taXNlOworICAgIHZhciBlbnRyeSA9IGF3YWl0IHRoaXMucmVxdWVz
dFNhdGlzZnkodGhpcy5lbnN1cmVSZWdpc3RlcmVkKGtleSksIHBhcmFtZXRlcnMsIGZldGNoZXIs
IG5ldyBAU2V0KTsKKyAgICBhd2FpdCB0aGlzLmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShlbnRyeS5r
ZXksIGZldGNoZXIpOworICAgIHJldHVybiB0aGlzLmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChl
bnRyeS5tb2R1bGUpOwogfQogCiBmdW5jdGlvbiBkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKGtl
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCmluZGV4IGE4ZTU2ZDBjZDM5NGJjMWI3YWMwNTI2
YmU4NjY3ZWFjOGJkZDdlNmEuLjZjYjg4Y2U3YWY1MzU3OWE5NmJjYTY0Nzg0YjI3MzFjYTU4Mjhm
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgewogICAgICAgICBhdXRvIG5l
eHRUb0VudGVyUG9pbnQgPSBlbnRlclBvaW50KCkubmV4dCgpOwogICAgICAgICB1bnNpZ25lZCBz
d2l0Y2hUYWJsZUluZGV4ID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygp
OwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvckFyZ3VtZW50OjpTdGF0ZSkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSkpOwogICAgICAgICBhdXRvJiBqdW1wVGFi
bGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CiAgICAgICAgIGp1bXBUYWJs
ZS5taW4gPSAwOwogICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cyA9IFJlZkNvdW50ZWRB
cnJheTxpbnQzMl90PihtX3lpZWxkcy5zaXplKCkgKyAxKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQogICAgIH0KIAogICAgIGZvciAo
Y29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKLSAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpKTsK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnRJbmNsdWRpbmdUaGlzKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVu
dDo6RnJhbWUpKTsKIAogICAgICAgICBhdXRvIGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMu
YXQoZGF0YS5wb2ludCk7CiAgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KQEAgLTI5Mywx
MSArMjkzLDE4IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAKIHZv
aWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdlbmVyYXRvciYgYnl0ZWNvZGVH
ZW5lcmF0b3IsIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uU3RyZWFtV3JpdGVyJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQogewotICAg
IGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0
aW9uKCkpKQorICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0ZWNvZGVzQmVmb3JlR2Vu
ZXJhdG9yaWZpY2F0aW9uKCkpKSB7CisgICAgICAgIGRhdGFMb2dMbigiQnl0ZWNvZGVzIGJlZm9y
ZSBnZW5lcmF0b3JpZmljYXRpb24iKTsKICAgICAgICAgQ29kZUJsb2NrQnl0ZWNvZGVEdW1wZXI8
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3I+OjpkdW1wQmxvY2soY29kZUJsb2NrLCBpbnN0cnVj
dGlvbnMsIFdURjo6ZGF0YUZpbGUoKSk7CisgICAgfQogCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24gcGFzcyhieXRlY29kZUdlbmVyYXRvciwgY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMs
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCk7CiAgICAgcGFzcy5ydW4oKTsKKworICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wQnl0
ZWNvZGVzQmVmb3JlR2VuZXJhdG9yaWZpY2F0aW9uKCkpKSB7CisgICAgICAgIGRhdGFMb2dMbigi
Qnl0ZWNvZGVzIGFmdGVyIGdlbmVyYXRvcmlmaWNhdGlvbiIpOworICAgICAgICBDb2RlQmxvY2tC
eXRlY29kZUR1bXBlcjxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj46OmR1bXBCbG9jayhjb2Rl
QmxvY2ssIGluc3RydWN0aW9ucywgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCmluZGV4IDVjYTM2NDlhN2MxZmM0
Nzc1Nzk5NmYzYzMyMjAyOGNmNDVlMDVjMzIuLjJhNzU4OGQ2ZDVjYzdhMzU4ZThjYzFjODkzMzFj
YjkyMWY3OWI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmgiCiAKKyNpbmNsdWRlICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJ1aWx0
aW5OYW1lcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSWRl
bnRpZmllcklubGluZXMuaCIKQEAgLTg2LDExICs4NywxMSBAQCBCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5KFZNJiB2bSkKICAgICBtX2dlbmVyYXRv
ckZpZWxkTmV4dC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2Vu
ZXJhdG9yOjpGaWVsZDo6TmV4dCkpKTsKICAgICBtX2dlbmVyYXRvckZpZWxkVGhpcy5zZXQobV92
bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6VGhp
cykpKTsKICAgICBtX2dlbmVyYXRvckZpZWxkRnJhbWUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OkZyYW1lKSkpOwotICAgIG1fR2Vu
ZXJhdG9yUmVzdW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7Ci0g
ICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUp
KSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6UmV0
dXJuTW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNv
bXBsZXRlZCkpKTsKLSAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4
ZWN1dGluZykpKTsKKyAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwuc2V0KG1fdm0sIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3Jt
YWxNb2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6VGhyb3dN
b2RlKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZVJldHVybi5zZXQobV92bSwganNOdW1i
ZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlJldHVybk1v
ZGUpKSk7CisgICAgbV9HZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZC5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpDb21wbGV0ZWQpKSk7Cisg
ICAgbV9HZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlN0YXRlOjpFeGVjdXRpbmcpKSk7CiAgICAgbV9hcnJh
eUl0ZXJhdG9yRmllbGRJdGVyYXRlZE9iamVjdC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SXRlcmF0ZWRPYmplY3QpKSk7CiAg
ICAgbV9hcnJheUl0ZXJhdG9yRmllbGRJbmRleC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oSlNBcnJheUl0ZXJhdG9yOjpGaWVsZDo6SW5kZXgpKSk7CiAgICAgbV9hcnJh
eUl0ZXJhdG9yRmllbGRLaW5kLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpLaW5kKSkpOwpAQCAtMTEyLDYgKzExMyw3IEBAIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZt
KQogICAgIG1fQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQuc2V0KG1fdm0sIGpzTnVt
YmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9y
U3VzcGVuZFJlYXNvbjo6QXdhaXQpKSk7CiAgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFz
b25Ob25lLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FzeW5jR2Vu
ZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246Ok5vbmUpKSk7CiAgICAgbV91c2VJ
bnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2Quc2V0KG1fdm0sIGpzQm9vbGVhbihPcHRpb25zOjp1
c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QoKSkpOworICAgIG1fYWJzdHJhY3RNb2R1bGVS
ZWNvcmRGaWVsZFN0YXRlLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihB
YnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6OlN0YXRlKSkpOwogfQogCiBPcHRpb25hbDxCeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5OjpFbnRyeT4gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6
bG9va3VwKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgK
aW5kZXggMWM5MDgyMzhmM2EzZWVhZDNlMGIyNGM0MzVjNTY3ZjE1ZWU3MGJiNi4uNWNmNGZhNTVj
M2VlZWRlZjRmOGVhOTNjZDYxZDQ2NjFlYjY3ZjgyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCkBA
IC00Nyw2ICs0Nyw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAg
ICAgbWFjcm8oZ2V0UHJvbWlzZUludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRHZW5lcmF0
b3JJbnRlcm5hbEZpZWxkKSBcCiAgICAgbWFjcm8oZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZp
ZWxkKSBcCisgICAgbWFjcm8oZ2V0QWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkKSBc
CiAgICAgbWFjcm8oZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhn
ZXRTdHJpbmdJdGVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRNYXBJdGVyYXRv
ckludGVybmFsRmllbGQpIFwKQEAgLTE1Miw2ICsxNTMsNyBAQCBlbnVtIGNsYXNzIExpbmtUaW1l
Q29uc3RhbnQgOiBpbnQzMl90OwogICAgIG1hY3JvKEFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNv
bkF3YWl0KSBcCiAgICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uTm9uZSkgXAog
ICAgIG1hY3JvKHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZCkgXAorICAgIG1hY3JvKGFi
c3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZSkgXAogCiAjZGVmaW5lIEpTQ19DT01NT05fQllU
RUNPREVfSU5UUklOU0lDX0NPTlNUQU5UU19DVVNUT01fRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAg
bWFjcm8oc2VudGluZWxNYXBCdWNrZXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGEyNGQyNjUxYjUxYTg2ZTZjOWU3MDY5ZDc0MjYw
YmNhODU3MWU0OTEuLmNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2ViZmI5ZDcyOTc3NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
MTI5Nyw3ICsxMjk3LDYgQEAgb3AgOml0ZXJhdG9yX25leHQsCiAKIG9wIDp5aWVsZCwKICAgICBh
cmdzOiB7Ci0gICAgICAgIGdlbmVyYXRvcjogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB5aWVs
ZFBvaW50OiB1bnNpZ25lZCwKICAgICAgICAgYXJndW1lbnQ6IFZpcnR1YWxSZWdpc3RlciwKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcAppbmRleCA0MjVhZjI1YjgwNDkyOWY0NjFmMGJiMTM4YzY1YThjZjU0YmI1MjQzLi4wMTZh
MDI3ZmEzM2FiNzk0OTQzMTJhNGE0NzdkZmM1YjJlN2EwMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTI5MSw3ICsyOTEs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVy
IHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BHZXRJbnRlcm5hbEZpZWxk
LCBiYXNlKQogICAgIFVTRVMoT3BQdXRJbnRlcm5hbEZpZWxkLCBiYXNlLCB2YWx1ZSkKIAotICAg
IFVTRVMoT3BZaWVsZCwgZ2VuZXJhdG9yLCBhcmd1bWVudCkKKyAgICBVU0VTKE9wWWllbGQsIGFy
Z3VtZW50KQogCiAgICAgY2FzZSBvcF9pdGVyYXRvcl9vcGVuOiB7CiAgICAgICAgIGF1dG8gYnl0
ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BJdGVyYXRvck9wZW4+KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrLmgKaW5kZXggYjkzMjQ4MWFhNGUyNWM0N2Q3ZTdhZWU0MTFiMDg5ODMzMDBk
YWUxNi4uODUzOWY1NjJiOTMwNTQ2ZGU0YTczODY1ODMxMDBlNjE0ZmI0OTk0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1v
ZHVsZVByb2dyYW1Db2RlQmxvY2suaApAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZUNvbnN0YW50UmVnaXN0ZXJPZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgfQogCisgICAgYm9vbCBpc0FzeW5jKCkgY29uc3QgeyByZXR1cm4gY29kZUZl
YXR1cmVzKCkgJiBBd2FpdEZlYXR1cmU7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgQ2FjaGVk
TW9kdWxlQ29kZUJsb2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDFjZWFiYzBiNWVhZmUyZmRk
YjA5YTJjZGNkNTA2YzA3OWU0OWY3YWQuLmRmOGUwOTM4MDNhY2U1NGZjMDIzYzdiMTg1NGRkZGMw
ZTFjZWQzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAorI2luY2x1ZGUgIkFi
c3RyYWN0TW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JCYXNl
SW5saW5lcy5oIgpAQCAtMjc5LDcgKzI4MCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgfQogICAgIAogCi0gICAgaWYgKGlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpKQorICAgIGlm
IChtX2lzQXN5bmMpCiAgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oKnRoaXMsIG1f
Y29kZUJsb2NrLmdldCgpLCBtX3dyaXRlciwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdl
dCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKICAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPm51bUNhbGxlZUxvY2Fscygp
KSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkpOwpA
QCAtMzg1LDYgKzM4Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBuZWVk
c0FyZ3VtZW50cyA9ICgoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgJiYgIWNvZGVCbG9j
ay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rp
b25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKSAmJiBwYXJzZU1v
ZGUgIT0gU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOwogCiAgICAg
aWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7
CisgICAgICAgIG1faXNBc3luYyA9IHRydWU7CiAgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5
bmNGdW5jdGlvbiBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJl
bmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3Bl
LgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogICAgIH0KQEAgLTQzNCw3ICs0MzYs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGVtaXRFbnRlcigpOwogCiAgICAgaWYg
KGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQotICAg
ICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKKyAgICAgICAgbV9n
ZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpBcmd1bWVudDo6R2VuZXJhdG9yKV07CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRT
Y29wZSgpOwogCkBAIC05NTEsNiArOTUzLDEzIEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAg
ICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpT
dGFjazsKICAgICB9OwogCisgICAgaWYgKG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXdhaXQoKSkg
eworICAgICAgICBtX2lzQXN5bmMgPSB0cnVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDw9IEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHM7ICsraSkKKyAg
ICAgICAgICAgIGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCk7CisgICAgICAgIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1v
ZHVsZVJlY29yZDo6QXJndW1lbnQ6OkdlbmVyYXRvcildOworICAgIH0KKwogICAgIGVtaXRFbnRl
cigpOwogCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKQEAgLTk1OSw3ICs5NjgsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFt
Tm9kZSogbW9kdWxlUHJvZ3JhbU5vZAogICAgIAogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5k
ZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAotICAgIG1fY29kZUJsb2NrLT5zZXROdW1QYXJh
bWV0ZXJzKDEpOyAvLyBBbGxvY2F0ZSBzcGFjZSBmb3IgInRoaXMiCisgICAgbV9jb2RlQmxvY2st
PnNldE51bVBhcmFtZXRlcnMoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHMpICsgMSk7IC8vIEFsbG9jYXRlIHNwYWNl
IGZvciAidGhpcyIgKyBhc3luYyBtb2R1bGUgYXJndW1lbnRzLgogCiAgICAgLy8gTm93IGRlY2xh
cmUgYWxsIHZhcmlhYmxlcy4KIApAQCAtOTgzLDExICs5OTIsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVBy
b2dyYW1Ob2QKIAogICAgIC8vIFdlIGtlZXAgdGhlIHN5bWJvbCB0YWJsZSBpbiB0aGUgY29uc3Rh
bnQgcG9vbC4KICAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlID0gbnVsbHB0cjsK
LSAgICBpZiAoc2hvdWxkRW1pdFR5cGVQcm9maWxlckhvb2tzKCkpCisgICAgaWYgKHNob3VsZEVt
aXRUeXBlUHJvZmlsZXJIb29rcygpIHx8IG1vZHVsZVByb2dyYW1Ob2RlLT51c2VzQXdhaXQoKSkK
ICAgICAgICAgY29uc3RhbnRTeW1ib2xUYWJsZSA9IGFkZENvbnN0YW50VmFsdWUobW9kdWxlRW52
aXJvbm1lbnRTeW1ib2xUYWJsZSk7CiAgICAgZWxzZQogICAgICAgICBjb25zdGFudFN5bWJvbFRh
YmxlID0gYWRkQ29uc3RhbnRWYWx1ZShtb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlLT5jbG9u
ZVNjb3BlUGFydChtX3ZtKSk7CiAKKyAgICBpZiAobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBd2Fp
dCgpKSB7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQobV92bSwgbW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4ID0gY29uc3RhbnRTeW1ib2xUYWJsZS0+aW5kZXgoKTsKKyAgICAgICAgZW1p
dFB1dEludGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6RnJhbWUpLCBnZW5lcmF0b3JGcmFtZVJl
Z2lzdGVyKCkpOworICAgIH0KKwogICAgIHB1c2hURFpWYXJpYWJsZXMobGV4aWNhbFZhcmlhYmxl
cywgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJU
RFopOwogICAgIGJvb2wgaXNXaXRoU2NvcGUgPSBmYWxzZTsKICAgICBtX2xleGljYWxTY29wZVN0
YWNrLmFwcGVuZCh7IG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUsIG1fdG9wTW9zdFNjb3Bl
LCBpc1dpdGhTY29wZSwgY29uc3RhbnRTeW1ib2xUYWJsZS0+aW5kZXgoKSB9KTsKQEAgLTM3Mjks
NyArMzc0NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWxsTGVhdmVD
YWxsRnJhbWVEZWJ1Z0hvb2soKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1fc2NvcGVOb2RlLT5p
c0Z1bmN0aW9uTm9kZSgpKTsKKyAgICAvLyBSRUxFQVNFX0FTU0VSVChtX3Njb3BlTm9kZS0+aXNG
dW5jdGlvbk5vZGUoKSk7CiAgICAgZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIG1f
c2NvcGVOb2RlLT5sYXN0TGluZSgpLCBtX3Njb3BlTm9kZS0+c3RhcnRPZmZzZXQoKSwgbV9zY29w
ZU5vZGUtPmxpbmVTdGFydE9mZnNldCgpKTsKIH0KIApAQCAtNDE4MCw3ICs0MTk1LDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbihUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSogbm9kZSwgRXgKIHsKICAgICBib29sIGlzRm9yQXdhaXQgPSBmb3JMb29wTm9k
ZSA/IGZvckxvb3BOb2RlLT5pc0ZvckF3YWl0KCkgOiBmYWxzZTsKICAgICBhdXRvIHNob3VsZEVt
aXRBd2FpdCA9IGlzRm9yQXdhaXQgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87Ci0g
ICAgQVNTRVJUKCFpc0ZvckF3YWl0IHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1v
ZGUoKSkpOworICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCAoaXNBc3luY0Z1bmN0aW9uUGFyc2VN
b2RlKHBhcnNlTW9kZSgpKSB8fCBpc01vZHVsZVBhcnNlTW9kZShwYXJzZU1vZGUoKSkpKTsKIAog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdWJqZWN0ID0gbmV3VGVtcG9yYXJ5KCk7CiAgICAgZW1p
dE5vZGUoc3ViamVjdC5nZXQoKSwgc3ViamVjdE5vZGUpOwpAQCAtNDc0MCw3ICs0NzU1LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1l
bnQsIEpTQXN5bmNHZW5lcmF0b3I6OkEKICAgICB3aGlsZSAobV93cml0ZXIucG9zaXRpb24oKSAl
IE9wY29kZVNpemU6OldpZGUzMikKICAgICAgICAgT3BOb3A6OmVtaXQ8T3Bjb2RlU2l6ZTo6TmFy
cm93Pih0aGlzKTsKICNlbmRpZgotICAgIE9wWWllbGQ6OmVtaXQodGhpcywgZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpLCB5aWVsZFBvaW50SW5kZXgsIGFyZ3VtZW50KTsKKyAgICBPcFlpZWxkOjpl
bWl0KHRoaXMsIHlpZWxkUG9pbnRJbmRleCwgYXJndW1lbnQpOwogCiAgICAgLy8gUmVzdG9yZSB0
aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBkYXRlZCB0byB0aGUgbWVy
Z2UgcG9pbnQuCiAgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFj
ayk7CkBAIC00NzUzLDExICs0NzY4LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5lcmF0b3I6CiAKICAg
ICBSZWY8TGFiZWw+IG5vcm1hbExhYmVsID0gbmV3TGFiZWwoKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BT
dHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1
ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsKIAogICAgIFJlZjxMYWJlbD4g
dGhyb3dMYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6
OlJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CiAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9u
LmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKICAgICAvLyBSZXR1cm4uCiAgICAgewpAQCAtNDk0
MSwxMCArNDk1NiwxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVn
YXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogICAgICAgICAgICAgICAg
IFJlZjxMYWJlbD4gcmV0dXJuTGFiZWwgPSBuZXdMYWJlbCgpOwogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1Rl
bXBvcmFyeSgpOwotICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVt
aXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAg
ICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5n
ZXQoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQo
bnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVy
YXRvclJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOworICAgICAgICAgICAgICAgICAgICBlbWl0
RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgcmV0dXJuTGFiZWwuZ2V0
KCkpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGx0aHJvdWdoIHRvIFRocm93TW9kZS4K
QEAgLTUwNDgsOSArNTA2MywxMCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSkK
IHsKKyAgICAvLyBGSVhNRTogSXQgc2VlbXMgbGlrZSB0aGlzIHdpbGwgY3JlYXRlIGEgbG90IG9m
IGNvbnN0YW50cyBpZiB0aGVyZSBhcmUgbWFueSB5aWVsZCBwb2ludHMuIE1heWJlIHdlIHNob3Vs
ZCBvcF9pbmMgdGhlIG9sZCBzdGF0ZS4KICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7CiAgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpOwotICAgIGVt
aXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVt
aXRQdXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIGlzTW9kdWxlUGFyc2VNb2Rl
KHBhcnNlTW9kZSgpKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29y
ZDo6RmllbGQ6OlN0YXRlKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6Rmll
bGQ6OlN0YXRlKSwgY29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0SnVtcFZpYUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBM
YWJlbCYganVtcFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5MTQyOGU5NjZlZjY0NDA4M2FjYjgx
M2Q4NDcxMTAxMWUwN2MxZjhmLi44NjFjMDlmMTI5OTExNmY2ZDhmNzliZjVlOWI1YzRlZDYxNjdh
YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMDU4LDEwICsxMDU4LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0Fz
eW5jR2VuZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBKU0FzeW5jR2VuZXJh
dG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0
ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4g
Jm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9y
QXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KKyAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSldOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6VmFs
dWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
OjpBcmd1bWVudDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBl
IGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC0xMzI3LDYgKzEz
MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZjxGb3JJbkNvbnRleHQ+
PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlD
b250ZXh0U3RhY2s7CiAgICAgICAgIHVuc2lnbmVkIG1feWllbGRQb2ludHMgeyAwIH07CisgICAg
ICAgIGJvb2wgbV9pc0FzeW5jIHsgZmFsc2UgfTsKIAogICAgICAgICBTdHJvbmc8U3ltYm9sVGFi
bGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKICAgICAgICAgaW50IG1fZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZUluZGV4IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDYzZjExYTE5MTE5OWY3Mjg3
NTM1ZGM0MTJlZTFmNDdmMjViNGM4ZDUuLjdlYWI0NTBjNzRjZGFlZDA1NjVlN2Q5MDU4NDQ5OWY3
ODE4Yzg1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgog
I2luY2x1ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxl
UmVjb3JkLmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgiCkBA
IC0xMzg5LDYgKzEzOTAsMTUgQEAgc3RhdGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5j
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2kKICAgICByZXR1cm4g
SlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwogfQogCitzdGF0aWMgQWJzdHJhY3RNb2R1
bGVSZWNvcmQ6OkZpZWxkIGFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZEluZGV4KEJ5
dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50
eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAg
aWYgKG5vZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVt
aXRfaW50cmluc2ljX2Fic3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZSkKKyAgICAgICAgcmV0
dXJuIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGU7CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxk
OjpTdGF0ZTsKK30KKwogc3RhdGljIEpTQXJyYXlJdGVyYXRvcjo6RmllbGQgYXJyYXlJdGVyYXRv
ckludGVybmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7CiAgICAg
QVNTRVJUKG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OlR5cGU6OkVtaXR0ZXIpOwpAQCAtMTQ3NCw2ICsxNDg0LDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5h
bEZpZWxkCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7CiB9CiAKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QWJzdHJhY3RN
b2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5t
X2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQo
bm9kZS0+bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBp
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFs
RmllbGRJbmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4
cHIpKSk7CisgICAgQVNTRVJUKGluZGV4IDwgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6Om51bWJlck9m
SW50ZXJuYWxGaWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgaW5kZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUlu
dHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2dldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxk
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
cmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDk0MCw3ICs0
OTYzLDcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5h
cmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdp
c3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFy
Z3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5wcm9taXNlUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwg
anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50
UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsr
KSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpKSk7CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50
IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBk
aXZvdChmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBA
IC00OTU3LDExICs0OTgwLDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxMYWJl
bD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0
aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0
KCkpOwogCiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIo
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5n
ZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OlJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKIAogICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCA3ZWY5NTkxOTk1Y2VkZWVlYzdlMTZkNjgwYzI3ZGJmYTQ5OTIwNWRjLi5h
ZDFiMTk1Y2JjODUzMmNmZTZlNjY0YmJkMjMwYmYyYTc0ZTgwODhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCisj
aW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkNhbGxG
cmFtZUNsb3N1cmUuaCIKQEAgLTQ5LDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1
dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxp
dGVyYWxQYXJzZXIuaCIKQEAgLTEyMDEsNyArMTIwMyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6
OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBJbnRl
cnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVu
dmlyb25tZW50KiBzY29wZSkKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9n
cmFtKEpTTW9kdWxlUmVjb3JkKiByZWNvcmQsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVj
dXRhYmxlLCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNNb2R1bGVFbnZp
cm9ubWVudCogc2NvcGUsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7
CiAgICAgVk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC0xMjMxLDYgKzEyMzMsNyBAQCBKU1ZhbHVlIEludGVycHJl
dGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSgogICAgIGlmIChzY29wZS0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKIAor
ICAgIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHMpOwog
ICAgIEpTQ2FsbGVlKiBjYWxsZWUgPSBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewpA
QCAtMTI0MCw3ICsxMjQzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVBy
b2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICAgICAgaWYg
KFVOTElLRUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0
dXJuKGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrKj4odGVtcENvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVChjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IG51bWJlck9mQXJndW1lbnRz
ICsgMSk7CiAgICAgfQogCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CkBAIC0xMjQ4LDEy
ICsxMjUxLDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKCiAgICAgewogICAgICAgICBEaXNh
bGxvd0dDIGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFj
ZSBDb2RlQmxvY2sgaW4gRXhlY3V0YWJsZS4KICAgICAgICAgaml0Q29kZSA9IGV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGUoKTsKKworICAgICAgICBKU1ZhbHVlIGFyZ3NbbnVtYmVyT2ZBcmd1
bWVudHNdID0geworICAgICAgICAgICAgcmVjb3JkLAorICAgICAgICAgICAgcmVjb3JkLT5pbnRl
cm5hbEZpZWxkKEpTTW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpLmdldCgpLAorICAgICAgICAg
ICAgc2VudFZhbHVlLAorICAgICAgICAgICAgcmVzdW1lTW9kZSwKKyAgICAgICAgICAgIHNjb3Bl
LAorICAgICAgICB9OwogICAgICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3
YXlzIGB1bmRlZmluZWRgLgogICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhp
c2JpbmRpbmcKICAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5n
Ci0gICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNh
bGxlZSwganNVbmRlZmluZWQoKSwgMSk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgbnVtYmVyT2ZBcmd1
bWVudHMgKyAxLCBhcmdzKTsKICAgICB9CiAKKyAgICByZWNvcmQtPmludGVybmFsRmllbGQoSlNN
b2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZSkuc2V0KHZtLCByZWNvcmQsIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludD4oSlNNb2R1bGVSZWNvcmQ6OlN0YXRlOjpFeGVjdXRpbmcpKSk7CisKICAgICAv
LyBFeGVjdXRlIHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VS
VChqaXRDb2RlID09IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDRm
OGJjNzg1YzUzYjNkY2ViYWYyNTIzM2JhODUwZGI1MmFkNDFmYzUuLjBjM2VmZTEyZTUxMDUzODhm
NmNmMjg1MTFkOWVhNWU0ZWFmMzA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAjZW5kaWYKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNW
YWx1ZSBleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGVNb2R1bGVQcm9ncmFtKEpTTW9kdWxlUmVjb3JkKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUq
LCBKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBKU1ZhbHVlIHNlbnRWYWx1
ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVl
IHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNv
bnN0cnVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERh
dGEmLCBjb25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVl
IGV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1Njb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CmluZGV4IDQ5MTBmYzdjZGFmYzViYTg3Y2YyODkzNGNhMjMzYTRmOGJjNmQ3MjMuLjU3ZDg3YmZh
YTFmZTJjYWVmYTg3Nzg2MzNlMWMzMjlhN2FlZTgyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC00MDAsNiArNDAwLDcgQEAgcHVibGljOgogICAgIEF3
YWl0RXhwck5vZGUqIGNyZWF0ZUF3YWl0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBhcmd1bWVudCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgewogICAgICAgICBBU1NFUlQoYXJndW1lbnQpOworICAgICAgICB1c2VzQXdhaXQoKTsKICAg
ICAgICAgQXdhaXRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXdhaXRFeHBy
Tm9kZShsb2NhdGlvbiwgYXJndW1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihu
b2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwpAQCAtMTA5OSw2
ICsxMTAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zY29wZS5tX2ZlYXR1cmVzIHw9IEV2YWxG
ZWF0dXJlOwogICAgIH0KICAgICB2b2lkIHVzZXNOZXdUYXJnZXQoKSB7IG1fc2NvcGUubV9mZWF0
dXJlcyB8PSBOZXdUYXJnZXRGZWF0dXJlOyB9CisgICAgdm9pZCB1c2VzQXdhaXQoKSB7IG1fc2Nv
cGUubV9mZWF0dXJlcyB8PSBBd2FpdEZlYXR1cmU7IH0KICAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlSW50ZWdlckxpa2VOdW1iZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91
YmxlIGQpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2Vy
Tm9kZShsb2NhdGlvbiwgZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmlu
ZGV4IDAyYjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRiZDM0MDkzNzcuLmE4NDk1ZDExNTBj
ODhhOWVhZjlkNzRhMzFhYWViZWVhMjcxZTk5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCkBAIC0xNzcsNiArMTc3LDcgQEAgTW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVs
ZVByb2dyYW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2EK
ICAgICA6IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24s
IHNvdXJjZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxl
eGljYWxWYXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0
dXJlcywgaW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAg
LCBtX3N0YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1u
KQorICAgICwgbV91c2VzQXdhaXQoZmVhdHVyZXMgJiBBd2FpdEZlYXR1cmUpCiAgICAgLCBtX21v
ZHVsZVNjb3BlRGF0YSgqV1RGTW92ZShtb2R1bGVTY29wZURhdGEpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDA1YzE4ZWFkZjI0OTAwNTYwNTlhNGJjY2NlMTVh
YmU1YWZkNDkxNmIuLmI4YTcxNmUwMDQwOWNlYjkwYTFjOGFmODdmOWM2MWI2MzE2M2ZlZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE5OTAsNiArMTk5MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25z
dCB7IHJldHVybiBtX2VuZENvbHVtbjsgfQorICAgICAgICBib29sIHVzZXNBd2FpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXNlc0F3YWl0OyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCkBAIC0yMDAyLDYgKzIwMDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29s
dW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKKyAgICAgICAgYm9vbCBtX3VzZXNB
d2FpdDsKICAgICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGU5NWFj
MDFlYzNlMmM5YWM1MDJkODRmYzkwYzEyMjU3MDUyMGYxZjUuLjI5MDc1ZjIxMWMwZGU4N2RkNjQ0
ZDBjZDRlOTMxNzc2YzNmZjM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTIwOSw2ICsyMDksMTEgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQog
ewogfQogCit2b2lkIEpTVG9rZW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBvdXQucHJpbnQoKm1fZGF0YS5jb29rZWQpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJS
ZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRp
ZmllciYgY2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKQEAgLTEzNTIsNyAr
MTM1Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgbV9zdGF0ZW1lbnREZXB0aCsr
OwogCiAgICAgaWYgKG1hdGNoKEFXQUlUKSkgewotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNl
KGN1cnJlbnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSwgImZvci1hd2FpdC1vZiBjYW4gb25s
eSBiZSB1c2VkIGluIGFuIGFzeW5jIGZ1bmN0aW9uIG9yIGFzeW5jIGdlbmVyYXRvciIpOworICAg
ICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24o
KSB8fCAoaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpICYmIE9wdGlvbnM6OnVz
ZVRvcExldmVsQXdhaXQoKSksICJmb3ItYXdhaXQtb2YgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBh
c3luYyBmdW5jdGlvbiBvciBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgaXNBd2FpdEZvciA9
IHRydWU7CiAgICAgICAgIG5leHQoKTsKICAgICB9CkBAIC00MTQ0LDcgKzQxNDksOCBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24oVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEFXQUlUKSk7Ci0gICAgQVNT
RVJUKGN1cnJlbnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGN1cnJl
bnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSB8fCBpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQ
YXJzZU1vZGUoKSkpOworICAgIEFTU0VSVChpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUoc291cmNl
UGFyc2VNb2RlKCkpIHx8IGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSk7CiAg
ICAgQVNTRVJUKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlICE9IEZ1bmN0aW9uUGFy
c2VQaGFzZTo6UGFyYW1ldGVycyk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQ
b3NpdGlvbigpOwpAQCAtNDgxNCw3ICs0ODIwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUK
ICAgICBjYXNlIEFXQUlUOgogICAgICAgICBpZiAobV9wYXJzZXJTdGF0ZS5mdW5jdGlvblBhcnNl
UGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzKQogICAgICAgICAgICAgc2Vt
YW50aWNGYWlsSWZGYWxzZShtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQsICJDYW5ub3QgdXNlICdh
d2FpdCcgd2l0aGluIGEgcGFyYW1ldGVyIGRlZmF1bHQgZXhwcmVzc2lvbiIpOwotICAgICAgICBl
bHNlIGlmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgp
KQorICAgICAgICBlbHNlIGlmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rp
b25Cb3VuZGFyeSgpIHx8IChpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkgJiYg
T3B0aW9uczo6dXNlVG9wTGV2ZWxBd2FpdCgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUF3
YWl0RXhwcmVzc2lvbihjb250ZXh0KTsKIAogICAgICAgICBnb3RvIGlkZW50aWZpZXJFeHByZXNz
aW9uOwpAQCAtNTMzOCw3ICs1MzQ0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBi
b29sIGhhc1ByZWZpeFVwZGF0ZU9wID0gZmFsc2U7CiAgICAgdW5zaWduZWQgbGFzdE9wZXJhdG9y
ID0gMDsKIAotICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgY3VycmVudEZ1bmN0aW9u
U2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgaWYgKFVOTElLRUxZKG1h
dGNoKEFXQUlUKSAmJiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91
bmRhcnkoKSB8fCAoaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKSAmJiBPcHRp
b25zOjp1c2VUb3BMZXZlbEF3YWl0KCkpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlQXdhaXRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5k
ZXggMWNkYWZjNTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJmNzU1ZGI2NC4uOTYzMzRiYmVhNThh
MDE2ZmFmYWQzZjI5NmVjMDg2OTRlMjAwYTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzIyLDggKzMyMiw5IEBAIGNvbnN0IENvZGVGZWF0dXJl
cyBTdXBlclByb3BlcnR5RmVhdHVyZSA9ICAgICAgICAgIDEgPDwgOTsKIGNvbnN0IENvZGVGZWF0
dXJlcyBOZXdUYXJnZXRGZWF0dXJlID0gICAgICAgICAgICAgIDEgPDwgMTA7CiBjb25zdCBDb2Rl
RmVhdHVyZXMgTm9FdmFsQ2FjaGVGZWF0dXJlID0gICAgICAgICAgICAxIDw8IDExOwogY29uc3Qg
Q29kZUZlYXR1cmVzIE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlID0gMSA8PCAxMjsKK2Nv
bnN0IENvZGVGZWF0dXJlcyBBd2FpdEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgIDEgPDwgMTM7
CiAKLWNvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwgQXJndW1l
bnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBTdHJpY3RNb2RlRmVhdHVy
ZSB8IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBBcnJv
d0Z1bmN0aW9uQ29udGV4dEZlYXR1cmUgfCBTdXBlckNhbGxGZWF0dXJlIHwgU3VwZXJQcm9wZXJ0
eUZlYXR1cmUgfCBOZXdUYXJnZXRGZWF0dXJlIHwgTm9FdmFsQ2FjaGVGZWF0dXJlIHwgTm9uU2lt
cGxlUGFyYW1ldGVyTGlzdEZlYXR1cmU7Citjb25zdCBDb2RlRmVhdHVyZXMgQWxsRmVhdHVyZXMg
PSBFdmFsRmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IFRoaXNGZWF0
dXJlIHwgU3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSB8IEFycm93
RnVuY3Rpb25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwgU3VwZXJDYWxs
RmVhdHVyZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZh
bENhY2hlRmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlIHwgQXdhaXRGZWF0
dXJlOwogCiB0eXBlZGVmIHVpbnQ4X3QgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXgg
YTIxOTE3MjRlMDQ1MWU0NmU0ZjgyODgxMGM3ZGJlM2ZhOWI3ZWI2NS4uZGU2N2E0MGJjNTUwYmU3
NzY3OTg0MmE4ZjNmNjlkZGE5NzlhYjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oCkBAIC0yODMsNiArMjgzLDggQEAgc3RydWN0IEpTVG9rZW4gewog
ICAgIEpTVG9rZW5Mb2NhdGlvbiBtX2xvY2F0aW9uOwogICAgIEpTVGV4dFBvc2l0aW9uIG1fc3Rh
cnRQb3NpdGlvbjsKICAgICBKU1RleHRQb3NpdGlvbiBtX2VuZFBvc2l0aW9uOworCisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNV
cGRhdGVPcChKU1Rva2VuVHlwZSB0b2tlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCBjNzNkYTUxNDJhMzdj
ZDNlYjQ1NjQ1ZGRlYjVmYzNjODc3NjBmNTQ2Li40NWYyYjQxOTY2ZGRjYzRlZDcxNjBmYjhiMWU5
MGMxNjBkZDdmMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
YnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFs
RmllbGRPYmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAi
SlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiCkBAIC01Myw2ICs1NCwxMSBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0pCiAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAK
KyAgICBhdXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBBU1NFUlQodmFsdWVzLnNp
emUoKSA9PSBudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRl
cm5hbEZpZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOworCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTTWFwKiBtYXAgPSBKU01h
cDo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkp
OwogICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwpAQCAtODA4LDcgKzgxNCw3
IEBAIHZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnNldE1vZHVsZUVudmlyb25tZW50KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQo
dm0sIHRoaXMsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotdm9pZCBBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpCitTeW5jaHJvbm91c25lc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQg
PSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQpAQCAtODE4LDEzICs4
MjQsMTQgQEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGMKICAgICAgICAgcmV0dXJuIHdhc21Nb2R1
bGVSZWNvcmQtPmxpbmsoZ2xvYmFsT2JqZWN0LCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNt
OjpDcmVhdGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwog
fQogCi1KU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNfRVhQT1JUX1BSSVZBVEUgSlNW
YWx1ZSBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3Jk
ID0ganNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKLSAgICAgICAgcmV0
dXJuIGpzTW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4ganNNb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc2VudFZhbHVlLCByZXN1
bWVNb2RlKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKGF1dG8qIHdhc21Nb2R1
bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4odm0sIHRo
aXMpKQogICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0
TW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5oCmluZGV4IDQzMWI5M2NkZTFlMDQyOGJmMTUyMGY3NGUxOGQ0NTUwYjRkZTFi
NDYuLmY0MTAyZWNhNmJiZTg1NDQ2ZGI4MWY2MzRmMGFkYjI5ODM1NjViOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaApA
QCAtMjYsNyArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgi
Ci0jaW5jbHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ci5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNywxMCArMzgsMTAgQEAg
Y2xhc3MgSlNNYXA7CiAKIC8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3Jk
CiAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
c291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKLWNsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQgOiBw
dWJsaWMgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PiB7CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNOb25GaW5h
bE9iamVjdDsKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PjsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIApA
QCAtNTAsNiArNTEsMjggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KIAorICAgIHVzaW5nIEFyZ3VtZW50ID0gSlNHZW5lcmF0b3I6OkFyZ3Vt
ZW50OworICAgIHVzaW5nIFN0YXRlID0gSlNHZW5lcmF0b3I6OlN0YXRlOworICAgIHVzaW5nIFJl
c3VtZU1vZGUgPSBKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTsKKworICAgIGVudW0gY2xhc3MgRmll
bGQgOiB1aW50MzJfdCB7CisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBU
aGlzLAorICAgICAgICBGcmFtZSwKKyAgICB9OworCisgICAgc3RhdGljX2Fzc2VydChudW1iZXJP
ZkludGVybmFsRmllbGRzID09IDQpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51
bWJlck9mSW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsgeworICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6
OkluaXQpKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVm
aW5lZCgpLAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgfSB9OworICAgIH0K
KwogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNvdXJjZS10ZXh0
LW1vZHVsZS1yZWNvcmRzCiAgICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKICAgICAgICAgZW51bSBj
bGFzcyBUeXBlIHsKQEAgLTEyOSw4ICsxNTIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9tb2R1bGVFbnZpcm9ubWVudC5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGxpbmsoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBTeW5jaHJvbm91c25lc3Mg
bGluayhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2Vu
dFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYg
aW50ZXJuYWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiBpbnRlcm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKIHByb3RlY3RlZDoKICAg
ICBBYnN0cmFjdE1vZHVsZVJlY29yZChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3Iu
aAppbmRleCAzZjNiMDRlNWMyNzU2ZjUyY2VjODdmMmI1YzU5MWY4NGM0MGU1ZGFkLi5kZDQxNTY1
ODU3YWUyOGYzMGNhMGI3Y2U4NDc4ODljMzIxOGQxNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCkBAIC01NCw4ICs1NCw4IEBAIHB1
YmxpYzoKICAgICAgICAgU3VzcGVuZGVkWWllbGQgPSAtNCwKICAgICAgICAgQXdhaXRpbmdSZXR1
cm4gPSAtNSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
QXN5bmNHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9
PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1
dGluZykpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5l
cmF0b3JTdGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6U3RhdGU6OkNvbXBsZXRlZCkpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykpOwogCiAgICAgZW51bSBjbGFzcyBB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gOiBpbnQzMl90IHsKICAgICAgICAgTm9uZSA9IDAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAppbmRleCA3ODE2
NjY5MjRjYTQyM2Q3Y2RhNWZkZjZhMDM0MGEwNDI3NTdmMTBkLi4yNTc2MTAyZjU0YzliMTc1YzQ3
NmJhNzE3MTU1Y2ZlM2VkMDEwMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yLmgKQEAgLTQ2LDI2ICs0NiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biB2bS5nZW5lcmF0b3JTcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgR2Vu
ZXJhdG9yUmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgUmVzdW1lTW9kZSA6
IGludDMyX3QgewogICAgICAgICBOb3JtYWxNb2RlID0gMCwKICAgICAgICAgUmV0dXJuTW9kZSA9
IDEsCiAgICAgICAgIFRocm93TW9kZSA9IDIKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBHZW5l
cmF0b3JTdGF0ZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgU3RhdGUgOiBpbnQzMl90IHsK
ICAgICAgICAgQ29tcGxldGVkID0gLTEsCiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgICAg
ICBJbml0ID0gMCwKICAgICB9OwogCiAgICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0
b3JGcmFtZS4KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7Cisg
ICAgZW51bSBjbGFzcyBBcmd1bWVudCA6IGludDMyX3QgewogICAgICAgICBUaGlzVmFsdWUgPSAw
LAogICAgICAgICBHZW5lcmF0b3IgPSAxLAogICAgICAgICBTdGF0ZSA9IDIsCiAgICAgICAgIFZh
bHVlID0gMywKICAgICAgICAgUmVzdW1lTW9kZSA9IDQsCiAgICAgICAgIEZyYW1lID0gNSwKKyAg
ICAgICAgTnVtYmVyT2ZBcmd1bWVudHMgPSBGcmFtZSwKICAgICB9OwogCiAgICAgZW51bSBjbGFz
cyBGaWVsZCA6IHVpbnQzMl90IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIHsgewogICAgICAgICAgICAganNOdWxsKCksCi0gICAgICAgICAgICBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLAorICAgICAg
ICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6OkluaXQpKSwKICAgICAg
ICAgICAgIGpzVW5kZWZpbmVkKCksCiAgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAogICAgICAg
ICAgICAganNVbmRlZmluZWQoKSwKQEAgLTEwMSw0ICsxMDIsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKK09WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFU
T1JTX0ZPUl9FTlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKEpTR2VuZXJhdG9yOjpBcmd1bWVudCk7
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZDVkNDM2YzI2MWVlODNlMTgwMDZkYzliM2IzNTI4M2M3
Y2VhYmYxMy4uM2U5YmQ2MjQ1OTMzMWI4YTUxNjI2MjIzMTQ5OGFkZjJlMTEzNzI1OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzAs
NyArMjMwLDcgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVm
IEpTT2JqZWN0KiAoKk1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzUHRyKShK
U0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQq
LCBKU1ZhbHVlKTsKICAgICBNb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllc1B0
ciBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllczsKIAotICAgIHR5cGVkZWYg
SlNWYWx1ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEpTTW9k
dWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgdHlwZWRlZiBKU1Zh
bHVlICgqTW9kdWxlTG9hZGVyRXZhbHVhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVM
b2FkZXIqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyLCBKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsK
ICAgICBNb2R1bGVMb2FkZXJFdmFsdWF0ZVB0ciBtb2R1bGVMb2FkZXJFdmFsdWF0ZTsKIAogICAg
IHR5cGVkZWYgdm9pZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVj
dCosIEpTUHJvbWlzZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggNzdiYjJi
MGI1OWQ3ZDZmYmY2MDU2OTc3MGM1YzZjMjkyODRiNDJjOS4uNzcxMGZkMzA3MjMyNDc4MTUyYzU1
YTQwNDE3MDEzNjJhY2Q3ZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMzA3LDIwICszMDcsMjAgQEAgSlNPYmplY3QqIEpT
TW9kdWxlTG9hZGVyOjpjcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWMKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0
LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiB9
CiAKLUpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRW
YWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSBy
ZXN1bWVNb2RlKQogewogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5n
U3RhdGUoKSwgIkxvYWRlciBbZXZhbHVhdGVdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxP
YmplY3QsIGtleSkpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUpCi0gICAgICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKGdsb2Jh
bE9iamVjdCwgdGhpcywga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7Cisg
ICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1v
ZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgdGhpcywga2V5LCBtb2R1bGVSZWNvcmRW
YWx1ZSwgc2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKIAotICAgIHJldHVy
biBldmFsdWF0ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBrZXksIG1vZHVsZVJlY29yZFZhbHVl
LCBzY3JpcHRGZXRjaGVyKTsKKyAgICByZXR1cm4gZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9i
amVjdCwga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlKTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGVOb25WaXJ0
dWFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTVmFsdWUgbW9kdWxl
UmVjb3JkVmFsdWUsIEpTVmFsdWUpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5v
blZpcnR1YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNWYWx1ZSBt
b2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVz
dW1lTW9kZSkKIHsKICAgICBpZiAoYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxB
YnN0cmFjdE1vZHVsZVJlY29yZCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgbW9kdWxlUmVjb3JkVmFs
dWUpKQotICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIHNl
bnRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAg
LTM2NSw2ICszNjUsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obW9kdWxlTG9hZGVyUGFy
c2VNb2R1bGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5OjppbnN0YW50
aWF0ZShnbG9iYWxPYmplY3QsIHByb21pc2UsIG1vZHVsZUtleSwganNTb3VyY2VDb2RlKSkpOwog
I2VuZGlmCiAKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRl
KCksICJsb2FkZXIgW3BhcnNpbmddICIsIG1vZHVsZUtleSk7CisKICAgICBQYXJzZXJFcnJvciBl
cnJvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dy
YW1Ob2RlID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgc291cmNlQ29k
ZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLApAQCAtNDA5
LDEwICs0MTEsMTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlck1vZHVs
ZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiwgKEpTR2xvYmFsT2IKIAogICAgIGRhdGFMb2dMbklm
KE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwgIkxvYWRlciBbbGlua10gIiwgbW9k
dWxlUmVjb3JkLT5tb2R1bGVLZXkoKSk7CiAKLSAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIHN5bmMgPSBtb2R1bGVS
ZWNvcmQtPmxpbmsoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oc3luYyA9PSBTeW5jaHJvbm91c25lc3M6OkFzeW5jKSk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ4MSw3ICs0ODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04obW9kdWxlTG9hZGVyRXZhbHVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYQogICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxl
TG9hZGVyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1l
bnQoMikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZhbHVhdGUoZ2xv
YmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpLCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggMWUwNmI3NzBhMWY4
YWNiYTM0MTBkYzIxYWVlMGZmZTAxYWVlOWMyMC4uYjNkODVhOTVjZmZmYzY5MTA5NGVkOTYyM2Fk
ZDFlYjhlYjhlZmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5oCkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogY3Jl
YXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNN
b2R1bGVSZWNvcmQqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgLy8gQWRkaXRpb25h
bCBwbGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCi0gICAgSlNWYWx1ZSBldmFsdWF0ZShK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKTsKLSAgICBKU1ZhbHVlIGV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKKyAgICBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTVmFs
dWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIEpTVmFsdWUgZXZhbHVhdGVO
b25WaXJ0dWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVj
b3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJl
c3VtZU1vZGUpOwogCiAgICAgLy8gVXRpbGl0eSBmdW5jdGlvbnMuCiAgICAgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QqIGdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgbW9kdWxlUmVjb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCAxZDUwNzU4NzM2YmI4NDhlZmQwMjUxZDE4MjQ5OTI5
YWNhZjJhN2YwLi43YjZiMDY5ODgwNGMyNDg2NmYxMTAwMTc3ZTgyZmEzYTRhNWFmYzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBA
IC04MSw3ICs4MSw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW5JbXBsKEpT
Q2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKIAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpT
TW9kdWxlUmVjb3JkKTsKIAotdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitTeW5jaHJvbm91c25lc3Mg
SlNNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05MCwxMSArOTAsMTMg
QEAgdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4
Y2VwdGlvbigpID09ICFleGVjdXRhYmxlKTsKICAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAg
ICAgdGhyb3dTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwogICAgIH0KICAgICBpbnN0
YW50aWF0ZURlY2xhcmF0aW9ucyhnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUsIHNjcmlwdEZldGNo
ZXIpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgU3luY2hyb25vdXNuZXNzOjpTeW5jKTsKICAgICBtX21vZHVs
ZVByb2dyYW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CisKKyAgICByZXR1
cm4gZXhlY3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCktPmlzQXN5bmMo
KSA/IFN5bmNocm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiB9CiAK
IHZvaWQgSlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFt
RXhlY3V0YWJsZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjM4LDE0ICsyNDAsMTYgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTW9kdWwKICAgICBzZXRNb2R1bGVFbnZpcm9ubWVudChnbG9iYWxP
YmplY3QsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6
ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVmFsdWUgSlNNb2R1bGVS
ZWNvcmQ6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2Vu
dFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgaWYgKCFtX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOwotICAgIG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuY2xlYXIoKTsKLSAgICByZXR1cm4gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVN
b2R1bGVQcm9ncmFtKGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQo
KSk7CisgICAgSlNWYWx1ZSByZXN1bHRPckF3YWl0ZWRWYWx1ZSA9IHZtLmludGVycHJldGVyLT5l
eGVjdXRlTW9kdWxlUHJvZ3JhbSh0aGlzLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIG1vZHVs
ZUVudmlyb25tZW50KCksIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgaWYgKEpTVmFsdWUg
c3RhdGUgPSBpbnRlcm5hbEZpZWxkKEZpZWxkOjpTdGF0ZSkuZ2V0KCk7ICFzdGF0ZS5pc051bWJl
cigpIHx8IHN0YXRlLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFN0YXRlOjpF
eGVjdXRpbmcpKQorICAgICAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7Cisg
ICAgcmV0dXJuIHJlc3VsdE9yQXdhaXRlZFZhbHVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3Jk
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4
IDhhNTUwN2FmNGFjNmI0MTY4NTA5ODc4ODYxMWIxMTZlOGVjNmFlZjMuLjAxYWUwMGMwOTNkMWIy
N2FhN2I3NjliZGFkYmE5NTgxNDM5NjY3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKICAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShKU0dsb2JhbE9iamVj
dCosIFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYp
OwogCi0gICAgdm9pZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVy
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0
Kik7CisgICAgU3luY2hyb25vdXNuZXNzIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNj
cmlwdEZldGNoZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKIAog
ICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUNvZGU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmlu
ZGV4IDc4NTExNWM5NGI1YzBlNjkxM2VjNDM2YjcxNzFiOTU1Zjc5OTY5MzcuLjU5NTQzNzM1YWQx
NTM1NThkNjY2NjJiZDI5YmMyNWEzZjI5ODM4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjYsNiAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25z
dCB7IHJldHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5k
UmVxdWlyZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2Vy
U2NyaXB0TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VN
b2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2
YWxDb250ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jayogdW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtl
ZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KKyAgICBib29sIGlzQXN5bmMoKSBjb25z
dCB7IHJldHVybiBmZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9CiAKICAgICBTeW1ib2xUYWJs
ZSogbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnRTeW1ib2xUYWJsZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaAppbmRleCBhZjdjNzI0OTcxNzM1ZjA3NzA0YTVkMDZhZmJhMmQ3NmVi
YjZhNTAzLi5hODA2NzhiZDU4NzAzNTkwMDRmMDM3Y2JlMDg2ZGQxNDRjYjFjNTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4MywxNiArNDgz
LDcgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihPcHRp
b25SYW5nZSwgd2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZSwgMCwgTm9ybWFsLCAid2Fz
bSBmdW5jdGlvbiBpbmRleCByYW5nZSB0byBhbGxvdyBjb21waWxhdGlvbiBvbiwgZS5nLiAxOjEw
MCIpIFwKICAgICB2KEJvb2wsIHdhc21MTEludFRpZXJzVXBUb0JCUSwgdHJ1ZSwgTm9ybWFsLCBu
dWxscHRyKSBcCiAgICAgdihTaXplLCB3ZWJBc3NlbWJseUJCUUFpck1vZGVUaHJlc2hvbGQsIGlz
SU9TKCkgPyAoMTAgKiBNQikgOiAwLCBOb3JtYWwsICJJZiAwLCB3ZSBhbHdheXMgdXNlIEJCUSBB
aXIuIElmIFdhc20gbW9kdWxlIGNvZGUgc2l6ZSBoaXRzIHRoaXMgdGhyZXNob2xkLCB3ZSBjb21w
aWxlIFdhc20gbW9kdWxlIHdpdGggQjMgQkJRIG1vZGUuIikgXAotICAgIHYoQm9vbCwgdXNlV2Vi
QXNzZW1ibHlTdHJlYW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJs
eSdzIFN0cmVhbWluZyBBUEkiKSBcCiAgICAgdihCb29sLCB1c2VFYWdlcldlYkFzc2VtYmx5TW9k
dWxlSGFzaGluZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9kdWxlcyBh
cmUgaWRlbnRpZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYgYXZhaWxh
YmxlLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1ZSwgTm9y
bWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAotICAg
IHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cg
dHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCi0gICAgdihCb29sLCB1
c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25z
IGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAotICAgIHYoQm9vbCwgdXNlV2Vha1Jl
ZnMsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCi0g
ICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QsIHRydWUsIE5vcm1hbCwg
IkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBkYXlQZXJpb2QgZmVhdHVyZS4iKSBcCi0g
ICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXRSYW5nZVRvUGFydHMsIHRydWUsIE5vcm1h
bCwgIkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRSYW5nZVRvUGFydHMgZmVh
dHVyZS4iKSBcCi0gICAgdihCb29sLCB1c2VBdE1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9z
ZSB0aGUgYXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmluZy4iKSBc
Ci0gICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJv
ZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFp
bSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2Jq
ZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1p
bmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0g
bW9kZSBvbi4iKSBcCkBAIC01MTMsOCArNTA0LDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBj
YW5Vc2VKSVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xh
bmRBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRm9yIHRoZSBhcm02NCBFeGVjdXRhYmxlQWxs
b2NhdG9yLCBpZiB0cnVlLCBzZWxlY3Qgd2hpY2ggcmVnaW9uIHRvIHVzZSByYW5kb21seS4gVGhp
cyBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgdGhhdCBqdW1wIGlzbGFuZHMgd29yay4iKSBcCiAgICAg
dihCb29sLCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklm
IHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRo
ZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhlIHN1cGVyIHNhbXBsZXIiKSBcCiAgICAgdihCb29s
LCBhbGxvd1Vuc3VwcG9ydGVkVGllcnMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxs
IG5vdCBkaXNhYmxlIERGRyBvciBGVEwgd2hlbiBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBpcyBl
bmFibGVkLiIpIFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9y
bWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZp
ZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCi0gICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywg
dHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0
ZSBtZXRob2RzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJv
bUluZmluaXRlTG9vcHNGb3JGdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dihTaXplLCBlYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5v
cm1hbCwgIldoZW4gcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1
ZSwgdGhpcyBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1
biBmb3IgYmVmb3JlIGp1c3QgcmV0dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6
ZXIgc28gaXQgZG9lc24ndCBnZXQgc3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYo
Qm9vbCwgdXNlTElDTUZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTUyMiw4
ICs1MTEsMjQgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAg
dihEb3VibGUsIGFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHksIDAuNSwgTm9ybWFsLCBudWxs
cHRyKSBcCiAgICAgdihCb29sLCBleHBvc2VDdXN0b21TZXR0ZXJzT25HbG9iYWxPYmplY3RGb3JU
ZXN0aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VKSVRDYWdl
LCBjYW5Vc2VKSVRDYWdlKCksIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKKyAgICAvKiBGZWF0
dXJlIEZsYWdzICovXAorICAgIFwKICAgICB2KEJvb2wsIHVzZVB1YmxpY1N0YXRpY0NsYXNzRmll
bGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBw
dWJsaWMgc3RhdGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2ws
IHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhl
IHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBzdGF0aWMgZGF0YSBmaWVsZHMgaW5zaWRl
IGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEg
ZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2Rz
LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2
YXRlIG1ldGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1i
bHlTdHJlYW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJseSdzIFN0
cmVhbWluZyBBUEkiKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMsIHRy
dWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJlbmNlcyBzcGVjLiIp
IFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwg
IkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAorICAgIHYo
Qm9vbCwgdXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IGluc3Ry
dWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRocmVhZGluZyBzcGVjLiIpIFwKKyAgICB2KEJvb2wsIHVz
ZVdlYWtSZWZzLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3Iu
IikgXAorICAgIHYoQm9vbCwgdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kLCB0cnVlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgZGF5UGVyaW9kIGZlYXR1cmUu
IikgXAorICAgIHYoQm9vbCwgdXNlSW50bERhdGVUaW1lRm9ybWF0UmFuZ2VUb1BhcnRzLCB0cnVl
LCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQjZm9ybWF0UmFuZ2VUb1Bh
cnRzIGZlYXR1cmUuIikgXAorICAgIHYoQm9vbCwgdXNlQXRNZXRob2QsIGZhbHNlLCBOb3JtYWws
ICJFeHBvc2UgdGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJp
bmcuIikgXAorICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIGZhbHNlLCBOb3JtYWws
ICJhbGxvdyB0aGUgYXdhaXQga2V5d29yZCBhdCB0aGUgdG9wIGxldmVsIG9mIGEgbW9kdWxlLiIp
IFwKKwogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IDMyZTMxYmI5
MGMzNjIxNjc4YWQ4NzlkOTM5MWI0NmFkN2IzOGMzZmUuLjFjMjdhZDQ5NmNjZDczNzYxMGZhYTAy
YTE5MDMwNWI2ZDUxNGRmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlci5oIgogCisjaW5jbHVkZSA8d3RmL0NvbW1h
UHJpbnRlci5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFN5bWJvbFRh
YmxlOjpzX2luZm8gPSB7ICJTeW1ib2xUYWJsZSIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoU3ltYm9sVGFibGUpIH07CkBAIC0yODMsNSArMjg1LDE3IEBA
IFJlZlB0cjxUeXBlU2V0PiBTeW1ib2xUYWJsZTo6Z2xvYmFsVHlwZVNldEZvclZhcmlhYmxlKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYKICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiB9CiAKK3Zv
aWQgU3ltYm9sVGFibGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgQmFzZTo6ZHVtcChvdXQpOworCisg
ICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgIG91dC5wcmludCgiIDwiKTsKKyAgICBmb3IgKGF1
dG8mIGl0ZXIgOiBtX21hcCkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqaXRlci5rZXksICI6
ICIsIGl0ZXIudmFsdWUudmFyT2Zmc2V0KCkpOworICAgIG91dC5wcmludGxuKCI+Iik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAppbmRleCAwMTc5NmM3ZGVkNjM0MzdjNWY2MzM3MmRiYjE2NGI3YzI5OTIwMTg3
Li5lNWEyMDY1YzJmNTRjNmNkNzI3Nzk2MDc5ZGFmMDQ5ODYzZmEwYzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTczOCw2ICs3MzgsNyBAQCBw
dWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoVk0mKTsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xUYWJsZShWTSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVS
ZWNvcmQuY3BwCmluZGV4IGI1NTY4NmViZTY1YzFkNmI5M2I2NzI4NTc3MjczOTFjOGZlY2RkNDgu
LjI5MTcyNDk3Y2MxMTM0Njg2YWE4YmJlYWRlMGExZWUxYTRhMTZkYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKQEAgLTk3LDcgKzk3LDEzIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OnBy
ZXBhcmVMaW5rKFZNJiB2bSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jCiAgICAgbV9p
bnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKIH0KIAotdm9pZCBXZWJBc3NlbWJseU1v
ZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBK
U09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlvbk1vZGUgY3JlYXRpb25Nb2RlKQor
U3luY2hyb25vdXNuZXNzIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFdhc206
OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCit7CisgICAgbGlua0ltcGwoZ2xvYmFsT2JqZWN0
LCBpbXBvcnRPYmplY3QsIGNyZWF0aW9uTW9kZSk7CisgICAgcmV0dXJuIFN5bmNocm9ub3VzbmVz
czo6U3luYzsKK30KKwordm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6
Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmgKaW5kZXggMzcyYmY5YjM3ODdmOGM3Y2FiYjcwOTBiNmJjYTgwMmE2ZTRhNThlMC4uNmM5
OTkyMTFiZTA0MDY4ZTFmZjIxNDhmNzY2YTdjYTFlODViNDU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCkBA
IC01OSwxMiArNTksMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0mLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKIAogICAgIHZvaWQgcHJl
cGFyZUxpbmsoVk0mLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKLSAgICB2b2lkIGxpbmsoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmpl
Y3QsIFdhc206OkNyZWF0aW9uTW9kZSk7CisgICAgU3luY2hyb25vdXNuZXNzIGxpbmsoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3Qs
IFdhc206OkNyZWF0aW9uTW9kZSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFs
dWF0ZShKU0dsb2JhbE9iamVjdCopOwogCiAgICAgSlNPYmplY3QqIGV4cG9ydHNPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2V4cG9ydHNPYmplY3QuZ2V0KCk7IH0KIAogcHJpdmF0ZToKKyAgICB2
b2lkIGxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2Fz
bTo6Q3JlYXRpb25Nb2RlKTsKICAgICBXZWJBc3NlbWJseU1vZHVsZVJlY29yZChWTSYsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxPYmplY3QqLCBWTSYsIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBkNTUw
NWM2MTdjNmU4YWYxYWViOWQzMWJiMmZjMGZkMGMzMWYyNzgwLi5kNDk3M2QwOTM1YjczOGVlZDZl
YjNhMWZmMjYwNzFmZDYwZjZlYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBzdGF0aWMgSlNDOjpJZGVudGlmaWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSwgSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9k
dWxlTG9hZGVyRmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIq
LCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0aWMg
SlNDOjpKU1ZhbHVlIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNW
YWx1ZSk7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBtb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlND
OjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsKICAg
ICBzdGF0aWMgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVySW1wb3J0TW9kdWxl
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1N0cmlu
ZyosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpTb3VyY2VPcmlnaW4mKTsKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpT
Qzo6SlNNb2R1bGVSZWNvcmQqLCBKU0M6OkpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZlYTgyYjAzZmU4YzRlYjUy
MDg4MWRiOWM3MTUyZDllNWRmMTQ2OGMuLmQ3NTgyNzM0YWYzZDUwNzIwM2I1ZTQzOGI3YmU5ZWVj
MGZmNTk2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYKICAg
ICByZXR1cm4gbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChtb2R1bGVTY3JpcHQs
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVsZVJlY29y
ZCYgbW9kdWxlUmVjb3JkLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorSlNDOjpKU1ZhbHVlIFNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01v
ZHVsZVJlY29yZCYgbW9kdWxlUmVjb3JkLCBET01XcmFwcGVyV29ybGQmIHdvcmxkLCBKU0M6OkpT
VmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh3b3JsZC52bSgpKTsKIApAQCAtMjQwLDE1ICsyNDAsMTUgQEAgSlNDOjpK
U1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNl
VVJMLCBKU01vZHVsZVJlY28KICAgICBTZXRGb3JTY29wZTxjb25zdCBVUkwqPiBzb3VyY2VVUkxT
Y29wZShtX3NvdXJjZVVSTCwgJnNvdXJjZVVSTCk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwuc3RyaW5nKCksIGpz
U291cmNlQ29kZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpLCBqc1NvdXJjZUNvZGUuc3RhcnRD
b2x1bW4oKS5vbmVCYXNlZEludCgpKTsKLSAgICBhdXRvIHJldHVyblZhbHVlID0gbW9kdWxlUmVj
b3JkLmV2YWx1YXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHJldHVyblZhbHVl
ID0gbW9kdWxlUmVjb3JkLmV2YWx1YXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBhd2FpdGVkVmFs
dWUsIHJlc3VtZU1vZGUpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVh
dGVTY3JpcHQobV9mcmFtZSk7CiAKICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKLUpTQzo6
SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJj
ZVVSTCwgSlNNb2R1bGVSZWNvcmQmIG1vZHVsZVJlY29yZCkKK0pTQzo6SlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVS
ZWNvcmQmIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1Zh
bHVlIHJlc3VtZU1vZGUpCiB7Ci0gICAgcmV0dXJuIGV2YWx1YXRlTW9kdWxlKHNvdXJjZVVSTCwg
bW9kdWxlUmVjb3JkLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJuIGV2YWx1
YXRlTW9kdWxlKHNvdXJjZVVSTCwgbW9kdWxlUmVjb3JkLCBtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsKIH0KIAogUmVmPERPTVdyYXBwZXJXb3JsZD4g
U2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoY29uc3QgU3RyaW5nJiBuYW1lLCBXb3JsZFR5
cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAppbmRleCA5NjQzYjkyZmY4ZjA3MzNhODhjODljNGIwZDE0NzBkZWMwYmNlOTJmLi42MDgyMTJi
MmI1YWVhNjIyMjJkOGU1MTY4NmFhZGM5OWRmNGFhNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC0xMjMsOCArMTIzLDggQEAgcHVibGlj
OgogICAgIEpTQzo6SlNWYWx1ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKExv
YWRhYmxlTW9kdWxlU2NyaXB0JiAsIERPTVdyYXBwZXJXb3JsZCYpOwogICAgIEpTQzo6SlNWYWx1
ZSBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmKTsKIAot
ICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpTTW9kdWxl
UmVjb3JkJiwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9k
dWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmKTsKKyAgICBKU0M6OkpTVmFsdWUg
ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYsIERPTVdyYXBw
ZXJXb3JsZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVN
b2RlKTsKKyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpK
U01vZHVsZVJlY29yZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSBy
ZXN1bWVNb2RlKTsKIAogICAgIFdURjo6VGV4dFBvc2l0aW9uIGV2ZW50SGFuZGxlclBvc2l0aW9u
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwCmluZGV4IGQxZWU3MWI5YjU1ZjA1NmJjMzU2YTY5NmYzMDFlODRkYWRlNzdj
ZjguLjQ3NTFlMGEwMGJiYzg0NzM4MTRiMGU2MDdlMDBmYmI4NTdlZWQ4ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMjIw
LDcgKzIyMCw3IEBAIFVSTCBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc3BvbnNlVVJMRnJvbVJlcXVl
c3RVUkwoSlNDOjpKU0dsb2JhbE9iamVjdCYganNHbG9iYWxPCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotSlNDOjpKU1ZhbHVlIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0ds
b2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpT
VmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlND
OjpKU1ZhbHVlKQorSlNDOjpKU1ZhbHVlIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlND
OjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPYmplY3QsIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTVmFsdWUgbW9kdWxlS2V5VmFsdWUsIEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1
ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUg
cmVzdW1lTW9kZSkKIHsKICAgICBKU0M6OlZNJiB2bSA9IGpzR2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTIzOCwxMSArMjM4
LDExIEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKCiAKICAgICBpZiAobV9vd25lclR5cGUgPT0g
T3duZXJUeXBlOjpEb2N1bWVudCkgewogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBkb3duY2Fz
dDxEb2N1bWVudD4obV9jb250ZXh0KS5mcmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LT5zY3JpcHQoKS5ldmFsdWF0ZU1vZHVsZShzb3VyY2VVUkwsICptb2R1bGVSZWNvcmQpOworICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS5ldmFsdWF0ZU1vZHVsZShzb3VyY2VVUkws
ICptb2R1bGVSZWNvcmQsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKGlzPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihtX2NvbnRleHQp
KTsKICAgICAgICAgaWYgKGF1dG8qIHNjcmlwdCA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlPihtX2NvbnRleHQpLnNjcmlwdCgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcmlw
dC0+ZXZhbHVhdGVNb2R1bGUoKm1vZHVsZVJlY29yZCk7CisgICAgICAgICAgICByZXR1cm4gc2Ny
aXB0LT5ldmFsdWF0ZU1vZHVsZSgqbW9kdWxlUmVjb3JkLCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1v
ZGUpOwogICAgIH0KICAgICByZXR1cm4gSlNDOjpqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaAppbmRleCBkZjM0ZDU1
MWExMWNkOThmNGUyMzZhMmFhMWY0ODI3OWQ5NjRjNjg1Li5lODJhOGJiNDMzNzFlYTZjYWI4ZmNm
YTg0MjRkODdlYjNjOTg2MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRNb2R1bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRNb2R1bGVMb2FkZXIuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICBKU0M6
OklkZW50aWZpZXIgcmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxv
YWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVOYW1lLCBKU0M6OkpTVmFsdWUgaW1wb3J0ZXJNb2R1
bGVLZXksIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKICAgICBKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlKiBmZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlcios
IEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU0M6OkpT
VmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtl
eSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
OworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpK
U01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1ZSBtb2R1
bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU0M6OkpTVmFsdWUgYXdhaXRl
ZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSk7CiAgICAgSlNDOjpKU0ludGVybmFsUHJv
bWlzZSogaW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9h
ZGVyKiwgSlNDOjpKU1N0cmluZyosIEpTQzo6SlNWYWx1ZSBwYXJhbWV0ZXJzLCBjb25zdCBKU0M6
OlNvdXJjZU9yaWdpbiYpOwogICAgIEpTQzo6SlNPYmplY3QqIGNyZWF0ZUltcG9ydE1ldGFQcm9w
ZXJ0aWVzKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpK
U1ZhbHVlLCBKU0M6OkpTTW9kdWxlUmVjb3JkKiwgSlNDOjpKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4NTRmOWZiMzVl
NmRiMGUzNWE5MjExNzFmOWIzMTI2ZjM1ZDhjZThhLi4yYTYzMDI4NzU2NGZlYTRlMjA0YWYyYjRh
MjFmZmJlY2NmZWI0ZTIzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTAyLTIxICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB0aGUgVG9wLWxl
dmVsIGF3YWl0IHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDItMjEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGdyYWRlIHRlc3Qy
NjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAppbmRleCAyZmNlYjQ0ODczZmNjYmRhMDExNWU1ZGZkM2IxY2JhMjQ3
YzgyM2Y2Li44NTVkNTA2YWM0YjJmYTBmMjY3MjcwZGY2OTU3MjY2ZmVlMDZhNDcwIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCkBAIC0xNCw2ICsxNCw3IEBAIGZsYWdzOgogICBBcnJheS5wcm90b3R5cGUuYXQ6
IHVzZUF0TWV0aG9kCiAgIFR5cGVkQXJyYXkucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhvZAogICBT
dHJpbmcucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhvZAorICB0b3AtbGV2ZWwtYXdhaXQ6IHVzZVRv
cExldmVsQXdhaXQKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gQXRvbWljcy53YWl0QXN5bmMK
QEAgLTI2LDggKzI3LDYgQEAgc2tpcDoKIAogICAgICMgRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNDIKICAgICAtIHJlZ2V4cC1tYXRjaC1pbmRpY2Vz
Ci0KLSAgICAtIHRvcC1sZXZlbC1hd2FpdAogICBwYXRoczoKICAgZmlsZXM6CiAgICAgIyBTbGln
aHRseSBkaWZmZXJlbnQgZm9ybWF0dGluZy4gV2Ugc2hvdWxkIHVwZGF0ZSB0ZXN0MjYyIHNpZGUu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421158</attachid>
            <date>2021-02-21 16:05:41 -0800</date>
            <delta_ts>2021-02-21 16:43:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202484-20210221160540.patch</filename>
            <type>text/plain</type>
            <size>104418</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MzA4YmU5ZWZkM2FmNTkwYWVhMzQwNjFjM2EyMmY3OTlmMDRmMmM5Li4xODc0ZTRkY2NhNjhlNjhj
ZTU4ZWRhZDVhODgzNjkzYmJmYTFlMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxODkgQEAKKzIwMjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdhaXQgcHJvcG9zYWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgVExBIHByb3Bvc2FsLiBUaGUgYnVsayBvZiB0aGlzIHBh
dGNoIGlzIGFkZGluZyBhIGNvdXBsZSBvZiBtYWluIHBhcnRzLgorCisgICAgICAgIDEpIGNvbnZl
cnRpbmcgdGhlIEFic3RyYWN0TW9kdWxlUmVjb3JkIHRvIGNvbnRhaW4gbWFueSBvZiBzYW1lIGlu
dGVybmFsIGZpZWxkcyBhcyBKU0dlbmVyYXRvciBzbyBtdWNoIG9mIHRoZSBhc3luYyBjb2RlZ2Vu
IGNhbiBiZSBzaGFyZWQuCisgICAgICAgIDIpIGhhdmluZyB0aGUgbGluayBwaGFzZSBvZiB0aGUg
bW9kdWxlIGxvYWRlciByZWNvcmQgd2hldGhlciBhIG1vZHVsZSBzdWJncmFwaCBpcyBhc3luYy4K
KyAgICAgICAgMykgdGVhY2hpbmcgdGhlIG1vZHVsZSBsb2FkZXIgdGhhdCBldmFsdWF0aW5nIGEg
bW9kdWxlIG1heSByZXF1aXJlIG1vcmUgdGhhbiBvbmUgdm0gZW50cnkgYW5kIGZvcndhcmRpbmcg
dGhlIGF3YWl0ZWQgdmFsdWUgYXMgd2VsbCBhcyB0aGUgcmVzdW1lIG1vZGUgdG8gdGhlIFZNLgor
CisgICAgICAgIE9uZSB0aGluZyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYWJvdXQgdGhpcyBw
YXRjaCBpcyB0aGF0IG1vZHVsZUV2YWx1YXRpb24gbm93ICpzb21ldGltZXMqICh3aGVuIGEgc3Ry
b25nbHkgY29ubmVjdGVkIHN1YmdyYXBoIGlzIGFzeW5jKSB3aWxsIHJldHVybiBhIHByb21pc2Uu
IFRoaXMgaGFwcGVuZWQgdG8gYWxyZWFkeSBiZSBhd2FpdGVkIHdoZW4gY2FsbGVkIGZyb20gbG9h
ZEFuZEV2YWx1YXRlTW9kdWxlICh1bm5lY2Vzc2FyaWx5IGJlZm9yZSkgYnV0IG5vdyBhbHNvIG5l
ZWRzIHRvIGJlIGhhbmRsZWQgYnkgcmVxdWVzdEltcG9ydE1vZHVsZS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSBldmVyeSB0ZXN0IEkgY2FtZSB1cCB3aXRoIHdhcyBzdWJzdW1lZCBi
eSB0ZXN0cyBhbHJlYWR5IGluIHRlc3QyNjIuCisKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxP
YmplY3QuaDoKKyAgICAgICAgKiBBUEkvSlNBUElHbG9iYWxPYmplY3QubW06CisgICAgICAgIChK
U0M6OkpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0ZSk6CisgICAgICAgICog
YnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdp
c3RyeUVudHJ5KToKKyAgICAgICAgKGxpbmspOgorICAgICAgICAoYXN5bmMgcmVxdWVzdEltcG9y
dE1vZHVsZSk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KHJlcXVlc3RJbXBvcnRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWxsTGVhdmVDYWxsRnJhbWVEZWJ1Z0hvb2spOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0TW9kdWxl
UmVjb3JkSW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5z
aWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmll
bGQpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVyLmg6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXdhaXQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp1c2VzQXdh
aXQpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVBy
b2dyYW1Ob2RlOjpNb2R1bGVQcm9ncmFtTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTVG9rZW46OmR1
bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNv
cmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAg
IChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJl
Y29yZDo6aW5pdGlhbFZhbHVlcyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3Jk
OjppbnRlcm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6Omlu
dGVybmFsRmllbGQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChKU0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXZhbHVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiBydW50
aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25z
TGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlND
OjpTeW1ib2xUYWJsZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJs
ZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6
OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oOgorCisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlND
OjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRXZhbHVhdGUpOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRp
bnMvTW9kdWxlTG9hZGVyLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5uZXdSZWdpc3RyeUVu
dHJ5KToKKyAgICAgICAgKGxpbmspOgorICAgICAgICAoYXN5bmMgcmVxdWVzdEltcG9ydE1vZHVs
ZSk6CisgICAgICAgIChtb2R1bGVFdmFsdWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKHJlcXVl
c3RJbXBvcnRNb2R1bGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpCeXRlY29kZUludHJpbnNpY1JlZ2lz
dHJ5KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUlu
ZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRXaWxsTGVhdmVDYWxsRnJhbWVEZWJ1Z0hvb2spOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyaWNFbnVtZXJhdGlvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKToKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OmFic3RyYWN0TW9kdWxlUmVjb3Jk
SW50ZXJuYWxGaWVsZEluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNOb2Rl
OjplbWl0X2ludHJpbnNpY19nZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmllbGQpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZXhl
Y3V0ZU1vZHVsZVByb2dyYW0pOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlQXdhaXQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp1c2VzQXdhaXQpOgor
ICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZVByb2dyYW1O
b2RlOjpNb2R1bGVQcm9ncmFtTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkpTVG9rZW46OmR1bXAgY29u
c3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlclRva2Vucy5oOgorICAgICAgICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
OgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgor
ICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6
OkFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgICogcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6
aW5pdGlhbFZhbHVlcyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjppbnRl
cm5hbEZpZWxkKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmludGVybmFs
RmllbGQgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHA6CisgICAgICAg
IChKU0M6OkpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVS
ZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXZhbHVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiBydW50aW1lL01v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1i
b2xUYWJsZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6CisgICAgICAgIChKU0M6OldlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5oOgorCiAyMDIxLTAyLTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNJbnRlcm5hbFByb21pc2U6OnRoZW4gY2Fu
IGZhaWwgaWYgZXhlY3V0aW9uIGlzIHRlcm1pbmF0ZWQKQEAgLTMwMzc1LDEwNCArMzA1NjEsNyBA
QAogICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgogICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckFzc2lnbik6CiAKLTIwMjAtMDQtMjEgIEFkcmlhbiBQZXJleiBk
ZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KLQotICAgICAgICBOb24tdW5pZmllZCBidWls
ZCBmaXhlcyBsYXRlIEZlYnJ1YXJ5IDIwMjAgZWRpdGlvbgotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNzY3Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBi
dWlsZCBmaXguCi0KLSAgICAgICAgKiBkZmcvREZHVmFsdWVSZXBSZWR1Y3Rpb25QaGFzZS5jcHA6
IEFkZCBtaXNzaW5nIEpTQ0pTVmFsdWVJbmxpbmVzLmggaGVhZGVyLgotICAgICAgICAqIGppdC9K
SVRDYWxsLmNwcDogQWRkIG1pc3NpbmcgU2xvd1BhdGhDYWxsLmggaGVhZGVyLgotICAgICAgICAq
IHJ1bnRpbWUvQWdncmVnYXRlRXJyb3IuY3BwOiBBZGQgbWlzc2luZyBKU0NKU1ZhbHVlSW5saW5l
cy5oLCBKU0NlbGxJbmxpbmVzLmgsIGFuZAotICAgICAgICBKU0dsb2JhbE9iamVjdElubGluZXMu
aCBoZWFkZXJzLgotICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5j
cHA6IEFkZGVkIG1pc3NpbmcgSlNDSlNWYWx1ZUlubGluZXMuaCwgSlNDZWxsSW5saW5lcy5oLAot
ICAgICAgICBhbmQgVk1JbmxpbmVzLmggaGVhZGVycy4KLSAgICAgICAgKiBydW50aW1lL0FnZ3Jl
Z2F0ZUVycm9yUHJvdG90eXBlLmNwcDogQWRkZWQgbWlzc2luZyBBZ2dyZWdhdGVFcnJvci5oLCBJ
ZGVudGlmaWVySW5saW5lcy5oLAotICAgICAgICBKU0NKU1ZhbHVlSW5saW5lcy5oLCBKU0NlbGxJ
bmxpbmVzLmgsIEpTR2xvYmFsT2JqZWN0SW5saW5lcy5oLCBhbmQgVk1JbmxpbmVzLmggaGVhZGVy
cy4KLSAgICAgICAgKiBydW50aW1lL0ludHJpbnNpYy5oOiBBZGRlZCBtaXNzaW5nIHd0Zi9PcHRp
b25hbC5oIGhlYWRlci4KLQotMjAyMC0wNC0yMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xp
bmdAc29ueS5jb20+Ci0KLSAgICAgICAgQ2xhc3NlcyBtYXJrZWQgZmluYWwgc2hvdWxkIG5vdCB1
c2UgcHJvdGVjdGVkIGFjY2VzcyBzcGVjaWZpZXIKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDc3NQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhbmll
bCBCYXRlcy4KLQotICAgICAgICAqIEFQSS9KU0FQSVZhbHVlV3JhcHBlci5oOgotICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKLSAgICAgICAgKiBBUEkvSlNDYWxsYmFja09i
amVjdC5oOgotICAgICAgICAqIGIzL0IzRXh0cmFjdFZhbHVlLmg6Ci0gICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKLSAgICAgICAgKiBpbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Lmg6Ci0gICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Lmg6Ci0gICAgICAgICogaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oOgotICAgICAgICAqIGpzYy5jcHA6Ci0gICAgICAgICogcnVudGltZS9BZ2dyZWdhdGVFcnJv
ci5oOgotICAgICAgICAqIHJ1bnRpbWUvQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaDoKLSAgICAg
ICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKLSAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmg6Ci0gICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg6
Ci0gICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmg6Ci0g
ICAgICAgICogcnVudGltZS9BdG9taWNzT2JqZWN0Lmg6Ci0gICAgICAgICogcnVudGltZS9CaWdJ
bnRDb25zdHJ1Y3Rvci5oOgotICAgICAgICAqIHJ1bnRpbWUvQmlnSW50T2JqZWN0Lmg6Ci0gICAg
ICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuaDoKLSAgICAgICAgKiBydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5oOgotICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oOgot
ICAgICAgICAqIHJ1bnRpbWUvQ29uc29sZU9iamVjdC5oOgotICAgICAgICAqIHJ1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmg6Ci0gICAg
ICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9FcnJv
clByb3RvdHlwZS5oOgotICAgICAgICAqIHJ1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdlbnQuaDoK
LSAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg6Ci0gICAgICAgICogcnVudGlt
ZS9GdW5jdGlvblJhcmVEYXRhLmg6Ci0gICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oOgotICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6
Ci0gICAgICAgICogcnVudGltZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QuaDoKLSAg
ICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvci5oOgotICAgICAgICAqIHJ1bnRpbWUvSW50bENv
bGxhdG9yQ29uc3RydWN0b3IuaDoKLSAgICAgICAgKiBydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5oOgotICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Lmg6Ci0gICAgICAg
ICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOgotICAgICAgICAqIHJ1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmg6Ci0gICAgICAgICogcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0Lmg6Ci0gICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29u
c3RydWN0b3IuaDoKLSAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUu
aDoKLSAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5oOgotICAgICAgICAqIHJ1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaDoKLSAgICAgICAgKiBydW50aW1lL0ludGxQ
bHVyYWxSdWxlc1Byb3RvdHlwZS5oOgotICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlLmg6Ci0gICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6Ci0g
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaDoKLSAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuaDoKLSAgICAgICAgKiBydW50aW1lL0pTQXN5
bmNHZW5lcmF0b3IuaDoKLSAgICAgICAgKiBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5oOgotICAg
ICAgICAqIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oOgotICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3IuaDoKLSAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Lmg6Ci0gICAgICAgICogcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuaDoKLSAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmg6
Ci0gICAgICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOgotICAgICAgICAq
IHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKLSAgICAgICAgKiBydW50aW1l
L0pTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9KU1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3IuaDoKLSAgICAgICAgKiBydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuaDoKLSAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKLSAgICAgICAg
KiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKLSAgICAgICAgKiBydW50aW1lL051bWJlckNv
bnN0cnVjdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaDoKLSAgICAg
ICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuaDoKLSAgICAgICAgKiBydW50aW1lL1ByZWRpY3Rpb25GaWxlQ3JlYXRpbmdG
dXp6ZXJBZ2VudC5oOgorMjAyMC0wNC0yMSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAICAgICAgICogcnVudGltZS9QcmVkaWN0aW9uRmlsZUNyZWF0aW5n
RnV6emVyQWdlbnQuaDoKICAgICAgICAgKiBydW50aW1lL1JlZmxlY3RPYmplY3QuaDoKICAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cC5oOgogICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAxMjIzZmM2YTJkZmMwMDFkYTU3MjdkZTA4ZTMwYTlkY2RkY2Iz
YWY3Li5jOGFjYzg3ZmNmNzczNThiZTBhZTRmOTYwOWYyOWY1MzAxZGQ2ZDUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdhaXQgcHJv
cG9zYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlTW9kdWxlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oOgorCiAyMDIxLTAyLTIwICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBtb2R1bGVzIGluIHNl
cnZpY2Ugd29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQ
SUdsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5oCmluZGV4IDgxNjdjNWNjMGJjNGFmZDk3Yzk4NTY0OTUzZGRlZDQzMGM3MzNlNTguLjQ3
MjE3OTJhZGE0MTFhOWFiYjY1OTI4MzE4ZWVmMWU4M2M3MzJiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBJZGVudGlmaWVyIG1vZHVsZUxvYWRlclJlc29sdmUoSlNHbG9iYWxP
YmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUga2V5VmFsdWUsIEpTVmFsdWUgcmVmZXJy
ZXJWYWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVM
b2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNW
YWx1ZSwgSlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTT2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJ
bXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNW
YWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1ZhbHVlKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSBtb2R1
bGVMb2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1
ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgc3RhdGljIEpTVmFsdWUgbW9kdWxlTG9hZGVyRXZh
bHVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUs
IEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogCiAgICAgSlNWYWx1ZSBsb2FkQW5kRXZhbHVh
dGVKU1NjcmlwdE1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImLCBKU1NjcmlwdCAqKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggZGVl
NzMyNTNmODVkNWIxMjhkMmMyYjNhYTUyNGFjNDJiZDlhYThkZS4uZDdhNWUyZmRlNjhmN2EzY2Q3
MWQ1OWU5OTQzZTc0NTUzZmU4MDQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCkBAIC0yMzksNyArMjM5LDcgQEAgSlNPYmplY3QqIEpTQVBJ
R2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0ds
b2JhbE9iamUKICAgICByZXR1cm4gbWV0YVByb3BlcnRpZXM7CiB9CiAKLUpTVmFsdWUgSlNBUElH
bG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTTW9kdWxlTG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTVmFsdWUga2V5LCBKU1ZhbHVl
IG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitKU1ZhbHVlIEpTQVBJ
R2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU1ZhbHVlIGtleSwgSlNWYWx1
ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRW
YWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yNTgs
NyArMjU4LDggQEAgSlNWYWx1ZSBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRXZhbHVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICAgICAgW21vZHVsZUxvYWRl
ckRlbGVnYXRlIHdpbGxFdmFsdWF0ZU1vZHVsZTp1cmxdOwogCiAgICAgc2NvcGUucmVsZWFzZSgp
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0gbW9kdWxlTG9hZGVyLT5ldmFsdWF0ZU5vblZpcnR1YWwo
Z2xvYmFsT2JqZWN0LCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyKTsKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVwZGF0ZSB0aGUgZGVsZWdhdGUgY2FsbGJhY2tzIGZvciBh
c3luYyBtb2R1bGVzLgorICAgIEpTVmFsdWUgcmVzdWx0ID0gbW9kdWxlTG9hZGVyLT5ldmFsdWF0
ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRG
ZXRjaGVyLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwogCiAgICAgaWYgKFttb2R1bGVMb2FkZXJE
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZEV2YWx1YXRlTW9kdWxlOild
KQogICAgICAgICBbbW9kdWxlTG9hZGVyRGVsZWdhdGUgZGlkRXZhbHVhdGVNb2R1bGU6dXJsXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODNhNDNmNDgzZjYzMGU0MjdhMTU4OTMz
OWQxMmJmMmQ2NWI4OThkNi4uMWVhYjgyZmM4Yzg3Y2VhM2FmYzMzODhkNWE4ZWRkYmFmZWQ3ZDk2
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NDYsNyArMTg0Niw3IEBACiAJ
CUUzNDlBNzgxMjQ5MUYxNjEwMDFCQTMzNiAvKiBERkdDb2RlT3JpZ2luUG9vbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0OUE3ODAyNDkxRjE1QTAw
MUJBMzM2IC8qIERGR0NvZGVPcmlnaW5Qb29sLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM0RTY1NzUyMDY2OEVBQTAwRkI4MUFDIC8qIFBhcnNl
SGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM0
RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEVEQkY3MURCNUZGQzkwMERDODdBNSAv
KiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFMzRGOTMwRTIzMjJE
ODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRv
ci5oICovOyB9OworCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMy
MkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTA3MDhBMURDNDlCQkYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzUzQzExRDI0QUE0
Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTcyNEFBNENCNjAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXMuaCAqLzsgfTsKIAkJRTM1M0MxMUUyNEFBNENCNzAwM0ZCREYzIC8qIEludGxE
aXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM1M0MxMTgyNEFBNENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFt
ZXNDb25zdHJ1Y3Rvci5oICovOyB9OwpAQCAtOTA5Nyw2ICs5MDk3LDggQEAKIAkJCQk4NjAxNjFF
MzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQUQ0OTM3QzQxRERCRTYxNDAwNzdDODA3IC8qIEFic3RyYWN0TW9kdWxlUmVjb3Jk
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU5MTJCNEYyNTMxMTkzMzAwRkFCRERGIC8qIEFi
c3RyYWN0U2xvdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFOTEyQjUxMjUzMTFBRDEw
MEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vzc0Nhc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFt
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYxQkYyNjIwNTAwNUM0MEZDIC8qIEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBpbiBIZWFkZXJzICovLApA
QCAtOTMyMSw3ICs5MzIzLDYgQEAKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0
Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzNUU4OUZEMjVD
NTBGODcwMDcxRUUxRSAvKiBCaWdJbnQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk4Njk3
NkU1RjFGQTNFOEJDMDBFN0M0RTEgLyogQmlnSW50Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCUZFMDQxNTUzMjUyRUMwNzMwMDkxRUI1RCAvKiBTbG90VmlzaXRvck1hY3Jvcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDIxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTgxNjc3MUZCNzkyNDIwMEVDQzRFQyAvKiBCaWdJbnRP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBC
aWdJbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTYwMyw3ICs5NjA0LDYgQEAKIAkJ
CQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8q
IERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFOTEyQjRGMjUzMTE5MzMwMEZBQkRE
RiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4OTAsNyArOTg5MCw2IEBACiAJCQkJ
QTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0SG9zdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjExODdCN0I4NjAwODQzQjEwIC8qIElu
amVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRTI4N0QwMjI1MkZCMkU4
MDBENzIzRjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUx
M0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2NyaXB0U291cmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMgLyogaW5saW5lLWFuZC1taW5pZnkt
c3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk3OTA1QkI2OTFE
MTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDMw
LDcgKzEwMDI5LDYgQEAKIAkJCQk1M0M0RjY2QjIxQjFBNDA5MDAyRkQwMDkgLyogSlNBUElHbG9i
YWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MDQ4MDEzMTAyMUExRDkwMDhFN0YwMSAv
KiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJDRjM5QzIxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUz
MzZCNTMyNURCNDk3RDAwOThGMDM0IC8qIE1hcmtpbmdDb25zdHJhaW50RXhlY3V0b3JQYWlyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlC
dWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkU1MTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwNjcsNyArMTAw
NjUsNiBAQAogCQkJCUE1OEMwMjQyMThFNEE0MUEwMDAzMkJDNSAvKiBKU0NvbnRleHRQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNDb250
ZXh0UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBFRTE5RjVCNUM0MDA5OEY1RUMgLyog
SlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNkJDQ0VD
MDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENEMUQ4MTA4Q0Y5MDIwMDgxNjNDNiAvKiBK
U0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTc0OTdFNjIwOTAwMUIx
MDAwMzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTk5LDcgKzEwMTk2
LDYgQEAKIAkJCQk3OTVBQzYxODIwQTIzNTVFMDA1MkM3NkMgLyogSlNWaXJ0dWFsTWFjaGluZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU4MTdEQTQxQUUwMDY1MzhBRiAvKiBK
U1dlYWtNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAv
KiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU5MTJC
NTEyNTMxMUFEMTAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzQ4MkI5MzExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFw
UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMw
IC8qIEpTV2Vha09iamVjdFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjI4NkIxRUI4RTZD
RjAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNzcsNiAr
MTAyNzMsNyBAQAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5MTAzMSAvKiBNYXJrZWRTcGFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3REYxMzUxRTI5NzBEQzAwOTU5NTFCIC8qIE1hcmtlZFNw
YWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2NjBFMzgxRTA1MTdCQjAwMzE0NjJD
IC8qIE1hcmtpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTMzNkI1MzI1REI0
OTdEMDA5OEYwMzQgLyogTWFya2luZ0NvbnN0cmFpbnRFeGVjdXRvclBhaXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNjYwRTNBMUUwNTE3QzEwMDMxNDYyQyAvKiBNYXJraW5nQ29uc3RyYWludFNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5REFBMDkxRkQxQzNDRjAwNzlDNUIyIC8qIE1hcmtp
bmdDb25zdHJhaW50U29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJENkYxMjEzNTM5QTQx
MDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNDczLDYgKzEwNDcw
LDcgQEAKIAkJCQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0YgLyogU2ltcGxlVHlwZWRBcnJheUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3OEYxMTNBQUI4OEYwMDVCN0MyQyAv
KiBTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIxNjBGRTcxNUY3RTk1RTAwOTQy
REZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUwNDE1NTMy
NTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzA5RjJGMDE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjVCNEEzMzFDODRGMEQ2MDBGMUIxN0UgLyogU2xvd1BhdGhSZXR1cm5UeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJp
bmdzLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTkxLDYgKzEwNTg5LDggQEAKIAkJCQk3OUVFMEMw
MDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWls
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyRDFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTI4N0QwMjI1MkZCMkU4MDBENzIzRjkgLyogVmVy
aWZpZXJTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkJDQ0VDMDQyNUQxRkEyNzAw
MEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjREOEM3NDFGQzdBOTdBMDAxRDMyQUMgLyogVmlzaXRDb3VudGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjk1MkFBMTFERjc4NjA5MDBFMDZGQkQgLyogVmlzaXRSYWNlS2V5
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9Nb2R1bGVMb2FkZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9k
dWxlTG9hZGVyLmpzCmluZGV4IGE4Yzg2MTVlOWQyMWVhZDRiYzkzNzA2ODc1NzgzN2NiZjBhNTg0
ZDAuLjNhMTBkMGE4YmM1MDViZDA5ZTU1ZjY2NDgyYjk4ZjY1NmQ5ZTE4YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlci5qcwpAQCAtMTAwLDYgKzEw
MCw4IEBAIGZ1bmN0aW9uIG5ld1JlZ2lzdHJ5RW50cnkoa2V5KQogICAgICAgICBsaW5rU3VjY2Vl
ZGVkOiB0cnVlLAogICAgICAgICBldmFsdWF0ZWQ6IGZhbHNlLAogICAgICAgICB0aGVuOiBAdW5k
ZWZpbmVkLAorICAgICAgICBpc0FzeW5jOiBmYWxzZSwKKyAgICAgICAgY29tcGxldGlvblByb21p
c2U6IEB1bmRlZmluZWQsCiAgICAgfTsKIH0KIApAQCAtMjg2LDExICsyODgsMTUgQEAgZnVuY3Rp
b24gbGluayhlbnRyeSwgZmV0Y2hlcikKICAgICAgICAgLy8gU2luY2Ugd2UgYWxyZWFkeSBoYXZl
IHRoZSAiZGVwZW5kZW5jaWVzIiBmaWVsZCwKICAgICAgICAgLy8gd2UgY2FuIGNhbGwgbW9kdWxl
RGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIHdpdGggdGhlIGNvcnJlY3Qgb3JkZXIKICAgICAgICAg
Ly8gd2l0aG91dCBjb25zdHJ1Y3RpbmcgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYnkgY2FsbGluZyBk
ZXBlbmRlbmN5R3JhcGguCisgICAgICAgIHZhciBoYXNBc3luY0RlcGVuZGVuY3kgPSBmYWxzZTsK
ICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIHRoaXMubGluayhkZXBlbmRlbmNpZXNbaV0sIGZldGNoZXIpOwor
ICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZGVwZW5kZW5jeSA9IGRlcGVuZGVuY2ll
c1tpXTsKKyAgICAgICAgICAgIHRoaXMubGluayhkZXBlbmRlbmN5LCBmZXRjaGVyKTsKKyAgICAg
ICAgICAgIGhhc0FzeW5jRGVwZW5kZW5jeSB8fD0gZGVwZW5kZW5jeS5pc0FzeW5jOworICAgICAg
ICB9CiAKLSAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlvbkluc3RhbnRpYXRpb24oZW50cnku
bW9kdWxlLCBmZXRjaGVyKTsKKyAgICAgICAgZW50cnkuaXNBc3luYyA9IHRoaXMubW9kdWxlRGVj
bGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcikgfHwgaGFzQXN5bmNE
ZXBlbmRlbmN5OwogICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgIGVudHJ5LmxpbmtTdWNj
ZWVkZWQgPSBmYWxzZTsKICAgICAgICAgZW50cnkubGlua0Vycm9yID0gZXJyb3I7CkBAIC0zMDMs
NyArMzA5LDYgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwgZmV0Y2hlcikKIGZ1bmN0aW9uIG1vZHVs
ZUV2YWx1YXRpb24oZW50cnksIGZldGNoZXIpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24KLQogICAg
ICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmIChlbnRyeS5ldmFsdWF0ZWQpCkBAIC0zMTIsMTAgKzMx
NywzNyBAQCBmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9uKGVudHJ5LCBmZXRjaGVyKQogCiAgICAg
Ly8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1vZHVsZXNdXSBpcyBjbG9uZWQgaW50
byBlbnRyeS5kZXBlbmRlbmNpZXMuCiAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRlcGVu
ZGVuY2llczsKLSAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVwZW5kZW5jaWVzLmxlbmd0
aDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZGVwZW5k
ZW5jaWVzW2ldLCBmZXRjaGVyKTsKIAotICAgIHRoaXMuZXZhbHVhdGUoZW50cnkua2V5LCBlbnRy
eS5tb2R1bGUsIGZldGNoZXIpOworICAgIGlmICghZW50cnkuaXNBc3luYykgeworICAgICAgICAv
LyBTaW5jZSBsaW5raW5nIHNldHMgaXNBc3luYyBmb3IgYW55IHN0cm9uZ2x5IGNvbm5lY3RlZCBj
b21wb25lbnQgd2l0aCBhbiBhc3luYyBtb2R1bGUgd2Ugc2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYg
YWxsIG91ciBkZXBlbmRlbmNpZXMgYXJlIGFsc28gc3luYy4KKyAgICAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRlbmNpZXNbaV07CisgICAgICAgICAgICBA
YXNzZXJ0KCFkZXBlbmRlbmN5LmlzQXN5bmMpOworICAgICAgICAgICAgdGhpcy5tb2R1bGVFdmFs
dWF0aW9uKGRlcGVuZGVuY3ksIGZldGNoZXIpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5l
dmFsdWF0ZShlbnRyeS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlcik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgcmV0dXJuIChhc3luYyBmdW5jdGlvbiBhc3luY01vZHVsZUV2YWx1YXRpb24oZW50
cnksIGRlcGVuZGVuY2llcykgeworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9
IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBh
d2FpdCB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZGVwZW5kZW5jaWVzW2ldLCBmZXRjaGVyKTsKKwor
ICAgICAgICAgICAgdmFyIHJlc3VtZU1vZGUgPSAwOworICAgICAgICAgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgICAgICAgICB2YXIgYXdhaXRlZFZhbHVlID0gdGhpcy5ldmFsdWF0ZShlbnRy
eS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlciwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsK
KyAgICAgICAgICAgICAgICBpZiAoQGdldEFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVs
ZChlbnRyeS5tb2R1bGUsIEBhYnN0cmFjdE1vZHVsZVJlY29yZEZpZWxkU3RhdGUpID09IEBHZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXRlZFZhbHVlID0gYXdh
aXQgYXdhaXRlZFZhbHVlOworICAgICAgICAgICAgICAgICAgICByZXN1bWVNb2RlID0gMDsKKyAg
ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0ZWRW
YWx1ZSA9IGU7CisgICAgICAgICAgICAgICAgICAgIHJlc3VtZU1vZGUgPSAyOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuQGNhbGwodGhpcywgZW50cnksIGRl
cGVuZGVuY2llcyk7CisgICAgfQogfQogCiAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBs
b2FkZXIuCkBAIC0zNjQsMjUgKzM5NiwxMyBAQCBhc3luYyBmdW5jdGlvbiBsb2FkQW5kRXZhbHVh
dGVNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1ldGVycywgZmV0Y2hlcikKICAgICByZXR1cm4gYXdh
aXQgdGhpcy5saW5rQW5kRXZhbHVhdGVNb2R1bGUoa2V5LCBmZXRjaGVyKTsKIH0KIAotZnVuY3Rp
b24gcmVxdWVzdEltcG9ydE1vZHVsZShrZXksIHBhcmFtZXRlcnMsIGZldGNoZXIpCithc3luYyBm
dW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFyYW1ldGVycywgZmV0Y2hlcikKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgY29uc3RydWN0b3IgPSBASW50ZXJuYWxQcm9t
aXNlOwotICAgIHZhciBwcm9taXNlID0gQGNyZWF0ZVByb21pc2UoY29uc3RydWN0b3IsIC8qIGlz
SW50ZXJuYWxQcm9taXNlICovIHRydWUpOwotICAgIEByZXNvbHZlV2l0aG91dFByb21pc2UodGhp
cy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1ldGVycywg
ZmV0Y2hlciwgbmV3IEBTZXQpLAotICAgICAgICAoZW50cnkpID0+IHsKLSAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5saW5rQW5kRXZhbHVhdGVNb2R1bGUoZW50cnkua2V5
LCBmZXRjaGVyKTsKLSAgICAgICAgICAgICAgICBAZnVsZmlsbFByb21pc2VXaXRoRmlyc3RSZXNv
bHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCB0aGlzLmdldE1vZHVsZU5hbWVzcGFjZU9i
amVjdChlbnRyeS5tb2R1bGUpKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAg
ICAgICAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxD
aGVjayhwcm9taXNlLCBlcnJvcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAg
IChyZWFzb24pID0+IHsKLSAgICAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2
aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgcmVhc29uKTsKLSAgICAgICAgfSk7Ci0gICAg
cmV0dXJuIHByb21pc2U7CisgICAgdmFyIGVudHJ5ID0gYXdhaXQgdGhpcy5yZXF1ZXN0U2F0aXNm
eSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwgbmV3IEBT
ZXQpOworICAgIGF3YWl0IHRoaXMubGlua0FuZEV2YWx1YXRlTW9kdWxlKGVudHJ5LmtleSwgZmV0
Y2hlcik7CisgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KGVudHJ5Lm1v
ZHVsZSk7CiB9CiAKIGZ1bmN0aW9uIGRlcGVuZGVuY3lLZXlzSWZFdmFsdWF0ZWQoa2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggYThlNTZkMGNkMzk0YmMxYjdhYzA1MjZiZTg2Njdl
YWM4YmRkN2U2YS4uNmNiODhjZTdhZjUzNTc5YTk2YmNhNjQ3ODRiMjczMWNhNTgyOGZkNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGF1dG8gbmV4dFRvRW50
ZXJQb2ludCA9IGVudGVyUG9pbnQoKS5uZXh0KCk7CiAgICAgICAgIHVuc2lnbmVkIHN3aXRjaFRh
YmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5j
bHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6QXJndW1lbnQ6OlN0YXRlKSk7CiAgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1f
Y29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKICAgICAgICAganVtcFRhYmxlLm1pbiA9
IDA7CiAgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzID0gUmVmQ291bnRlZEFycmF5PGlu
dDMyX3Q+KG1feWllbGRzLnNpemUoKSArIDEpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAgfQogCiAgICAgZm9yIChjb25zdCBZ
aWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgewotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOworICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpGcmFt
ZSkpOwogCiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBtX2luc3RydWN0aW9ucy5hdChkYXRh
LnBvaW50KTsKICAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgpAQCAtMjkzLDExICsyOTMs
MTggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKIAogdm9pZCBwZXJm
b3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJhdG9yJiBieXRlY29kZUdlbmVyYXRv
ciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb25TdHJl
YW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCiB7Ci0gICAgaWYgKFVO
TElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkp
CisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3Jp
ZmljYXRpb24oKSkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJCeXRlY29kZXMgYmVmb3JlIGdlbmVy
YXRvcmlmaWNhdGlvbiIpOwogICAgICAgICBDb2RlQmxvY2tCeXRlY29kZUR1bXBlcjxVbmxpbmtl
ZENvZGVCbG9ja0dlbmVyYXRvcj46OmR1bXBCbG9jayhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywg
V1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9CiAKICAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
biBwYXNzKGJ5dGVjb2RlR2VuZXJhdG9yLCBjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKICAg
ICBwYXNzLnJ1bigpOworCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZXNC
ZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJCeXRlY29k
ZXMgYWZ0ZXIgZ2VuZXJhdG9yaWZpY2F0aW9uIik7CisgICAgICAgIENvZGVCbG9ja0J5dGVjb2Rl
RHVtcGVyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPjo6ZHVtcEJsb2NrKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zLCBXVEY6OmRhdGFGaWxlKCkpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXggNWNhMzY0OWE3YzFmYzQ3NzU3OTk2
ZjNjMzIyMDI4Y2Y0NWUwNWMzMi4uMmE3NTg4ZDZkNWNjN2EzNThlOGNjMWM4OTMzMWNiOTIxZjc5
Yjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCIKIAor
I2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVz
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJJZGVudGlmaWVy
SW5saW5lcy5oIgpAQCAtODYsMTEgKzg3LDExIEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6
OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQogICAgIG1fZ2VuZXJhdG9yRmllbGRO
ZXh0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6
OkZpZWxkOjpOZXh0KSkpOwogICAgIG1fZ2VuZXJhdG9yRmllbGRUaGlzLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpUaGlzKSkpOwog
ICAgIG1fZ2VuZXJhdG9yRmllbGRGcmFtZS5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUpKSk7Ci0gICAgbV9HZW5lcmF0b3JS
ZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKLSAgICBtX0dl
bmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKTsKLSAg
ICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2Rl
KSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVk
KSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5n
KSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbC5zZXQobV92bSwganNOdW1iZXIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUp
KSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cuc2V0KG1fdm0sIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSk7
CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNldChtX3ZtLCBqc051bWJlcihzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6UmV0dXJuTW9kZSkpKTsK
KyAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkNvbXBsZXRlZCkpKTsKKyAgICBtX0dl
bmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykpKTsKICAgICBtX2FycmF5SXRlcmF0
b3JGaWVsZEl0ZXJhdGVkT2JqZWN0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRlZE9iamVjdCkpKTsKICAgICBtX2Fy
cmF5SXRlcmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkpKTsKICAgICBtX2FycmF5SXRlcmF0
b3JGaWVsZEtpbmQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXJy
YXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSk7CkBAIC0xMTIsNiArMTEzLDcgQEAgQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeShWTSYgdm0pCiAgICAg
bV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdC5zZXQobV92bSwganNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6QXN5bmNHZW5lcmF0b3JTdXNwZW5k
UmVhc29uOjpBd2FpdCkpKTsKICAgICBtX0FzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbk5vbmUu
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTQXN5bmNHZW5lcmF0b3I6
OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6Tm9uZSkpKTsKICAgICBtX3VzZUludGxEYXRl
VGltZUZvcm1hdERheVBlcmlvZC5zZXQobV92bSwganNCb29sZWFuKE9wdGlvbnM6OnVzZUludGxE
YXRlVGltZUZvcm1hdERheVBlcmlvZCgpKSk7CisgICAgbV9hYnN0cmFjdE1vZHVsZVJlY29yZEZp
ZWxkU3RhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEFic3RyYWN0
TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpKSk7CiB9CiAKIE9wdGlvbmFsPEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXAo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAppbmRleCAx
YzkwODIzOGYzYTNlZWFkM2UwYjI0YzQzNWM1NjdmMTVlZTcwYmI2Li41Y2Y0ZmE1NWMzZWVlZGVm
NGY4ZWE5M2NkNjFkNDY2MWViNjdmODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmgKQEAgLTQ3LDYg
KzQ3LDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50IDogaW50MzJfdDsKICAgICBtYWNy
byhnZXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldEdlbmVyYXRvckludGVy
bmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQpIFwK
KyAgICBtYWNybyhnZXRBYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmllbGQpIFwKICAgICBt
YWNybyhnZXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldFN0cmlu
Z0l0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3JvKGdldE1hcEl0ZXJhdG9ySW50ZXJu
YWxGaWVsZCkgXApAQCAtMTUyLDYgKzE1Myw3IEBAIGVudW0gY2xhc3MgTGlua1RpbWVDb25zdGFu
dCA6IGludDMyX3Q7CiAgICAgbWFjcm8oQXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uQXdhaXQp
IFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Ob25lKSBcCiAgICAgbWFj
cm8odXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kKSBcCisgICAgbWFjcm8oYWJzdHJhY3RN
b2R1bGVSZWNvcmRGaWVsZFN0YXRlKSBcCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9CWVRFQ09ERV9J
TlRSSU5TSUNfQ09OU1RBTlRTX0NVU1RPTV9FQUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhz
ZW50aW5lbE1hcEJ1Y2tldCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggYTI0ZDI2NTFiNTFhODZlNmM5ZTcwNjlkNzQyNjBiY2E4NTcx
ZTQ5MS4uY2IwZTdjOGM5YmJiYTE0YzU3ZDIyYjRiYTI3ZWJmYjlkNzI5Nzc2YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMjk3LDcg
KzEyOTcsNiBAQCBvcCA6aXRlcmF0b3JfbmV4dCwKIAogb3AgOnlpZWxkLAogICAgIGFyZ3M6IHsK
LSAgICAgICAgZ2VuZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHlpZWxkUG9pbnQ6
IHVuc2lnbmVkLAogICAgICAgICBhcmd1bWVudDogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmlu
ZGV4IDQyNWFmMjViODA0OTI5ZjQ2MWYwYmIxMzhjNjVhOGNmNTRiYjUyNDMuLjAxNmEwMjdmYTMz
YWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3YTAwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVS
ZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEdldEludGVybmFsRmllbGQsIGJhc2Up
CiAgICAgVVNFUyhPcFB1dEludGVybmFsRmllbGQsIGJhc2UsIHZhbHVlKQogCi0gICAgVVNFUyhP
cFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQorICAgIFVTRVMoT3BZaWVsZCwgYXJndW1lbnQp
CiAKICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKICAgICAgICAgYXV0byBieXRlY29kZSA9
IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2suaAppbmRleCBiOTMyNDgxYWE0ZTI1YzQ3ZDdlN2FlZTQxMWIwODk4MzMwMGRhZTE2Li44
NTM5ZjU2MmI5MzA1NDZkZTRhNzM4NjU4MzEwMGU2MTRmYjQ5OTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jay5oCkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9tb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdpc3Rlck9mZnNldCA9IG9mZnNldDsK
ICAgICB9CiAKKyAgICBib29sIGlzQXN5bmMoKSBjb25zdCB7IHJldHVybiBjb2RlRmVhdHVyZXMo
KSAmIEF3YWl0RmVhdHVyZTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBDYWNoZWRNb2R1bGVD
b2RlQmxvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMWNlYWJjMGI1ZWFmZTJmZGRiMDlhMmNk
Y2Q1MDZjMDc5ZTQ5ZjdhZC4uZGY4ZTA5MzgwM2FjZTU0ZmMwMjNjN2IxODU0ZGRkYzBlMWNlZDM4
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RN
b2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKICNpbmNsdWRl
ICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVz
LmgiCkBAIC0yNzksNyArMjgwLDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICB9CiAgICAgCiAKLSAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rp
b25Cb2R5UGFyc2VNb2RlKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSkpCisgICAgaWYgKG1faXNB
c3luYykKICAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbigqdGhpcywgbV9jb2RlQmxv
Y2suZ2V0KCksIG1fd3JpdGVyLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCkpIDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSk7CkBAIC0zODUs
NiArMzg2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBib29sIG5lZWRzQXJndW1l
bnRzID0gKChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSAmJiAhY29kZUJsb2NrLT5pc0Fy
cm93RnVuY3Rpb24oKSkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChmdW5jdGlvbk5vZGUt
PnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYg
aXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpICYmIHBhcnNlTW9kZSAhPSBT
b3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU7CiAKICAgICBpZiAoaXNH
ZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKKyAgICAg
ICAgbV9pc0FzeW5jID0gdHJ1ZTsKICAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0
aW9uIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2ls
bCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAg
ICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAgICAgfQpAQCAtNDM0LDcgKzQzNiw3IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgZW1pdEVudGVyKCk7CiAKICAgICBpZiAoaXNHZW5l
cmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpCi0gICAgICAgIG1f
Z2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOworICAgICAgICBtX2dlbmVyYXRv
clJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkFyZ3VtZW50OjpHZW5lcmF0b3IpXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7
CiAKQEAgLTk1MSw2ICs5NTMsMTMgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVsZVByb2dyYW1Ob2QKICAgICAgICAg
cmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29wZSA6IFZhcktpbmQ6OlN0YWNrOwog
ICAgIH07CiAKKyAgICBpZiAobW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBd2FpdCgpKSB7CisgICAg
ICAgIG1faXNBc3luYyA9IHRydWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPD0g
SlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpOdW1iZXJPZkFyZ3VtZW50czsgKytpKQorICAgICAgICAg
ICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3Rl
ciA9ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3RyYWN0TW9kdWxlUmVj
b3JkOjpBcmd1bWVudDo6R2VuZXJhdG9yKV07CisgICAgfQorCiAgICAgZW1pdEVudGVyKCk7CiAK
ICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwpAQCAtOTU5LDcgKzk2OCw3IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dyYW1Ob2RlKiBt
b2R1bGVQcm9ncmFtTm9kCiAgICAgCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChDYWxs
RnJhbWVTbG90OjpjYWxsZWUpOwogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bVBhcmFtZXRlcnMo
MSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKKyAgICBtX2NvZGVCbG9jay0+c2V0TnVt
UGFyYW1ldGVycyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkFy
Z3VtZW50OjpOdW1iZXJPZkFyZ3VtZW50cykgKyAxKTsgLy8gQWxsb2NhdGUgc3BhY2UgZm9yICJ0
aGlzIiArIGFzeW5jIG1vZHVsZSBhcmd1bWVudHMuCiAKICAgICAvLyBOb3cgZGVjbGFyZSBhbGwg
dmFyaWFibGVzLgogCkBAIC05ODMsMTEgKzk5MiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxlUHJvZ3JhbU5v
ZAogCiAgICAgLy8gV2Uga2VlcCB0aGUgc3ltYm9sIHRhYmxlIGluIHRoZSBjb25zdGFudCBwb29s
LgogICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRyOwotICAgIGlm
IChzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSkKKyAgICBpZiAoc2hvdWxkRW1pdFR5cGVQ
cm9maWxlckhvb2tzKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBd2FpdCgpKQogICAgICAg
ICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShtb2R1bGVFbnZpcm9ubWVu
dFN5bWJvbFRhYmxlKTsKICAgICBlbHNlCiAgICAgICAgIGNvbnN0YW50U3ltYm9sVGFibGUgPSBh
ZGRDb25zdGFudFZhbHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPmNsb25lU2NvcGVQ
YXJ0KG1fdm0pKTsKIAorICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0F3YWl0KCkpIHsK
KyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldChtX3ZtLCBtb2R1bGVFbnZp
cm9ubWVudFN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXggPSBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpOworICAgICAgICBlbWl0UHV0SW50
ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpGcmFtZSksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSk7CisgICAgfQorCiAgICAgcHVzaFREWlZhcmlhYmxlcyhsZXhpY2FsVmFyaWFibGVzLCBURFpD
aGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CiAg
ICAgYm9vbCBpc1dpdGhTY29wZSA9IGZhbHNlOwogICAgIG1fbGV4aWNhbFNjb3BlU3RhY2suYXBw
ZW5kKHsgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSwgbV90b3BNb3N0U2NvcGUsIGlzV2l0
aFNjb3BlLCBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpIH0pOwpAQCAtMzcyOSw3ICszNzQ0
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhFeHByZXNzaW9uTm9k
ZSogZXhwcikKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFdpbGxMZWF2ZUNhbGxGcmFt
ZURlYnVnSG9vaygpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zY29wZU5vZGUtPmlzRnVuY3Rp
b25Ob2RlKCkpOworICAgIC8vIFJFTEVBU0VfQVNTRVJUKG1fc2NvcGVOb2RlLT5pc0Z1bmN0aW9u
Tm9kZSgpKTsKICAgICBlbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbV9zY29wZU5v
ZGUtPmxhc3RMaW5lKCksIG1fc2NvcGVOb2RlLT5zdGFydE9mZnNldCgpLCBtX3Njb3BlTm9kZS0+
bGluZVN0YXJ0T2Zmc2V0KCkpOwogfQogCkBAIC00MTgwLDcgKzQxOTUsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2VuZXJpY0VudW1lcmF0aW9uKFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKiBub2RlLCBFeAogewogICAgIGJvb2wgaXNGb3JBd2FpdCA9IGZvckxvb3BOb2RlID8gZm9y
TG9vcE5vZGUtPmlzRm9yQXdhaXQoKSA6IGZhbHNlOwogICAgIGF1dG8gc2hvdWxkRW1pdEF3YWl0
ID0gaXNGb3JBd2FpdCA/IEVtaXRBd2FpdDo6WWVzIDogRW1pdEF3YWl0OjpObzsKLSAgICBBU1NF
UlQoIWlzRm9yQXdhaXQgfHwgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSk7
CisgICAgQVNTRVJUKCFpc0ZvckF3YWl0IHx8IChpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFy
c2VNb2RlKCkpIHx8IGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSgpKSkpOwogCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHN1YmplY3QgPSBuZXdUZW1wb3JhcnkoKTsKICAgICBlbWl0Tm9kZShz
dWJqZWN0LmdldCgpLCBzdWJqZWN0Tm9kZSk7CkBAIC00NzQwLDcgKzQ3NTUsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNB
c3luY0dlbmVyYXRvcjo6QQogICAgIHdoaWxlIChtX3dyaXRlci5wb3NpdGlvbigpICUgT3Bjb2Rl
U2l6ZTo6V2lkZTMyKQogICAgICAgICBPcE5vcDo6ZW1pdDxPcGNvZGVTaXplOjpOYXJyb3c+KHRo
aXMpOwogI2VuZGlmCi0gICAgT3BZaWVsZDo6ZW1pdCh0aGlzLCBnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCksIHlpZWxkUG9pbnRJbmRleCwgYXJndW1lbnQpOworICAgIE9wWWllbGQ6OmVtaXQodGhp
cywgeWllbGRQb2ludEluZGV4LCBhcmd1bWVudCk7CiAKICAgICAvLyBSZXN0b3JlIHRoZSB0cnkg
Y29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2lu
dC4KICAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKQEAg
LTQ3NTMsMTEgKzQ3NjgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgSlNBc3luY0dlbmVyYXRvcjoKIAogICAgIFJlZjxM
YWJlbD4gbm9ybWFsTGFiZWwgPSBuZXdMYWJlbCgpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKLSAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVx
Pihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2Vu
ZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAgZW1pdEVxdWFsaXR5T3A8T3BT
dHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0
b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgbm9ybWFsTGFiZWwuZ2V0KCkpOwogCiAgICAgUmVmPExhYmVsPiB0aHJvd0xh
YmVsID0gbmV3TGFiZWwoKTsKLSAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVz
dW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKKyAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1l
TW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCks
IHRocm93TGFiZWwuZ2V0KCkpOwogICAgIC8vIFJldHVybi4KICAgICB7CkBAIC00OTQxLDEwICs0
OTU2LDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVs
ZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgUmVmPExh
YmVsPiByZXR1cm5MYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29uZGl0aW9uID0gbmV3VGVtcG9yYXJ5
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRMb2FkKG51bGxw
dHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFs
aXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOwogICAgICAgICAgICAgICAg
ICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIG5vcm1hbExhYmVsLmdldCgpKTsK
IAotICAgICAgICAgICAgICAgICAgICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRp
b24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVz
dW1lTW9kZTo6UmV0dXJuTW9kZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0
eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKICAgICAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCByZXR1cm5MYWJlbC5nZXQoKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbHRocm91Z2ggdG8gVGhyb3dNb2RlLgpAQCAtNTA0
OCw5ICs1MDYzLDEwIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdh
dGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKQogeworICAg
IC8vIEZJWE1FOiBJdCBzZWVtcyBsaWtlIHRoaXMgd2lsbCBjcmVhdGUgYSBsb3Qgb2YgY29uc3Rh
bnRzIGlmIHRoZXJlIGFyZSBtYW55IHlpZWxkIHBvaW50cy4gTWF5YmUgd2Ugc2hvdWxkIG9wX2lu
YyB0aGUgb2xkIHN0YXRlLgogICAgIFJlZ2lzdGVySUQqIGNvbXBsZXRlZFN0YXRlID0gZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGUpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNBc3luY0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSk7Ci0gICAgZW1pdFB1dElu
dGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
R2VuZXJhdG9yOjpGaWVsZDo6U3RhdGUpLCBjb21wbGV0ZWRTdGF0ZSk7CisgICAgZW1pdFB1dElu
dGVybmFsRmllbGQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VN
b2RlKCkpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVs
ZDo6U3RhdGUpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6U3Rh
dGUpLCBjb21wbGV0ZWRTdGF0ZSk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRK
dW1wVmlhRmluYWxseUlmTmVlZGVkKGludCB0YXJnZXRMYWJlbFNjb3BlRGVwdGgsIExhYmVsJiBq
dW1wVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDkxNDI4ZTk2NmVmNjQ0MDgzYWNiODEzZDg0NzEx
MDExZTA3YzFmOGYuLjg2MWMwOWYxMjk5MTE2ZjZkOGY3OWJmNWU5YjVjNGVkNjE2N2FhMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTEwNTgsMTAgKzEwNTgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIEpTQXN5bmNHZW5l
cmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbiA9IEpTQXN5bmNHZW5lcmF0b3I6OkFz
eW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6WWllbGQpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEqKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6Okdl
bmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQotICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVu
dDo6UmVzdW1lTW9kZSldOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpXTsgfQorICAgICAgICBSZWdpc3RlcklE
KiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNf
Y2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OlN0YXRlKV07IH0KKyAgICAgICAg
UmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRl
cnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpWYWx1ZSldOyB9
CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3Vt
ZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkFyZ3VtZW50OjpGcmFtZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTEzMjcsNiArMTMyNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8UmVmPEZvckluQ29udGV4dD4+IG1fZm9y
SW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRT
dGFjazsKICAgICAgICAgdW5zaWduZWQgbV95aWVsZFBvaW50cyB7IDAgfTsKKyAgICAgICAgYm9v
bCBtX2lzQXN5bmMgeyBmYWxzZSB9OwogCiAgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOwogICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNjNmMTFhMTkxMTk5ZjcyODc1MzVkYzQx
MmVlMWY0N2YyNWI0YzhkNS4uN2VhYjQ1MGM3NGNkYWVkMDU2NWU3ZDkwNTg0NDk5Zjc4MThjODU0
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVk
ZSAiTm9kZUNvbnN0cnVjdG9ycy5oIgogCisjaW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQu
aCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yQmFzZUlubGluZXMuaCIKQEAgLTEzODks
NiArMTM5MCwxNSBAQCBzdGF0aWMgSlNBc3luY0dlbmVyYXRvcjo6RmllbGQgYXN5bmNHZW5lcmF0
b3JJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJbnRyaW5zaQogICAgIHJldHVybiBKU0FzeW5j
R2VuZXJhdG9yOjpGaWVsZDo6U3RhdGU7CiB9CiAKK3N0YXRpYyBBYnN0cmFjdE1vZHVsZVJlY29y
ZDo6RmllbGQgYWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxkSW5kZXgoQnl0ZWNvZGVJ
bnRyaW5zaWNOb2RlKiBub2RlKQoreworICAgIEFTU0VSVChub2RlLT5lbnRyeSgpLnR5cGUoKSA9
PSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5OjpUeXBlOjpFbWl0dGVyKTsKKyAgICBpZiAobm9k
ZS0+ZW50cnkoKS5lbWl0dGVyKCkgPT0gJkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRy
aW5zaWNfYWJzdHJhY3RNb2R1bGVSZWNvcmRGaWVsZFN0YXRlKQorICAgICAgICByZXR1cm4gQWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBBYnN0cmFjdE1vZHVsZVJlY29yZDo6RmllbGQ6OlN0YXRl
OworfQorCiBzdGF0aWMgSlNBcnJheUl0ZXJhdG9yOjpGaWVsZCBhcnJheUl0ZXJhdG9ySW50ZXJu
YWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2ljTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQo
bm9kZS0+ZW50cnkoKS50eXBlKCkgPT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6
RW1pdHRlcik7CkBAIC0xNDc0LDYgKzE0ODQsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRy
aW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRBc3luY0dlbmVyYXRvckludGVybmFsRmllbGQK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRJbnRlcm5hbEZpZWxkKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGluZGV4KTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19nZXRBYnN0cmFjdE1vZHVsZVJl
Y29yZEludGVybmFsRmllbGQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQoreworICAgIEFyZ3VtZW50TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5v
ZGU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9k
ZSk7CisgICAgbm9kZSA9IG5vZGUtPm1fbmV4dDsKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5t
X2V4cHItPmlzQnl0ZWNvZGVJbnRyaW5zaWNOb2RlKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZElu
ZGV4KHN0YXRpY19jYXN0PEJ5dGVjb2RlSW50cmluc2ljTm9kZSo+KG5vZGUtPm1fZXhwcikpKTsK
KyAgICBBU1NFUlQoaW5kZXggPCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bnVtYmVyT2ZJbnRlcm5h
bEZpZWxkcyk7CisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBpbmRleCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QXJyYXlJdGVyYXRvckludGVybmFsRmllbGQoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFyZ3VtZW50
TGlzdE5vZGUqIG5vZGUgPSBtX2FyZ3MtPm1fbGlzdE5vZGU7CkBAIC00OTQwLDcgKzQ5NjMsNyBA
QCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50
UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkp
OwogICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRD
b3VudCsrKSwgZ2VuZXJhdG9yLnByb21pc2VSZWdpc3RlcigpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1VuZGVm
aW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFs
TW9kZSkpKTsKICAgICAgICAgLy8gSlNUZXh0UG9zaXRpb24oaW50IF9saW5lLCBpbnQgX29mZnNl
dCwgaW50IF9saW5lU3RhcnRPZmZzZXQpCiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90KGZp
cnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CiAKQEAgLTQ5NTcs
MTEgKzQ5ODAsMTEgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmPExhYmVsPiBnZW5l
cmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgewogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNvbmRpdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihj
b25kaXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwg
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0
KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9y
OjpSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvckJvZHlMYWJlbC5nZXQoKSk7CiAK
ICAgICAgICAgICAgIFJlZjxMYWJlbD4gdGhyb3dMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRp
dGlvbi5nZXQoKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5l
cmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVz
dW1lTW9kZTo6VGhyb3dNb2RlKSkpKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElm
VHJ1ZShjb25kaXRpb24uZ2V0KCksIHRocm93TGFiZWwuZ2V0KCkpOwogCiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IDdlZjk1OTE5OTVjZWRlZWVjN2UxNmQ2ODBjMjdkYmZhNDk5MjA1ZGMuLmFkMWIxOTVj
YmM4NTMyY2ZlNmU2NjRiYmQyMzBiZjJhNzRlODA4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAKKyNpbmNsdWRl
ICJBYnN0cmFjdE1vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lQ2xv
c3VyZS5oIgpAQCAtNDksNiArNTAsNyBAQAogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5
LmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01vZHVs
ZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBh
cnNlci5oIgpAQCAtMTIwMSw3ICsxMjAzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0
ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWwKICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCi1KU1ZhbHVlIEludGVycHJldGVy
OjpleGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTTW9kdWxlRW52aXJvbm1l
bnQqIHNjb3BlKQorSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oSlNN
b2R1bGVSZWNvcmQqIHJlY29yZCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25tZW50
KiBzY29wZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBW
TSYgdm0gPSBzY29wZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKQEAgLTEyMzEsNiArMTIzMyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4
ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
CiAgICAgaWYgKHNjb3BlLT5zdHJ1Y3R1cmUodm0pLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
KQogICAgICAgICBzY29wZS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qodm0pOwogCisgICAgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQWJz
dHJhY3RNb2R1bGVSZWNvcmQ6OkFyZ3VtZW50OjpOdW1iZXJPZkFyZ3VtZW50cyk7CiAgICAgSlND
YWxsZWUqIGNhbGxlZSA9IEpTQ2FsbGVlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgc2NvcGUp
OwogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CkBAIC0xMjQw
LDcgKzEyNDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlTW9kdWxlUHJvZ3JhbShN
b2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSgogICAgICAgICBpZiAoVU5MSUtF
TFkoISFjb21waWxlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29t
cGlsZUVycm9yKTsKICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PE1vZHVsZVByb2dyYW1Db2Rl
QmxvY2sqPih0ZW1wQ29kZUJsb2NrKTsKLSAgICAgICAgQVNTRVJUKGNvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpID09IDEpOyAvLyAxIHBhcmFtZXRlciBmb3IgJ3RoaXMnLgorICAgICAgICBBU1NF
UlQoY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgPT0gbnVtYmVyT2ZBcmd1bWVudHMgKyAxKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKQEAgLTEyNDgsMTIgKzEyNTEs
MjIgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICB7CiAgICAgICAgIERpc2FsbG93R0Mg
ZGlzYWxsb3dHQzsgLy8gRW5zdXJlIG5vIEdDIGhhcHBlbnMuIEdDIGNhbiByZXBsYWNlIENvZGVC
bG9jayBpbiBFeGVjdXRhYmxlLgogICAgICAgICBqaXRDb2RlID0gZXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZSgpOworCisgICAgICAgIEpTVmFsdWUgYXJnc1tudW1iZXJPZkFyZ3VtZW50c10g
PSB7CisgICAgICAgICAgICByZWNvcmQsCisgICAgICAgICAgICByZWNvcmQtPmludGVybmFsRmll
bGQoSlNNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0ZSkuZ2V0KCksCisgICAgICAgICAgICBzZW50
VmFsdWUsCisgICAgICAgICAgICByZXN1bWVNb2RlLAorICAgICAgICAgICAgc2NvcGUsCisgICAg
ICAgIH07CiAgICAgICAgIC8vIFRoZSB8dGhpc3wgb2YgdGhlIG1vZHVsZSBpcyBhbHdheXMgYHVu
ZGVmaW5lZGAuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtZW52aXJvbm1lbnQtcmVjb3Jkcy1oYXN0aGlzYmluZGlu
ZwogICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtZ2V0dGhpc2JpbmRpbmcKLSAgICAg
ICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgY2FsbGVlLCBq
c1VuZGVmaW5lZCgpLCAxKTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgY2FsbGVlLCBqc1VuZGVmaW5lZCgpLCBudW1iZXJPZkFyZ3VtZW50cyAr
IDEsIGFyZ3MpOwogICAgIH0KIAorICAgIHJlY29yZC0+aW50ZXJuYWxGaWVsZChKU01vZHVsZVJl
Y29yZDo6RmllbGQ6OlN0YXRlKS5zZXQodm0sIHJlY29yZCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50PihKU01vZHVsZVJlY29yZDo6U3RhdGU6OkV4ZWN1dGluZykpKTsKKwogICAgIC8vIEV4ZWN1
dGUgdGhlIGNvZGU6CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgQVNTRVJUKGppdENv
ZGUgPT0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZSgpLnB0cigpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNGY4YmM3ODVj
NTNiM2RjZWJhZjI1MjMzYmE4NTBkYjUyYWQ0MWZjNS4uMGMzZWZlMTJlNTEwNTM4OGY2Y2YyODUx
MWQ5ZWE1ZTRlYWYzMDdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZgogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZVByb2dyYW0oY29uc3QgU291cmNlQ29kZSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRoaXNPYmopOwotICAgICAgICBKU1ZhbHVlIGV4
ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU01vZHVsZUVudmlyb25tZW50Kik7CisgICAgICAgIEpTVmFsdWUgZXhlY3V0ZU1vZHVs
ZVByb2dyYW0oSlNNb2R1bGVSZWNvcmQqLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xv
YmFsT2JqZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCosIEpTVmFsdWUgc2VudFZhbHVlLCBKU1Zh
bHVlIHJlc3VtZU1vZGUpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVDYWxsKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBDYWxsRGF0YSYsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBjb25zdCBBcmdMaXN0Jik7CiAgICAgICAgIEpTT2JqZWN0KiBleGVjdXRlQ29uc3RydWN0
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIGZ1bmN0aW9uLCBjb25zdCBDYWxsRGF0YSYsIGNv
bnN0IEFyZ0xpc3QmLCBKU1ZhbHVlIG5ld1RhcmdldCk7CiAgICAgICAgIEpTVmFsdWUgZXhlY3V0
ZShFdmFsRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpT
U2NvcGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXgg
NDkxMGZjN2NkYWZjNWJhODdjZjI4OTM0Y2EyMzNhNGY4YmM2ZDcyMy4uNTdkODdiZmFhMWZlMmNh
ZWZhODc3ODYzM2UxYzMyOWE3YWVlODIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKQEAgLTQwMCw2ICs0MDAsNyBAQCBwdWJsaWM6CiAgICAgQXdhaXRFeHBy
Tm9kZSogY3JlYXRlQXdhaXQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGFyZ3VtZW50LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChhcmd1bWVudCk7CisgICAgICAgIHVzZXNBd2FpdCgpOwogICAgICAgICBB
d2FpdEV4cHJOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBd2FpdEV4cHJOb2RlKGxv
Y2F0aW9uLCBhcmd1bWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0
YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CkBAIC0xMDk5LDYgKzExMDAs
NyBAQCBwcml2YXRlOgogICAgICAgICBtX3Njb3BlLm1fZmVhdHVyZXMgfD0gRXZhbEZlYXR1cmU7
CiAgICAgfQogICAgIHZvaWQgdXNlc05ld1RhcmdldCgpIHsgbV9zY29wZS5tX2ZlYXR1cmVzIHw9
IE5ld1RhcmdldEZlYXR1cmU7IH0KKyAgICB2b2lkIHVzZXNBd2FpdCgpIHsgbV9zY29wZS5tX2Zl
YXR1cmVzIHw9IEF3YWl0RmVhdHVyZTsgfQogICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVJbnRl
Z2VyTGlrZU51bWJlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBkb3VibGUgZCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEludGVnZXJOb2RlKGxv
Y2F0aW9uLCBkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggMDJi
Nzg3NWNjYWY2YWZmNjYzYWMxZWVmNWFkZGI4ZGJkMzQwOTM3Ny4uYTg0OTVkMTE1MGM4OGE5ZWFm
OWQ3NGEzMWFhZWJlZWEyNzFlOTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKQEAgLTE3Nyw2ICsxNzcsNyBAQCBNb2R1bGVQcm9ncmFtTm9kZTo6TW9kdWxlUHJvZ3Jh
bU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYQogICAgIDog
U2NvcGVOb2RlKHBhcnNlckFyZW5hLCBzdGFydExvY2F0aW9uLCBlbmRMb2NhdGlvbiwgc291cmNl
LCBjaGlsZHJlbiwgdmFyRW52aXJvbm1lbnQsIFdURk1vdmUoZnVuY1N0YWNrKSwgbGV4aWNhbFZh
cmlhYmxlcywgV1RGTW92ZShzbG9wcHlNb2RlSG9pc3RlZEZ1bmN0aW9ucyksIGZlYXR1cmVzLCBp
bm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMsIG51bUNvbnN0YW50cykKICAgICAsIG1fc3Rh
cnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgLCBtX2VuZENvbHVtbihlbmRDb2x1bW4pCisgICAg
LCBtX3VzZXNBd2FpdChmZWF0dXJlcyAmIEF3YWl0RmVhdHVyZSkKICAgICAsIG1fbW9kdWxlU2Nv
cGVEYXRhKCpXVEZNb3ZlKG1vZHVsZVNjb3BlRGF0YSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKaW5kZXggMDVjMThlYWRmMjQ5MDA1NjA1OWE0YmNjY2UxNWFiZTVhZmQ0
OTE2Yi4uYjhhNzE2ZTAwNDA5Y2ViOTBhMWM4YWY4N2Y5YzYxYjYzMTYzZmVlYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTk5MCw2ICsxOTkwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0Q29sdW1uOyB9CiAgICAgICAgIHVuc2lnbmVkIGVuZENvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIG1fZW5kQ29sdW1uOyB9CisgICAgICAgIGJvb2wgdXNlc0F3YWl0KCkgY29uc3QgeyByZXR1
cm4gbV91c2VzQXdhaXQ7IH0KIAogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2NvcGVJ
c0Z1bmN0aW9uID0gZmFsc2U7CiAKQEAgLTIwMDIsNiArMjAwMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gbnVsbHB0cikgZmluYWw7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAg
ICAgICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOworICAgICAgICBib29sIG1fdXNlc0F3YWl0Owog
ICAgICAgICBSZWY8TW9kdWxlU2NvcGVEYXRhPiBtX21vZHVsZVNjb3BlRGF0YTsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZTk1YWMwMWVjM2Uy
YzlhYzUwMmQ4NGZjOTBjMTIyNTcwNTIwZjFmNS4uMjkwNzVmMjExYzBkZTg3ZGQ2NDRkMGNkNGU5
MzE3NzZjM2ZmMzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtMjA5LDYgKzIwOSwxMSBAQCBQYXJzZXI8TGV4ZXJUeXBlPjo6flBhcnNlcigpCiB7CiB9CiAK
K3ZvaWQgSlNUb2tlbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5w
cmludCgqbV9kYXRhLmNvb2tlZCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CiBFeHBlY3RlZDx0eXBlbmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3VsdCwg
U3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBj
YWxsZWVOYW1lLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBm
dW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+KiBjbGFzc0ZpZWxkTG9jYXRpb25zKQogewpAQCAtMTM1Miw3ICsxMzU3LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICBtX3N0YXRlbWVudERlcHRoKys7CiAKICAg
ICBpZiAobWF0Y2goQVdBSVQpKSB7Ci0gICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY3VycmVu
dFNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbigpLCAiZm9yLWF3YWl0LW9mIGNhbiBvbmx5IGJlIHVz
ZWQgaW4gYW4gYXN5bmMgZnVuY3Rpb24gb3IgYXN5bmMgZ2VuZXJhdG9yIik7CisgICAgICAgIHNl
bWFudGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbigpIHx8IChp
c01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkgJiYgT3B0aW9uczo6dXNlVG9wTGV2
ZWxBd2FpdCgpKSwgImZvci1hd2FpdC1vZiBjYW4gb25seSBiZSB1c2VkIGluIGFuIGFzeW5jIGZ1
bmN0aW9uIG9yIGFzeW5jIGdlbmVyYXRvciIpOwogICAgICAgICBpc0F3YWl0Rm9yID0gdHJ1ZTsK
ICAgICAgICAgbmV4dCgpOwogICAgIH0KQEAgLTQxNDQsNyArNDE0OSw4IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUF3YWl0RXhwcmVzc2lvbihUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQVdBSVQpKTsKLSAgICBBU1NFUlQoY3Vy
cmVudFNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbigpKTsKKyAgICBBU1NFUlQoY3VycmVudFNjb3Bl
KCktPmlzQXN5bmNGdW5jdGlvbigpIHx8IGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9k
ZSgpKSk7CisgICAgQVNTRVJUKGlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShzb3VyY2VQYXJzZU1v
ZGUoKSkgfHwgaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKTsKICAgICBBU1NF
UlQobV9wYXJzZXJTdGF0ZS5mdW5jdGlvblBhcnNlUGhhc2UgIT0gRnVuY3Rpb25QYXJzZVBoYXNl
OjpQYXJhbWV0ZXJzKTsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9u
KCk7CkBAIC00ODE0LDcgKzQ4MjAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIGNh
c2UgQVdBSVQ6CiAgICAgICAgIGlmIChtX3BhcnNlclN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSA9
PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMpCiAgICAgICAgICAgICBzZW1hbnRpY0Zh
aWxJZkZhbHNlKG1fcGFyc2VyU3RhdGUuYWxsb3dBd2FpdCwgIkNhbm5vdCB1c2UgJ2F3YWl0JyB3
aXRoaW4gYSBwYXJhbWV0ZXIgZGVmYXVsdCBleHByZXNzaW9uIik7Ci0gICAgICAgIGVsc2UgaWYg
KGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkpCisgICAg
ICAgIGVsc2UgaWYgKGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJvdW5k
YXJ5KCkgfHwgKGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSAmJiBPcHRpb25z
Ojp1c2VUb3BMZXZlbEF3YWl0KCkpKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlQXdhaXRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogCiAgICAgICAgIGdvdG8gaWRlbnRpZmllckV4cHJlc3Npb247CkBA
IC01MzM4LDcgKzUzNDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIGJvb2wgaGFz
UHJlZml4VXBkYXRlT3AgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBsYXN0T3BlcmF0b3IgPSAwOwog
Ci0gICAgaWYgKFVOTElLRUxZKG1hdGNoKEFXQUlUKSAmJiBjdXJyZW50RnVuY3Rpb25TY29wZSgp
LT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpKSkKKyAgICBpZiAoVU5MSUtFTFkobWF0Y2goQVdB
SVQpICYmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgp
IHx8IChpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkpICYmIE9wdGlvbnM6OnVz
ZVRvcExldmVsQXdhaXQoKSkpKQogICAgICAgICByZXR1cm4gcGFyc2VBd2FpdEV4cHJlc3Npb24o
Y29udGV4dCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCAxY2Rh
ZmM1ODU5MjYwNzZjZjEzYjYzOGZhMjE2MjdkMmY3NTVkYjY0Li45NjMzNGJiZWE1OGEwMTZmYWZh
ZDNmMjk2ZWMwODY5NGUyMDBhNDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCkBAIC0zMjIsOCArMzIyLDkgQEAgY29uc3QgQ29kZUZlYXR1cmVzIFN1cGVy
UHJvcGVydHlGZWF0dXJlID0gICAgICAgICAgMSA8PCA5OwogY29uc3QgQ29kZUZlYXR1cmVzIE5l
d1RhcmdldEZlYXR1cmUgPSAgICAgICAgICAgICAgMSA8PCAxMDsKIGNvbnN0IENvZGVGZWF0dXJl
cyBOb0V2YWxDYWNoZUZlYXR1cmUgPSAgICAgICAgICAgIDEgPDwgMTE7CiBjb25zdCBDb2RlRmVh
dHVyZXMgTm9uU2ltcGxlUGFyYW1ldGVyTGlzdEZlYXR1cmUgPSAxIDw8IDEyOworY29uc3QgQ29k
ZUZlYXR1cmVzIEF3YWl0RmVhdHVyZSA9ICAgICAgICAgICAgICAgICAgMSA8PCAxMzsKIAotY29u
c3QgQ29kZUZlYXR1cmVzIEFsbEZlYXR1cmVzID0gRXZhbEZlYXR1cmUgfCBBcmd1bWVudHNGZWF0
dXJlIHwgV2l0aEZlYXR1cmUgfCBUaGlzRmVhdHVyZSB8IFN0cmljdE1vZGVGZWF0dXJlIHwgU2hh
ZG93c0FyZ3VtZW50c0ZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IEFycm93RnVuY3Rp
b25Db250ZXh0RmVhdHVyZSB8IFN1cGVyQ2FsbEZlYXR1cmUgfCBTdXBlclByb3BlcnR5RmVhdHVy
ZSB8IE5ld1RhcmdldEZlYXR1cmUgfCBOb0V2YWxDYWNoZUZlYXR1cmUgfCBOb25TaW1wbGVQYXJh
bWV0ZXJMaXN0RmVhdHVyZTsKK2NvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxG
ZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBT
dHJpY3RNb2RlRmVhdHVyZSB8IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgQXJyb3dGdW5jdGlv
bkZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uQ29udGV4dEZlYXR1cmUgfCBTdXBlckNhbGxGZWF0dXJl
IHwgU3VwZXJQcm9wZXJ0eUZlYXR1cmUgfCBOZXdUYXJnZXRGZWF0dXJlIHwgTm9FdmFsQ2FjaGVG
ZWF0dXJlIHwgTm9uU2ltcGxlUGFyYW1ldGVyTGlzdEZlYXR1cmUgfCBBd2FpdEZlYXR1cmU7CiAK
IHR5cGVkZWYgdWludDhfdCBJbm5lckFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXM7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBhMjE5MTcy
NGUwNDUxZTQ2ZTRmODI4ODEwYzdkYmUzZmE5YjdlYjY1Li5kZTY3YTQwYmM1NTBiZTc3Njc5ODQy
YThmM2Y2OWRkYTk3OWFiN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKQEAgLTI4Myw2ICsyODMsOCBAQCBzdHJ1Y3QgSlNUb2tlbiB7CiAgICAgSlNU
b2tlbkxvY2F0aW9uIG1fbG9jYXRpb247CiAgICAgSlNUZXh0UG9zaXRpb24gbV9zdGFydFBvc2l0
aW9uOwogICAgIEpTVGV4dFBvc2l0aW9uIG1fZW5kUG9zaXRpb247CisKKyAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mKSBjb25zdDsKIH07CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VwZGF0ZU9w
KEpTVG9rZW5UeXBlIHRva2VuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGM3M2RhNTE0MmEzN2NkM2ViNDU2
NDVkZGViNWZjM2M4Nzc2MGY1NDYuLjQ1ZjJiNDE5NjZkZGNjNGVkNzE2MGZiOGIxZTkwYzE2MGRk
N2YwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0
TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0
cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGxJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNNYXAuaCIKICNpbmNsdWRlICJKU01vZHVs
ZUVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCIKQEAg
LTUzLDYgKzU0LDExIEBAIHZvaWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSkKICAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAorICAgIGF1
dG8gdmFsdWVzID0gaW5pdGlhbFZhbHVlcygpOworICAgIEFTU0VSVCh2YWx1ZXMuc2l6ZSgpID09
IG51bWJlck9mSW50ZXJuYWxGaWVsZHMpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IHZhbHVlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEJhc2U6OmludGVybmFsRmll
bGQoaW5kZXgpLnNldCh2bSwgdGhpcywgdmFsdWVzW2luZGV4XSk7CisKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNNYXAqIG1hcCA9IEpTTWFwOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT5tYXBTdHJ1Y3R1cmUoKSk7CiAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CkBAIC04MDgsNyArODE0LDcgQEAgdm9p
ZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6c2V0TW9kdWxlRW52aXJvbm1lbnQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgdGhp
cywgbW9kdWxlRW52aXJvbm1lbnQpOwogfQogCi12b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjps
aW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikK
K1N5bmNocm9ub3VzbmVzcyBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGlmIChhdXRvKiBqc01vZHVsZVJlY29yZCA9IGpzRHlu
YW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPih2bSwgdGhpcykpCkBAIC04MTgsMTMgKzgyNCwxNCBA
QCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0YwogICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29y
ZC0+bGluayhnbG9iYWxPYmplY3QsIHNjcmlwdEZldGNoZXIsIG51bGxwdHIsIFdhc206OkNyZWF0
aW9uTW9kZTo6RnJvbU1vZHVsZUxvYWRlcik7CiAjZW5kaWYKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiB9CiAKLUpT
X0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5
bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQotICAgICAgICByZXR1cm4ganNN
b2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBqc01v
ZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUp
OwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBpZiAoYXV0byogd2FzbU1vZHVsZVJlY29y
ZCA9IGpzRHluYW1pY0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPih2bSwgdGhpcykpCiAg
ICAgICAgIHJldHVybiB3YXNtTW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVS
ZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVj
b3JkLmgKaW5kZXggNDMxYjkzY2RlMWUwNDI4YmYxNTIwZjc0ZTE4ZDQ1NTBiNGRlMWI0Ni4uZjQx
MDJlY2E2YmJlODU0NDZkYjgxZjYzNGYwYWRiMjk4MzU2NWI5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5oCkBAIC0yNiw3
ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKLSNpbmNs
dWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM3LDEwICszOCwxMCBAQCBjbGFzcyBK
U01hcDsKIAogLy8gQmFzZWQgb24gdGhlIFNvdXJjZSBUZXh0IE1vZHVsZSBSZWNvcmQKIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zb3VyY2Ut
dGV4dC1tb2R1bGUtcmVjb3JkcwotY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitjbGFzcyBBYnN0cmFjdE1vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsPDQ+IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0
OworICAgIHVzaW5nIEJhc2UgPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPDQ+OwogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCkBAIC01MCw2
ICs1MSwyOCBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCisgICAgdXNpbmcgQXJndW1lbnQgPSBKU0dlbmVyYXRvcjo6QXJndW1lbnQ7Cisg
ICAgdXNpbmcgU3RhdGUgPSBKU0dlbmVyYXRvcjo6U3RhdGU7CisgICAgdXNpbmcgUmVzdW1lTW9k
ZSA9IEpTR2VuZXJhdG9yOjpSZXN1bWVNb2RlOworCisgICAgZW51bSBjbGFzcyBGaWVsZCA6IHVp
bnQzMl90IHsKKyAgICAgICAgU3RhdGUsCisgICAgICAgIE5leHQsCisgICAgICAgIFRoaXMsCisg
ICAgICAgIEZyYW1lLAorICAgIH07CisKKyAgICBzdGF0aWNfYXNzZXJ0KG51bWJlck9mSW50ZXJu
YWxGaWVsZHMgPT0gNCk7CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNWYWx1ZSwgbnVtYmVyT2ZJ
bnRlcm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAgICAgICByZXR1cm4geyB7
CisgICAgICAgICAgICBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihTdGF0ZTo6SW5pdCkp
LAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCks
CisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICB9IH07CisgICAgfQorCiAgICAg
Ly8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc291cmNlLXRleHQtbW9kdWxl
LXJlY29yZHMKICAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgewogICAgICAgICBlbnVtIGNsYXNzIFR5
cGUgewpAQCAtMTI5LDggKzE1MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21vZHVs
ZUVudmlyb25tZW50LmdldCgpOwogICAgIH0KIAotICAgIHZvaWQgbGluayhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1
ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCopOworICAgIFN5bmNocm9ub3VzbmVzcyBsaW5rKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzZW50VmFsdWUs
IEpTVmFsdWUgcmVzdW1lTW9kZSk7CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBpbnRlcm5h
bEZpZWxkKEZpZWxkIGZpZWxkKSB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxkKHN0YXRpY19j
YXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CisgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IGludGVy
bmFsRmllbGQoRmllbGQgZmllbGQpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmludGVybmFsRmllbGQo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGZpZWxkKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIEFic3Ry
YWN0TW9kdWxlUmVjb3JkKFZNJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCmluZGV4
IDNmM2IwNGU1YzI3NTZmNTJjZWM4N2YyYjVjNTkxZjg0YzQwZTVkYWQuLmRkNDE1NjU4NTdhZTI4
ZjMwY2EwYjdjZTg0Nzg4OWMzMjE4ZDE1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgog
ICAgICAgICBTdXNwZW5kZWRZaWVsZCA9IC00LAogICAgICAgICBBd2FpdGluZ1JldHVybiA9IC01
LAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dl
bmVyYXRvclN0YXRlOjpDb21wbGV0ZWQpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpHZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSk7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpID09IHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSk7
CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQzMl90PihBc3luY0dlbmVyYXRvclN0
YXRlOjpDb21wbGV0ZWQpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpTdGF0
ZTo6Q29tcGxldGVkKSk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxpbnQzMl90PihB
c3luY0dlbmVyYXRvclN0YXRlOjpFeGVjdXRpbmcpID09IHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpTdGF0ZTo6RXhlY3V0aW5nKSk7CiAKICAgICBlbnVtIGNsYXNzIEFzeW5jR2Vu
ZXJhdG9yU3VzcGVuZFJlYXNvbiA6IGludDMyX3QgewogICAgICAgICBOb25lID0gMCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oCmluZGV4IDc4MTY2NjkyNGNh
NDIzZDdjZGE1ZmRmNmEwMzQwYTA0Mjc1N2YxMGQuLjI1NzYxMDJmNTRjOWIxNzVjNDc2YmE3MTcx
NTVjZmUzZWQwMTAxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmF0b3IuaApAQCAtNDYsMjYgKzQ2LDI3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHZtLmdl
bmVyYXRvclNwYWNlPG1vZGU+KCk7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JS
ZXN1bWVNb2RlIDogaW50MzJfdCB7CisgICAgZW51bSBjbGFzcyBSZXN1bWVNb2RlIDogaW50MzJf
dCB7CiAgICAgICAgIE5vcm1hbE1vZGUgPSAwLAogICAgICAgICBSZXR1cm5Nb2RlID0gMSwKICAg
ICAgICAgVGhyb3dNb2RlID0gMgogICAgIH07CiAKLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvclN0
YXRlIDogaW50MzJfdCB7CisgICAgZW51bSBjbGFzcyBTdGF0ZSA6IGludDMyX3QgewogICAgICAg
ICBDb21wbGV0ZWQgPSAtMSwKICAgICAgICAgRXhlY3V0aW5nID0gLTIsCiAgICAgICAgIEluaXQg
PSAwLAogICAgIH07CiAKICAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0
ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1l
LgotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICBlbnVt
IGNsYXNzIEFyZ3VtZW50IDogaW50MzJfdCB7CiAgICAgICAgIFRoaXNWYWx1ZSA9IDAsCiAgICAg
ICAgIEdlbmVyYXRvciA9IDEsCiAgICAgICAgIFN0YXRlID0gMiwKICAgICAgICAgVmFsdWUgPSAz
LAogICAgICAgICBSZXN1bWVNb2RlID0gNCwKICAgICAgICAgRnJhbWUgPSA1LAorICAgICAgICBO
dW1iZXJPZkFyZ3VtZW50cyA9IEZyYW1lLAogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIEZpZWxk
IDogdWludDMyX3QgewpAQCAtODIsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBy
ZXR1cm4geyB7CiAgICAgICAgICAgICBqc051bGwoKSwKLSAgICAgICAgICAgIGpzTnVtYmVyKHN0
YXRpY19jYXN0PGludDMyX3Q+KEdlbmVyYXRvclN0YXRlOjpJbml0KSksCisgICAgICAgICAgICBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihTdGF0ZTo6SW5pdCkpLAogICAgICAgICAgICAg
anNVbmRlZmluZWQoKSwKICAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCiAgICAgICAgICAgICBq
c1VuZGVmaW5lZCgpLApAQCAtMTAxLDQgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOwogfTsKIAorT1ZFUkxPQURfUkVMQVRJT05BTF9PUEVSQVRPUlNfRk9S
X0VOVU1fQ0xBU1NfV0lUSF9JTlRFR1JBTFMoSlNHZW5lcmF0b3I6OkFyZ3VtZW50KTsKKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCBkNWQ0MzZjMjYxZWU4M2UxODAwNmRjOWIzYjM1MjgzYzdjZWFiZjEz
Li4zZTliZDYyNDU5MzMxYjhhNTE2MjYyMjMxNDk4YWRmMmUxMTM3MjU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzMCw3ICsyMzAs
NyBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgSlNPYmpl
Y3QqICgqTW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXNQdHIpKEpTR2xvYmFs
T2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU01vZHVsZVJlY29yZCosIEpTVmFs
dWUpOwogICAgIE1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzUHRyIG1vZHVs
ZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzOwogCi0gICAgdHlwZWRlZiBKU1ZhbHVl
ICgqTW9kdWxlTG9hZGVyRXZhbHVhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2Fk
ZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKKyAgICB0eXBlZGVmIEpTVmFsdWUgKCpN
b2R1bGVMb2FkZXJFdmFsdWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZUxvYWRlcios
IEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIsIEpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOwogICAgIE1v
ZHVsZUxvYWRlckV2YWx1YXRlUHRyIG1vZHVsZUxvYWRlckV2YWx1YXRlOwogCiAgICAgdHlwZWRl
ZiB2b2lkICgqUHJvbWlzZVJlamVjdGlvblRyYWNrZXJQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNQ
cm9taXNlKiwgSlNQcm9taXNlUmVqZWN0aW9uT3BlcmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCA3N2JiMmIwYjU5ZDdk
NmZiZjYwNTY5NzcwYzVjNmMyOTI4NGI0MmM5Li43NzEwZmQzMDcyMzI0NzgxNTJjNTVhNDA0MTcw
MTM2MmFjZDdkMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVMb2FkZXIuY3BwCkBAIC0zMDcsMjAgKzMwNywyMCBAQCBKU09iamVjdCogSlNNb2R1bGVM
b2FkZXI6OmNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCks
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKIH0KIAotSlNW
YWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFsdWUgc2NyaXB0
RmV0Y2hlcikKK0pTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1v
ZGUpCiB7CiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgp
LCAiTG9hZGVyIFtldmFsdWF0ZV0gIiwgcHJpbnRhYmxlTW9kdWxlS2V5KGdsb2JhbE9iamVjdCwg
a2V5KSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5tb2R1bGVMb2FkZXJFdmFsdWF0ZSkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUoZ2xvYmFsT2JqZWN0
LCB0aGlzLCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyKTsKKyAgICAgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9h
ZGVyRXZhbHVhdGUoZ2xvYmFsT2JqZWN0LCB0aGlzLCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBz
Y3JpcHRGZXRjaGVyLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwogCi0gICAgcmV0dXJuIGV2YWx1
YXRlTm9uVmlydHVhbChnbG9iYWxPYmplY3QsIGtleSwgbW9kdWxlUmVjb3JkVmFsdWUsIHNjcmlw
dEZldGNoZXIpOworICAgIHJldHVybiBldmFsdWF0ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBr
ZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1YWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRW
YWx1ZSwgSlNWYWx1ZSkKK0pTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlTm9uVmlydHVh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlLCBKU1ZhbHVlIG1vZHVsZVJl
Y29yZFZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2Rl
KQogewogICAgIGlmIChhdXRvKiBtb2R1bGVSZWNvcmQgPSBqc0R5bmFtaWNDYXN0PEFic3RyYWN0
TW9kdWxlUmVjb3JkKj4oZ2xvYmFsT2JqZWN0LT52bSgpLCBtb2R1bGVSZWNvcmRWYWx1ZSkpCi0g
ICAgICAgIHJldHVybiBtb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBtb2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc2VudFZhbHVl
LCByZXN1bWVNb2RlKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtMzY1LDYg
KzM2NSw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtb2R1bGVMb2FkZXJQYXJzZU1vZHVs
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKGds
b2JhbE9iamVjdCwgcHJvbWlzZSwgbW9kdWxlS2V5LCBqc1NvdXJjZUNvZGUpKSk7CiAjZW5kaWYK
IAorICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwgImxv
YWRlciBbcGFyc2luZ10gIiwgbW9kdWxlS2V5KTsKKwogICAgIFBhcnNlckVycm9yIGVycm9yOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGVQcm9ncmFtTm9kZT4gbW9kdWxlUHJvZ3JhbU5vZGUg
PSBwYXJzZTxNb2R1bGVQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBzb3VyY2VDb2RlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCkBAIC00MDksMTAgKzQx
MSwxMCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obW9kdWxlTG9hZGVyTW9kdWxlRGVjbGFy
YXRpb25JbnN0YW50aWF0aW9uLCAoSlNHbG9iYWxPYgogCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpLCAiTG9hZGVyIFtsaW5rXSAiLCBtb2R1bGVSZWNv
cmQtPm1vZHVsZUtleSgpKTsKIAotICAgIG1vZHVsZVJlY29yZC0+bGluayhnbG9iYWxPYmplY3Qs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIGF1dG8gc3luYyA9IG1vZHVsZVJlY29yZC0+
bGluayhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogCi0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihzeW5jID09IFN5bmNocm9ub3VzbmVzczo6QXN5bmMpKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtNDgxLDcgKzQ4Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTiht
b2R1bGVMb2FkZXJFdmFsdWF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhCiAg
ICAgSlNNb2R1bGVMb2FkZXIqIGxvYWRlciA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVMb2FkZXIq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2FkZXIpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgyKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxG
cmFtZS0+YXJndW1lbnQoMiksIGNhbGxGcmFtZS0+YXJndW1lbnQoMyksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoNCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaAppbmRleCAxZTA2Yjc3MGExZjhhY2JhMzQx
MGRjMjFhZWUwZmZlMDFhZWU5YzIwLi5iM2Q4NWE5NWNmZmZjNjkxMDk0ZWQ5NjIzYWRkMWViOGVi
OGVmYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9h
ZGVyLmgKQEAgLTg0LDggKzg0LDggQEAgcHVibGljOgogICAgIEpTT2JqZWN0KiBjcmVhdGVJbXBv
cnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUga2V5LCBKU01vZHVsZVJl
Y29yZCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAKICAgICAvLyBBZGRpdGlvbmFsIHBsYXRm
b3JtIGRlcGVuZGVudCBob29rZWQgQVBJcy4KLSAgICBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpOwotICAgIEpTVmFsdWUgZXZhbHVhdGVOb25WaXJ0dWFsKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNo
ZXIpOworICAgIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwg
SlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50
VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSk7CisgICAgSlNWYWx1ZSBldmFsdWF0ZU5vblZpcnR1
YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpT
VmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9k
ZSk7CiAKICAgICAvLyBVdGlsaXR5IGZ1bmN0aW9ucy4KICAgICBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdCogZ2V0TW9kdWxlTmFtZXNwYWNlT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBt
b2R1bGVSZWNvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVSZWNvcmQuY3BwCmluZGV4IDFkNTA3NTg3MzZiYjg0OGVmZDAyNTFkMTgyNDk5MjlhY2FmMmE3
ZjAuLjdiNmIwNjk4ODA0YzI0ODY2ZjExMDAxNzdlODJmYTNhNGE1YWZjODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKQEAgLTgxLDcg
KzgxLDcgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBj
ZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiBERUZJTkVfVklTSVRfQ0hJTERSRU4oSlNNb2R1bGVS
ZWNvcmQpOwogCi12b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKK1N5bmNocm9ub3VzbmVzcyBKU01vZHVs
ZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTkwLDExICs5MCwxMyBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIWV4ZWN1dGFibGUpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICB0aHJv
d1N5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiAgICAgfQogICAgIGluc3RhbnRpYXRl
RGVjbGFyYXRpb25zKGdsb2JhbE9iamVjdCwgZXhlY3V0YWJsZSwgc2NyaXB0RmV0Y2hlcik7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBTeW5jaHJvbm91c25lc3M6OlN5bmMpOwogICAgIG1fbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUuc2V0KHZtLCB0aGlzLCBleGVjdXRhYmxlKTsKKworICAgIHJldHVybiBleGVj
dXRhYmxlLT51bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKS0+aXNBc3luYygpID8gU3lu
Y2hyb25vdXNuZXNzOjpBc3luYyA6IFN5bmNocm9ub3VzbmVzczo6U3luYzsKIH0KIAogdm9pZCBK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIG1vZHVsZVByb2dyYW1FeGVjdXRh
YmxlLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCkBAIC0yMzgsMTQgKzI0MCwxNiBAQCB2b2lkIEpT
TW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBNb2R1bAogICAgIHNldE1vZHVsZUVudmlyb25tZW50KGdsb2JhbE9iamVjdCwg
bW9kdWxlRW52aXJvbm1lbnQpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpldmFsdWF0
ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6
ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzZW50VmFsdWUs
IEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBpZiAoIW1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuZ2V0KCk7Ci0gICAgbV9tb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZS5jbGVhcigpOwotICAgIHJldHVybiB2bS5pbnRlcnByZXRlci0+ZXhlY3V0ZU1vZHVsZVBy
b2dyYW0oZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVFbnZpcm9ubWVudCgpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdE9yQXdhaXRlZFZhbHVlID0gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVN
b2R1bGVQcm9ncmFtKHRoaXMsIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgbW9kdWxlRW52aXJv
bm1lbnQoKSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICBpZiAoSlNWYWx1ZSBzdGF0ZSA9
IGludGVybmFsRmllbGQoRmllbGQ6OlN0YXRlKS5nZXQoKTsgIXN0YXRlLmlzTnVtYmVyKCkgfHwg
c3RhdGUuYXNOdW1iZXIoKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU3RhdGU6OkV4ZWN1dGlu
ZykpCisgICAgICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuY2xlYXIoKTsKKyAgICByZXR1
cm4gcmVzdWx0T3JBd2FpdGVkVmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggOGE1NTA3
YWY0YWM2YjQxNjg1MDk4Nzg4NjExYjExNmU4ZWM2YWVmMy4uMDFhZTAwYzA5M2QxYjI3YWE3Yjc2
OWJkYWRiYTk1ODE0Mzk2NjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZVJlY29yZC5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogICAgIHN0YXRpYyBKU01vZHVsZVJlY29yZCogY3JlYXRlKEpTR2xvYmFsT2JqZWN0KiwgVk0m
LCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgU291cmNlQ29kZSYsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAKLSAg
ICB2b2lkIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBTeW5jaHJvbm91c25lc3MgbGluayhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0
Y2hlcik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOwogCiAgICAgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZTsg
fQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRlY2xhcmVkVmFyaWFibGVzKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxlczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKaW5kZXggNzg1
MTE1Yzk0YjVjMGU2OTEzZWM0MzZiNzE3MWI5NTVmNzk5NjkzNy4uNTk1NDM3MzVhZDE1MzU1OGQ2
NjY2MmJkMjliYzI1YTNmMjk4MzhmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCkBAIC02Niw2ICs2Niw3IEBA
IHB1YmxpYzoKICAgICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0
dXJuIEV4ZWN1dGFibGVJbmZvKHVzZXNFdmFsKCksIGZhbHNlLCBQcml2YXRlQnJhbmRSZXF1aXJl
bWVudDo6Tm9uZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgSlNQYXJzZXJTY3JpcHRN
b2RlOjpNb2R1bGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6Ok1v
ZHVsZUV2YWx1YXRlTW9kZSwgZGVyaXZlZENvbnRleHRUeXBlKCksIE5lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyOjpObywgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpLCBmYWxzZSwgRXZhbENvbnRl
eHRUeXBlOjpOb25lKTsgfQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiB1
bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2VkTW9kdWxl
UHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQorICAgIGJvb2wgaXNBc3luYygpIGNvbnN0IHsgcmV0
dXJuIGZlYXR1cmVzKCkgJiBBd2FpdEZlYXR1cmU7IH0KIAogICAgIFN5bWJvbFRhYmxlKiBtb2R1
bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKCkgeyByZXR1cm4gbV9tb2R1bGVFbnZpcm9ubWVudFN5
bWJvbFRhYmxlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oCmluZGV4IGFmN2M3MjQ5NzE3MzVmMDc3MDRhNWQwNmFmYmEyZDc2ZWJiNmE1MDMu
LmE4MDY3OGJkNTg3MDM1OTAwNGYwMzdjYmUwODZkZDE0NGNiMWM1NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDgzLDE2ICs0ODMsNyBAQCBK
U19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KE9wdGlvblJhbmdl
LCB3YXNtRnVuY3Rpb25JbmRleFJhbmdlVG9Db21waWxlLCAwLCBOb3JtYWwsICJ3YXNtIGZ1bmN0
aW9uIGluZGV4IHJhbmdlIHRvIGFsbG93IGNvbXBpbGF0aW9uIG9uLCBlLmcuIDE6MTAwIikgXAog
ICAgIHYoQm9vbCwgd2FzbUxMSW50VGllcnNVcFRvQkJRLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KFNpemUsIHdlYkFzc2VtYmx5QkJRQWlyTW9kZVRocmVzaG9sZCwgaXNJT1MoKSA/
ICgxMCAqIE1CKSA6IDAsIE5vcm1hbCwgIklmIDAsIHdlIGFsd2F5cyB1c2UgQkJRIEFpci4gSWYg
V2FzbSBtb2R1bGUgY29kZSBzaXplIGhpdHMgdGhpcyB0aHJlc2hvbGQsIHdlIGNvbXBpbGUgV2Fz
bSBtb2R1bGUgd2l0aCBCMyBCQlEgbW9kZS4iKSBcCi0gICAgdihCb29sLCB1c2VXZWJBc3NlbWJs
eVN0cmVhbWluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdG8gcnVuIFdlYkFzc2VtYmx5J3MgU3Ry
ZWFtaW5nIEFQSSIpIFwKICAgICB2KEJvb2wsIHVzZUVhZ2VyV2ViQXNzZW1ibHlNb2R1bGVIYXNo
aW5nLCBmYWxzZSwgTm9ybWFsLCAiVW5uYW1lZCBXZWJBc3NlbWJseSBtb2R1bGVzIGFyZSBpZGVu
dGlmaWVkIGluIGJhY2t0cmFjZXMgdGhyb3VnaCB0aGVpciBoYXNoLCBpZiBhdmFpbGFibGUuIikg
XAotICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzLCB0cnVlLCBOb3JtYWwsICJB
bGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNtIHJlZmVyZW5jZXMgc3BlYy4iKSBcCi0gICAgdihCb29s
LCB1c2VXZWJBc3NlbWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBm
cm9tIHRoZSB3YXNtIG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKLSAgICB2KEJvb2wsIHVzZVdlYkFz
c2VtYmx5VGhyZWFkaW5nLCB0cnVlLCBOb3JtYWwsICJBbGxvdyBpbnN0cnVjdGlvbnMgZnJvbSB0
aGUgd2FzbSB0aHJlYWRpbmcgc3BlYy4iKSBcCi0gICAgdihCb29sLCB1c2VXZWFrUmVmcywgdHJ1
ZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKLSAgICB2KEJv
b2wsIHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZCwgdHJ1ZSwgTm9ybWFsLCAiRXhwb3Nl
IHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0IGRheVBlcmlvZCBmZWF0dXJlLiIpIFwKLSAgICB2KEJv
b2wsIHVzZUludGxEYXRlVGltZUZvcm1hdFJhbmdlVG9QYXJ0cywgdHJ1ZSwgTm9ybWFsLCAiRXhw
b3NlIHRoZSBJbnRsLkRhdGVUaW1lRm9ybWF0I2Zvcm1hdFJhbmdlVG9QYXJ0cyBmZWF0dXJlLiIp
IFwKLSAgICB2KEJvb2wsIHVzZUF0TWV0aG9kLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBh
dCgpIG1ldGhvZCBvbiBBcnJheSwgJVR5cGVkQXJyYXklLCBhbmQgU3RyaW5nLiIpIFwKLSAgICB2
KEJvb2wsIHVzZVNoYXJlZEFycmF5QnVmZmVyLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklm
IHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcu
IElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJl
IHVuZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1h
bCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0
aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlTWluaVZNTW9k
ZSwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWluaSBWTSBtb2RlIG9u
LiIpIFwKQEAgLTUxMyw4ICs1MDQsNiBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJ
VENhZ2UoKTsKICAgICB2KEJvb2wsIHVzZVJhbmRvbWl6aW5nRXhlY3V0YWJsZUlzbGFuZEFsbG9j
YXRpb24sIGZhbHNlLCBOb3JtYWwsICJGb3IgdGhlIGFybTY0IEV4ZWN1dGFibGVBbGxvY2F0b3Is
IGlmIHRydWUsIHNlbGVjdCB3aGljaCByZWdpb24gdG8gdXNlIHJhbmRvbWx5LiBUaGlzIGlzIHVz
ZWZ1bCBmb3IgdGVzdGluZyB0aGF0IGp1bXAgaXNsYW5kcyB3b3JrLiIpIFwKICAgICB2KEJvb2ws
IGV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
d2Ugd2lsbCBleHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhlIHNhbXBs
aW5nIHByb2ZpbGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKICAgICB2KEJvb2wsIGFsbG93
VW5zdXBwb3J0ZWRUaWVycywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgbm90IGRp
c2FibGUgREZHIG9yIEZUTCB3aGVuIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGlzIGVuYWJsZWQu
IikgXAotICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGlu
c2lkZSBjbGFzc2VzLiIpIFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCB0cnVlLCBO
b3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1ldGhv
ZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgcmV0dXJuRWFybHlGcm9tSW5maW5p
dGVMb29wc0ZvckZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFNpemUs
IGVhcmx5UmV0dXJuRnJvbUluZmluaXRlTG9vcHNMaW1pdCwgMTMwMDAwMDAwMCwgTm9ybWFsLCAi
V2hlbiByZXR1cm5FYXJseUZyb21JbmZpbml0ZUxvb3BzRm9yRnV6emluZyBpcyB0cnVlLCB0aGlz
IGRldGVybWluZXMgdGhlIG51bWJlciBvZiBleGVjdXRpb25zIGEgbG9vcCBjYW4gcnVuIGZvciBi
ZWZvcmUganVzdCByZXR1cm5pbmcuIFRoaXMgaXMgaGVscGZ1bCBmb3IgdGhlIGZ1enplciBzbyBp
dCBkb2Vzbid0IGdldCBzdHVjayBpbiBpbmZpbml0ZSBsb29wcy4iKSBcCiAgICAgdihCb29sLCB1
c2VMSUNNRnV6emluZywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApAQCAtNTIyLDggKzUxMSwy
NCBAQCBKU19FWFBPUlRfUFJJVkFURSBib29sIGNhblVzZUpJVENhZ2UoKTsKICAgICB2KERvdWJs
ZSwgYWxsb3dIb2lzdGluZ0xJQ01Qcm9iYWJpbGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwK
ICAgICB2KEJvb2wsIGV4cG9zZUN1c3RvbVNldHRlcnNPbkdsb2JhbE9iamVjdEZvclRlc3Rpbmcs
IGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KEJvb2wsIHVzZUpJVENhZ2UsIGNhblVz
ZUpJVENhZ2UoKSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgXAorICAgIC8qIEZlYXR1cmUgRmxh
Z3MgKi9cCisgICAgXAogICAgIHYoQm9vbCwgdXNlUHVibGljU3RhdGljQ2xhc3NGaWVsZHMsIHRy
dWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHB1YmxpYyBz
dGF0aWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNlUHJp
dmF0ZVN0YXRpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2Vy
IHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIHN0YXRpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nl
cy4iKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwg
IklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMg
aW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZU1ldGhvZHMsIHRydWUs
IE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgbWV0
aG9kcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVN0cmVh
bWluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdG8gcnVuIFdlYkFzc2VtYmx5J3MgU3RyZWFtaW5n
IEFQSSIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1ZSwgTm9y
bWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAorICAg
IHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cg
dHlwZXMgZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCisgICAgdihCb29sLCB1
c2VXZWJBc3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25z
IGZyb20gdGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAorICAgIHYoQm9vbCwgdXNlV2Vha1Jl
ZnMsIHRydWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCisg
ICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QsIHRydWUsIE5vcm1hbCwg
IkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBkYXlQZXJpb2QgZmVhdHVyZS4iKSBcCisg
ICAgdihCb29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXRSYW5nZVRvUGFydHMsIHRydWUsIE5vcm1h
bCwgIkV4cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRSYW5nZVRvUGFydHMgZmVh
dHVyZS4iKSBcCisgICAgdihCb29sLCB1c2VBdE1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9z
ZSB0aGUgYXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmluZy4iKSBc
CisgICAgdihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYoQm9vbCwgdXNlVG9wTGV2ZWxBd2FpdCwgZmFsc2UsIE5vcm1hbCwgImFsbG93
IHRoZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAorCiAK
IGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzJlMzFiYjkwYzM2MjE2
NzhhZDg3OWQ5MzkxYjQ2YWQ3YjM4YzNmZS4uMWMyN2FkNDk2Y2NkNzM3NjEwZmFhMDJhMTkwMzA1
YjZkNTE0ZGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CisKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gU3ltYm9sVGFibGU6OnNf
aW5mbyA9IHsgIlN5bWJvbFRhYmxlIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShTeW1ib2xUYWJsZSkgfTsKQEAgLTI4Myw1ICsyODUsMTcgQEAgUmVmUHRy
PFR5cGVTZXQ+IFN5bWJvbFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJgogICAgIHJldHVybiBpdGVyLT52YWx1ZTsKIH0KIAordm9pZCBTeW1i
b2xUYWJsZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBCYXNlOjpkdW1wKG91dCk7CisKKyAgICBDb21t
YVByaW50ZXIgY29tbWE7CisgICAgb3V0LnByaW50KCIgPCIpOworICAgIGZvciAoYXV0byYgaXRl
ciA6IG1fbWFwKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICppdGVyLmtleSwgIjogIiwgaXRl
ci52YWx1ZS52YXJPZmZzZXQoKSk7CisgICAgb3V0LnByaW50bG4oIj4iKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCmluZGV4IDAxNzk2YzdkZWQ2MzQzN2M1ZjYzMzcyZGJiMTY0YjdjMjk5MjAxODcuLmU1YTIw
NjVjMmY1NGM2Y2Q3Mjc3OTYwNzlkYWYwNDk4NjNmYTBjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtNzM4LDYgKzczOCw3IEBAIHB1YmxpYzoK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseShWTSYpOworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbFRhYmxlKFZNJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKaW5kZXggYjU1Njg2ZWJlNjVjMWQ2YjkzYjY3Mjg1NzcyNzM5MWM4ZmVjZGQ0OC4uMjkxNzI0
OTdjYzExMzQ2ODZhYThiYmVhZGUwYTFlZTFhNGExNmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApA
QCAtOTcsNyArOTcsMTMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6cHJlcGFyZUxp
bmsoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmMKICAgICBtX2luc3RhbmNl
LnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZWN0
KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCitTeW5jaHJv
bm91c25lc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRp
b25Nb2RlIGNyZWF0aW9uTW9kZSkKK3sKKyAgICBsaW5rSW1wbChnbG9iYWxPYmplY3QsIGltcG9y
dE9iamVjdCwgY3JlYXRpb25Nb2RlKTsKKyAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5j
OworfQorCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlv
bk1vZGUgY3JlYXRpb25Nb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApp
bmRleCAzNzJiZjliMzc4N2Y4YzdjYWJiNzA5MGI2YmNhODAyYTZlNGE1OGUwLi42Yzk5OTIxMWJl
MDQwNjhlMWZmMjE0OGY3NjZhN2NhMWU4NWI0NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKQEAgLTU5LDEy
ICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiAgICAgdm9pZCBwcmVwYXJlTGlu
ayhWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwotICAgIHZvaWQgbGluayhKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2Fz
bTo6Q3JlYXRpb25Nb2RlKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGluayhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6
Q3JlYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICBKU09iamVjdCogZXhwb3J0c09iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwb3J0c09iamVjdC5nZXQoKTsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgbGlu
a0ltcGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVh
dGlvbk1vZGUpOwogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKFZNJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9i
amVjdCosIFZNJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCmluZGV4IGQ1NTA1YzYxN2M2
ZThhZjFhZWI5ZDMxYmIyZmMwZmQwYzMxZjI3ODAuLmQ0OTczZDA5MzViNzM4ZWVkNmViM2ExZmYy
NjA3MWZkNjBmNmViNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01H
bG9iYWxPYmplY3QuaApAQCAtMTA3LDcgKzEwNyw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRp
YyBKU0M6OklkZW50aWZpZXIgbW9kdWxlTG9hZGVyUmVzb2x2ZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6
OkpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2Fk
ZXJGZXRjaChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNN
b2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFs
dWUsIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRp
YyBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBtb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTU3RyaW5nKiwgSlND
OjpKU1ZhbHVlLCBjb25zdCBKU0M6OlNvdXJjZU9yaWdpbiYpOwogICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBtb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU01v
ZHVsZVJlY29yZCosIEpTQzo6SlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNmVhODJiMDNmZThjNGViNTIwODgxZGI5
YzcxNTJkOWU1ZGYxNDY4Yy4uZDc1ODI3MzRhZjNkNTA3MjAzYjVlNDM4YjdiZTllZWMwZmY1OTY5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6bGlu
a0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0JgogICAgIHJldHVy
biBsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHRJbldvcmxkKG1vZHVsZVNjcmlwdCwgbWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpOwogfQogCi1KU0M6OkpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1
bGVSZWNvcmQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVj
b3JkJiBtb2R1bGVSZWNvcmQsIERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIEpTQzo6SlNWYWx1ZSBh
d2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKQogewogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHdvcmxkLnZtKCkpOwogCkBAIC0yNDAsMTUgKzI0MCwxNSBAQCBKU0M6OkpTVmFsdWUg
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpT
TW9kdWxlUmVjbwogICAgIFNldEZvclNjb3BlPGNvbnN0IFVSTCo+IHNvdXJjZVVSTFNjb3BlKG1f
c291cmNlVVJMLCAmc291cmNlVVJMKTsKIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTC5zdHJpbmcoKSwganNTb3VyY2VD
b2RlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCksIGpzU291cmNlQ29kZS5zdGFydENvbHVtbigp
Lm9uZUJhc2VkSW50KCkpOwotICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBtb2R1bGVSZWNvcmQuZXZh
bHVhdGUoJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBtb2R1
bGVSZWNvcmQuZXZhbHVhdGUoJmxleGljYWxHbG9iYWxPYmplY3QsIGF3YWl0ZWRWYWx1ZSwgcmVz
dW1lTW9kZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlw
dChtX2ZyYW1lKTsKIAogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAotSlNDOjpKU1ZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBK
U01vZHVsZVJlY29yZCYgbW9kdWxlUmVjb3JkKQorSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xs
ZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVsZVJlY29yZCYg
bW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVz
dW1lTW9kZSkKIHsKLSAgICByZXR1cm4gZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCBtb2R1bGVS
ZWNvcmQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICByZXR1cm4gZXZhbHVhdGVNb2R1
bGUoc291cmNlVVJMLCBtb2R1bGVSZWNvcmQsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBhd2Fp
dGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogfQogCiBSZWY8RE9NV3JhcHBlcldvcmxkPiBTY3JpcHRD
b250cm9sbGVyOjpjcmVhdGVXb3JsZChjb25zdCBTdHJpbmcmIG5hbWUsIFdvcmxkVHlwZSB0eXBl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4
IDk2NDNiOTJmZjhmMDczM2E4OGM4OWM0YjBkMTQ3MGRlYzBiY2U5MmYuLjYwODIxMmIyYjVhZWE2
MjIyMmQ4ZTUxNjg2YWFkYzk5ZGY0YWE1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTEyMyw4ICsxMjMsOCBAQCBwdWJsaWM6CiAgICAg
SlNDOjpKU1ZhbHVlIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQoTG9hZGFibGVN
b2R1bGVTY3JpcHQmICwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgSlNDOjpKU1ZhbHVlIGxpbmtB
bmRFdmFsdWF0ZU1vZHVsZVNjcmlwdChMb2FkYWJsZU1vZHVsZVNjcmlwdCYpOwogCi0gICAgSlND
OjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQm
LCBET01XcmFwcGVyV29ybGQmKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29u
c3QgVVJMJiwgSlNDOjpKU01vZHVsZVJlY29yZCYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0
ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpTTW9kdWxlUmVjb3JkJiwgRE9NV3JhcHBlcldvcmxk
JiwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpOwor
ICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmLCBKU0M6OkpTTW9kdWxl
UmVjb3JkJiwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1v
ZGUpOwogCiAgICAgV1RGOjpUZXh0UG9zaXRpb24gZXZlbnRIYW5kbGVyUG9zaXRpb24oKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRl
ci5jcHAKaW5kZXggZDFlZTcxYjliNTVmMDU2YmMzNTZhNjk2ZjMwMWU4NGRhZGU3N2NmOC4uNDc1
MWUwYTAwYmJjODQ3MzgxNGIwZTYwN2UwMGZiYjg1N2VlZDhlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCkBAIC0yMjAsNyArMjIw
LDcgQEAgVVJMIFNjcmlwdE1vZHVsZUxvYWRlcjo6cmVzcG9uc2VVUkxGcm9tUmVxdWVzdFVSTChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBqc0dsb2JhbE8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1K
U0M6OkpTVmFsdWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBt
b2R1bGVLZXlWYWx1ZSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU0M6OkpTVmFs
dWUpCitKU0M6OkpTVmFsdWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNW
YWx1ZSBtb2R1bGVLZXlWYWx1ZSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVN
b2RlKQogewogICAgIEpTQzo6Vk0mIHZtID0ganNHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjM4LDExICsyMzgsMTEgQEAg
SlNDOjpKU1ZhbHVlIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCoganNHbG9iYWxPYmplY3QsIEoKIAogICAgIGlmIChtX293bmVyVHlwZSA9PSBPd25lclR5
cGU6OkRvY3VtZW50KSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvd25jYXN0PERvY3Vt
ZW50PihtX2NvbnRleHQpLmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPnNjcmlw
dCgpLmV2YWx1YXRlTW9kdWxlKHNvdXJjZVVSTCwgKm1vZHVsZVJlY29yZCk7CisgICAgICAgICAg
ICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLmV2YWx1YXRlTW9kdWxlKHNvdXJjZVVSTCwgKm1vZHVs
ZVJlY29yZCwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBBU1NFUlQoaXM8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KG1fY29udGV4dCkpOwogICAg
ICAgICBpZiAoYXV0byogc2NyaXB0ID0gZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGU+KG1fY29udGV4dCkuc2NyaXB0KCkpCi0gICAgICAgICAgICByZXR1cm4gc2NyaXB0LT5ldmFs
dWF0ZU1vZHVsZSgqbW9kdWxlUmVjb3JkKTsKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHQtPmV2
YWx1YXRlTW9kdWxlKCptb2R1bGVSZWNvcmQsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CiAg
ICAgfQogICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oCmluZGV4IGRmMzRkNTUxYTExY2Q5
OGY0ZTIzNmEyYWExZjQ4Mjc5ZDk2NGM2ODUuLmU4MmE4YmI0MzM3MWVhNmNhYjhmY2ZhODQyNGQ4
N2ViM2M5ODYzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIEpTQzo6SWRlbnRp
ZmllciByZXNvbHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwg
SlNDOjpKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTQzo6SlNWYWx1ZSBpbXBvcnRlck1vZHVsZUtleSwg
SlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21pc2Uq
IGZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpK
U1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTQzo6SlNWYWx1ZSBz
Y3JpcHRGZXRjaGVyKTsKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6
OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAg
SlNDOjpKU1ZhbHVlIGV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxl
TG9hZGVyKiwgSlNDOjpKU1ZhbHVlIG1vZHVsZUtleSwgSlNDOjpKU1ZhbHVlIG1vZHVsZVJlY29y
ZCwgSlNDOjpKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUs
IEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICBKU0M6OkpTSW50ZXJuYWxQcm9taXNlKiBp
bXBvcnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTU3RyaW5nKiwgSlNDOjpKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IEpTQzo6U291cmNl
T3JpZ2luJik7CiAgICAgSlNDOjpKU09iamVjdCogY3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUs
IEpTQzo6SlNNb2R1bGVSZWNvcmQqLCBKU0M6OkpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg1NGY5ZmIzNWU2ZGIwZTM1
YTkyMTE3MWY5YjMxMjZmMzVkOGNlOGEuLjJhNjMwMjg3NTY0ZmVhNGUyMDRhZjJiNGEyMWZmYmVj
Y2ZlYjRlMjMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRo
X21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdh
aXQgcHJvcG9zYWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMS0wMi0yMSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZ3JhZGUgdGVzdDI2MgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCmluZGV4IDJmY2ViNDQ4NzNmY2NiZGEwMTE1ZTVkZmQzYjFjYmEyNDdjODIzZjYu
Ljg1NWQ1MDZhYzRiMmZhMGYyNjcyNzBkZjY5NTcyNjZmZWUwNmE0NzAgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKQEAgLTE0LDYgKzE0LDcgQEAgZmxhZ3M6CiAgIEFycmF5LnByb3RvdHlwZS5hdDogdXNlQXRN
ZXRob2QKICAgVHlwZWRBcnJheS5wcm90b3R5cGUuYXQ6IHVzZUF0TWV0aG9kCiAgIFN0cmluZy5w
cm90b3R5cGUuYXQ6IHVzZUF0TWV0aG9kCisgIHRvcC1sZXZlbC1hd2FpdDogdXNlVG9wTGV2ZWxB
d2FpdAogc2tpcDoKICAgZmVhdHVyZXM6CiAgICAgLSBBdG9taWNzLndhaXRBc3luYwpAQCAtMjYs
OCArMjcsNiBAQCBza2lwOgogCiAgICAgIyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjE0MgogICAgIC0gcmVnZXhwLW1hdGNoLWluZGljZXMKLQotICAg
IC0gdG9wLWxldmVsLWF3YWl0CiAgIHBhdGhzOgogICBmaWxlczoKICAgICAjIFNsaWdodGx5IGRp
ZmZlcmVudCBmb3JtYXR0aW5nLiBXZSBzaG91bGQgdXBkYXRlIHRlc3QyNjIgc2lkZS4K
</data>
<flag name="commit-queue"
          id="439932"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421159</attachid>
            <date>2021-02-21 16:36:10 -0800</date>
            <delta_ts>2021-02-21 16:48:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202484-20210221163609.patch</filename>
            <type>text/plain</type>
            <size>95824</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MzA4YmU5ZWZkM2FmNTkwYWVhMzQwNjFjM2EyMmY3OTlmMDRmMmM5Li5hNmVjZTc4MzVmN2JiZDM5
YjNjMDcwOGRkMzI0MTI5Y2NiNmU5ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDUgQEAKKzIwMjEtMDItMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBUb3AtbGV2ZWwgYXdhaXQgcHJvcG9zYWwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjQ4NAor
CisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBUTEEgcHJvcG9zYWwuIFRoZSBidWxrIG9mIHRoaXMgcGF0
Y2ggaXMgYWRkaW5nIGEgY291cGxlIG9mIG1haW4gcGFydHMuCisKKyAgICAgICAgIDEpIGNvbnZl
cnRpbmcgdGhlIEFic3RyYWN0TW9kdWxlUmVjb3JkIHRvIGNvbnRhaW4gbWFueSBvZiBzYW1lIGlu
dGVybmFsIGZpZWxkcyBhcyBKU0dlbmVyYXRvciBzbyBtdWNoIG9mIHRoZSBhc3luYyBjb2RlZ2Vu
IGNhbiBiZSBzaGFyZWQuCisgICAgICAgIDIpIGhhdmluZyB0aGUgbGluayBwaGFzZSBvZiB0aGUg
bW9kdWxlIGxvYWRlciByZWNvcmQgd2hldGhlciBhIG1vZHVsZSBzdWJncmFwaCBpcyBhc3luYy4K
KyAgICAgICAgMykgdGVhY2hpbmcgdGhlIG1vZHVsZSBsb2FkZXIgdGhhdCBldmFsdWF0aW5nIGEg
bW9kdWxlIG1heSByZXF1aXJlIG1vcmUgdGhhbiBvbmUgdm0gZW50cnkgYW5kIGZvcndhcmRpbmcg
dGhlIGF3YWl0ZWQgdmFsdWUgYXMgd2VsbCBhcyB0aGUgcmVzdW1lIG1vZGUgdG8gdGhlIFZNLgor
CisgICAgICAgICBPbmUgdGhpbmcgcGFydGljdWxhcmx5IGludGVyZXN0aW5nIGFib3V0IHRoaXMg
cGF0Y2ggaXMgdGhhdCBtb2R1bGVFdmFsdWF0aW9uIG5vdyAqc29tZXRpbWVzKiAod2hlbiBhIHN0
cm9uZ2x5IGNvbm5lY3RlZCBzdWJncmFwaCBpcyBhc3luYykgd2lsbCByZXR1cm4gYSBwcm9taXNl
LiBUaGlzIGhhcHBlbmVkIHRvIGFscmVhZHkgYmUgYXdhaXRlZCB3aGVuIGNhbGxlZCBmcm9tIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZSAodW5uZWNlc3NhcmlseSBiZWZvcmUpIGJ1dCBub3cgYWxzbyBu
ZWVkcyB0byBiZSBoYW5kbGVkIGJ5IHJlcXVlc3RJbXBvcnRNb2R1bGUuCisKKyAgICAgICAgIE5v
IG5ldyB0ZXN0cyBiZWNhdXNlIGV2ZXJ5IHRlc3QgSSBjYW1lIHVwIHdpdGggd2FzIHN1YnN1bWVk
IGJ5IHRlc3RzIGFscmVhZHkgaW4gdGVzdDI2Mi4KKworICAgICAgICAqIEFQSS9KU0FQSUdsb2Jh
bE9iamVjdC5oOgorICAgICAgICAqIEFQSS9KU0FQSUdsb2JhbE9iamVjdC5tbToKKyAgICAgICAg
KEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKToKKyAgICAgICAg
KiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1
aWx0aW5zL01vZHVsZUxvYWRlci5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubmV3UmVnaXN0
cnlFbnRyeSk6CisgICAgICAgIChsaW5rKToKKyAgICAgICAgKGFzeW5jIHJlcXVlc3RJbXBvcnRN
b2R1bGUpOgorICAgICAgICAobW9kdWxlRXZhbHVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChy
ZXF1ZXN0SW1wb3J0TW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNv
ZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0V2lsbExlYXZlQ2FsbEZyYW1lRGVidWdIb29rKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjphYnN0cmFjdE1vZHVsZVJl
Y29yZEludGVybmFsRmllbGRJbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2lj
Tm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QWJzdHJhY3RNb2R1bGVSZWNvcmRJbnRlcm5hbEZpZWxk
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUF3YWl0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dXNlc0F3YWl0
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVQcm9n
cmFtTm9kZTo6TW9kdWxlUHJvZ3JhbU5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1Rva2VuOjpkdW1w
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXdhaXRFeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJl
c3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJl
c3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3Jk
LmNwcDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmZpbmlzaENyZWF0aW9u
KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAo
SlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
QWJzdHJhY3RNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNb2R1bGVSZWNv
cmQ6OmluaXRpYWxWYWx1ZXMpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1vZHVsZVJlY29yZDo6
aW50ZXJuYWxGaWVsZCk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TW9kdWxlUmVjb3JkOjppbnRl
cm5hbEZpZWxkIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGUpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZUxvYWRlcjo6ZXZhbHVhdGVOb25WaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTG9hZGVyLmg6Cisg
ICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OkpTTW9k
dWxlUmVjb3JkOjpsaW5rKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6OmV2YWx1YXRl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisgICAgICAgICogcnVudGlt
ZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xp
c3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
U3ltYm9sVGFibGU6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUu
aDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOgorICAgICAgICAoSlNDOjpX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlua0ltcGwpOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuaDoKKwogMjAyMS0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEpTSW50ZXJuYWxQcm9taXNlOjp0aGVu
IGNhbiBmYWlsIGlmIGV4ZWN1dGlvbiBpcyB0ZXJtaW5hdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTIyM2Zj
NmEyZGZjMDAxZGE1NzI3ZGUwOGUzMGE5ZGNkZGNiM2FmNy4uMWU2MGFhY2E0OGJmNGZhMzk4MGE3
YzAxODRmMmEzMDI4MTMzMDY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAy
LTIxICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCB0aGUgVG9wLWxldmVsIGF3YWl0IHByb3Bvc2FsCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0ODQKKworICAgICAgICBSZXZpZXdlZCBi
eSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRl
ckV2YWx1YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRN
b2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpl
dmFsdWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmg6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
TW9kdWxlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuaDoKKwogMjAyMS0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgbW9kdWxlcyBpbiBzZXJ2aWNlIHdvcmtlcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QuaAppbmRleCA4MTY3YzVjYzBiYzRh
ZmQ5N2M5ODU2NDk1M2RkZWQ0MzBjNzMzZTU4Li40NzIxNzkyYWRhNDExYTlhYmI2NTkyODMxOGVl
ZjFlODNjNzMyYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJ
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSWRlbnRpZmll
ciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIqLCBK
U1ZhbHVlIGtleVZhbHVlLCBKU1ZhbHVlIHJlZmVycmVyVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0
YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3Qq
LCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIHN0YXRp
YyBKU09iamVjdCogbW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9i
YWxPYmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTTW9kdWxlUmVjb3JkKiwgSlNW
YWx1ZSk7Ci0gICAgc3RhdGljIEpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqLCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUsIEpTVmFsdWUsIEpTVmFsdWUpOworICAg
IHN0YXRpYyBKU1ZhbHVlIG1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNN
b2R1bGVMb2FkZXIqLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVlLCBKU1ZhbHVl
KTsKIAogICAgIEpTVmFsdWUgbG9hZEFuZEV2YWx1YXRlSlNTY3JpcHRNb2R1bGUoY29uc3QgSlNM
b2NrSG9sZGVyJiwgSlNTY3JpcHQgKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IGRlZTczMjUzZjg1ZDViMTI4ZDJjMmIzYWE1MjRh
YzQyYmQ5YWE4ZGUuLmMxN2FhODU2YTNlODc2ZWRlMmFiNDlmYmZiOTIwYTAwOWJjMmRmZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAt
MjM5LDcgKzIzOSw3IEBAIEpTT2JqZWN0KiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVy
Q3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplCiAgICAgcmV0dXJuIG1ldGFQ
cm9wZXJ0aWVzOwogfQogCi1KU1ZhbHVlIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJF
dmFsdWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlciogbW9k
dWxlTG9hZGVyLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1
ZSBzY3JpcHRGZXRjaGVyKQorSlNWYWx1ZSBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVy
RXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXIqIG1v
ZHVsZUxvYWRlciwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlciwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkK
IHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjU4LDcgKzI1OCw4IEBAIEpTVmFsdWUgSlNBUElH
bG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTCiAgICAgICAgIFttb2R1bGVMb2FkZXJEZWxlZ2F0ZSB3aWxsRXZhbHVhdGVNb2R1
bGU6dXJsXTsKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1v
ZHVsZUxvYWRlci0+ZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwga2V5LCBtb2R1bGVS
ZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1cGRh
dGUgdGhlIGRlbGVnYXRlIGNhbGxiYWNrcyBmb3IgYXN5bmMgbW9kdWxlcy4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI1MworICAgIEpTVmFsdWUgcmVzdWx0ID0g
bW9kdWxlTG9hZGVyLT5ldmFsdWF0ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBrZXksIG1vZHVs
ZVJlY29yZFZhbHVlLCBzY3JpcHRGZXRjaGVyLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwogCiAg
ICAgaWYgKFttb2R1bGVMb2FkZXJEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRpZEV2YWx1YXRlTW9kdWxlOildKQogICAgICAgICBbbW9kdWxlTG9hZGVyRGVsZWdhdGUgZGlk
RXZhbHVhdGVNb2R1bGU6dXJsXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODNh
NDNmNDgzZjYzMGU0MjdhMTU4OTMzOWQxMmJmMmQ2NWI4OThkNi4uMWVhYjgyZmM4Yzg3Y2VhM2Fm
YzMzODhkNWE4ZWRkYmFmZWQ3ZDk2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE4NDYsNyArMTg0Niw3IEBACiAJCUUzNDlBNzgxMjQ5MUYxNjEwMDFCQTMzNiAvKiBERkdDb2Rl
T3JpZ2luUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM0OUE3ODAyNDkxRjE1QTAwMUJBMzM2IC8qIERGR0NvZGVPcmlnaW5Qb29sLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM0RTY1NzUyMDY2
OEVBQTAwRkI4MUFDIC8qIFBhcnNlSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM0RTY1NzMyMDY2OEU4RDAwRkI4MUFDIC8qIFBhcnNlSGFzaC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNEVE
QkY3MURCNUZGQzkwMERDODdBNSAvKiBGcmFtZVRyYWNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEVEQkY2MURCNUZGQzEwMERDODdBNSAvKiBG
cmFtZVRyYWNlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhEQjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEw
MDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyB9OworCQlFMzRGOTMwRTIzMjJEODgyMDAyQjhE
QjQgLyogSlNHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNEY5MzBDMjMyMkQ4ODEwMDJCOERCNCAvKiBKU0dlbmVyYXRvci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNTA3MDhBMURD
NDlCQkYwMDg5QkNENiAvKiBET01KSVRTaWduYXR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTA3MDg5MURDNDlCQjYwMDg5QkNENiAvKiBET01K
SVRTaWduYXR1cmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzUzQzExRDI0QUE0Q0I3MDAzRkJERjMgLyogSW50bERpc3BsYXlOYW1lcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTcyNEFB
NENCNjAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXMuaCAqLzsgfTsKIAkJRTM1M0MxMUUyNEFB
NENCNzAwM0ZCREYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1M0MxMTgyNEFBNENCNjAwM0ZC
REYzIC8qIEludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5oICovOyB9OwpAQCAtOTA5Nyw2ICs5
MDk3LDggQEAKIAkJCQk4NjAxNjFFMzBGM0E4M0MxMDBGODQ3MTAgLyogQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQ0OTM3QzQxRERCRTYxNDAwNzdDODA3IC8q
IEFic3RyYWN0TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1RjBGNTE0RDEw
NjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU5MTJCNEYy
NTMxMTkzMzAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZpc2l0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCUZFOTEyQjUxMjUzMTFBRDEwMEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9ySW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0RTAzNEUxRTRENEIxNjAwMjEzRjY0IC8qIEFjY2Vz
c0Nhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQkZEMEJDMURBRjgwOEUwMDY1REVBMiAvKiBB
Y2Nlc3NDYXNlU25pcHBldFBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM3MEI0RjYxQkYy
NjIwNTAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtOTMyMSw3ICs5MzIzLDYgQEAKIAkJCQkxNDdCODNBQzBF
NkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzNUU4OUZEMjVDNTBGODcwMDcxRUUxRSAvKiBCaWdJbnQ2NEFycmF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4Njk3NkU1RjFGQTNFOEJDMDBFN0M0RTEgLyogQmlnSW50Q29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMDQxNTUzMjUyRUMwNzMwMDkxRUI1RCAvKiBT
bG90VmlzaXRvck1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY2NzM5RDIxM0JGREU3MTAw
MjNEODdDIC8qIEJpZ0ludGVnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MTgxNjc3MUZCNzky
NDIwMEVDQzRFQyAvKiBCaWdJbnRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OTc2RTVF
MUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAt
OTYwMyw3ICs5NjA0LDYgQEAKIAkJCQkwRkQ4MkU1NzE0MURBRjEwMDAxNzlDOTQgLyogREZHT1NS
RW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBE
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3
NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZF
OTEyQjRGMjUzMTE5MzMwMEZBQkRERiAvKiBBYnN0cmFjdFNsb3RWaXNpdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0
Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAz
ODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTk4
OTAsNyArOTg5MCw2IEBACiAJCQkJQTUxM0U1QkUxODVCRkFDQzAwN0U5NUFEIC8qIEluamVjdGVk
U2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1Q0IxODVGOTYyNDAwN0U5NUFE
IC8qIEluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDBFMjEx
ODdCN0I4NjAwODQzQjEwIC8qIEluamVjdGVkU2NyaXB0TW9kdWxlLmggaW4gSGVhZGVycyAqLywK
LQkJCQlGRTI4N0QwMjI1MkZCMkU4MDBENzIzRjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUxM0U1QzcxODVGOTQ0NjAwN0U5NUFEIC8qIEluamVjdGVkU2Ny
aXB0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU5RTkzMjFCRDE4Mjc5MDAxQUE0MTMg
LyogaW5saW5lLWFuZC1taW5pZnktc3R5bGVzaGVldHMtYW5kLXNjcmlwdHMucHkgaW4gSGVhZGVy
cyAqLywKIAkJCQk3OTA1QkI2OTFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNzLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwMDMwLDcgKzEwMDI5LDYgQEAKIAkJCQk1M0M0RjY2QjIxQjFBNDA5
MDAyRkQwMDkgLyogSlNBUElHbG9iYWxPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0MDQ4
MDEzMTAyMUExRDkwMDhFN0YwMSAvKiBKU0FQSVZhbHVlV3JhcHBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRkUzMzZCNTMyNURCNDk3RDAwOThGMDM0IC8qIE1hcmtpbmdDb25z
dHJhaW50RXhlY3V0b3JQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNE
MDBCMzQ0NjAgLyogSlNBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTMxN0I2QjVB
QjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkU1
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAwNjcsNyArMTAwNjUsNiBAQAogCQkJCUE1OEMwMjQyMThFNEE0MUEwMDAzMkJD
NSAvKiBKU0NvbnRleHRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRTBFMTZG
NUNEMDBCMzQ0NjAgLyogSlNDb250ZXh0UmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzBF
RTE5RjVCNUM0MDA5OEY1RUMgLyogSlNDb250ZXh0UmVmSW5zcGVjdG9yU3VwcG9ydC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZp
c2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUQyRTY2NTE5NUUxNzQwMDBBNTE4
RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0OENEMUQ4
MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTc0OTdFNjIwOTAwMUIxMDAwMzU2NUIgLyogSlNDUHRyVGFnLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwMTk5LDcgKzEwMTk2LDYgQEAKIAkJCQk3OTVBQzYxODIwQTIzNTVFMDA1MkM3NkMg
LyogSlNWaXJ0dWFsTWFjaGluZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Q0EzQUU4
MTdEQTQxQUUwMDY1MzhBRiAvKiBKU1dlYWtNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NDgy
RTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRkU5MTJCNTEyNTMxMUFEMTAwRkFCRERGIC8qIEFic3RyYWN0U2xvdFZp
c2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkI5MzExNjcxMTQ3MDAzQjA3
MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM5
QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYwQjI4NkIxRUI4RTZDRjAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTAyNzcsNiArMTAyNzMsNyBAQAogCQkJCTE0RDJGM0RCMTM5RjRCRTIwMDQ5
MTAzMSAvKiBNYXJrZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3REYxMzUxRTI5NzBE
QzAwOTU5NTFCIC8qIE1hcmtlZFNwYWNlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2
NjBFMzgxRTA1MTdCQjAwMzE0NjJDIC8qIE1hcmtpbmdDb25zdHJhaW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTMzNkI1MzI1REI0OTdEMDA5OEYwMzQgLyogTWFya2luZ0NvbnN0cmFpbnRFeGVj
dXRvclBhaXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjYwRTNBMUUwNTE3QzEwMDMxNDYyQyAv
KiBNYXJraW5nQ29uc3RyYWludFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5REFBMDkxRkQx
QzNDRjAwNzlDNUIyIC8qIE1hcmtpbmdDb25zdHJhaW50U29sdmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDJENkYxMjEzNTM5QTQxMDBCMDJFODYgLyogTWFya1N0YWNrLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwNDczLDYgKzEwNDcwLDcgQEAKIAkJCQkwRjJCNjcwNTE3QjZCNUFCMDBBN0FFM0Yg
LyogU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0QkE3
OEYxMTNBQUI4OEYwMDVCN0MyQyAvKiBTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkUwNDE1NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzA5RjJGMDE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1Bh
dGhDYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVCNEEzMzFDODRGMEQ2MDBGMUIxN0UgLyog
U2xvd1BhdGhSZXR1cm5UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwNDAwNDBFNkE3NDk0
MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTkxLDYgKzEw
NTg5LDggQEAKIAkJCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9u
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QzczNTExQUM5Rjk5RjAwQkUxNjgyIC8qIFZh
cmlhYmxlV3JpdGVGaXJlRGV0YWlsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyRDFBQTkw
OTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTI4N0QwMjI1
MkZCMkU4MDBENzIzRjkgLyogVmVyaWZpZXJTbG90VmlzaXRvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNkJDQ0VDMDQyNUQxRkEyNzAwMEYzOTFEIC8qIFZlcmlmaWVyU2xvdFZpc2l0b3JJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVh
bFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjREOEM3NDFGQzdBOTdBMDAxRDMyQUMg
LyogVmlzaXRDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk1MkFBMTFERjc4NjA5MDBF
MDZGQkQgLyogVmlzaXRSYWNlS2V5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXIuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyLmpzCmluZGV4IGE4Yzg2MTVlOWQyMWVhZDRi
YzkzNzA2ODc1NzgzN2NiZjBhNTg0ZDAuLjNhMTBkMGE4YmM1MDViZDA5ZTU1ZjY2NDgyYjk4ZjY1
NmQ5ZTE4YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1
bGVMb2FkZXIuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxv
YWRlci5qcwpAQCAtMTAwLDYgKzEwMCw4IEBAIGZ1bmN0aW9uIG5ld1JlZ2lzdHJ5RW50cnkoa2V5
KQogICAgICAgICBsaW5rU3VjY2VlZGVkOiB0cnVlLAogICAgICAgICBldmFsdWF0ZWQ6IGZhbHNl
LAogICAgICAgICB0aGVuOiBAdW5kZWZpbmVkLAorICAgICAgICBpc0FzeW5jOiBmYWxzZSwKKyAg
ICAgICAgY29tcGxldGlvblByb21pc2U6IEB1bmRlZmluZWQsCiAgICAgfTsKIH0KIApAQCAtMjg2
LDExICsyODgsMTUgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwgZmV0Y2hlcikKICAgICAgICAgLy8g
U2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSAiZGVwZW5kZW5jaWVzIiBmaWVsZCwKICAgICAgICAg
Ly8gd2UgY2FuIGNhbGwgbW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uIHdpdGggdGhlIGNv
cnJlY3Qgb3JkZXIKICAgICAgICAgLy8gd2l0aG91dCBjb25zdHJ1Y3RpbmcgdGhlIGRlcGVuZGVu
Y3kgZ3JhcGggYnkgY2FsbGluZyBkZXBlbmRlbmN5R3JhcGguCisgICAgICAgIHZhciBoYXNBc3lu
Y0RlcGVuZGVuY3kgPSBmYWxzZTsKICAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IGVudHJ5LmRl
cGVuZGVuY2llczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2ll
cy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMubGluayhkZXBlbmRl
bmNpZXNbaV0sIGZldGNoZXIpOworICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZGVw
ZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZGVw
ZW5kZW5jeSA9IGRlcGVuZGVuY2llc1tpXTsKKyAgICAgICAgICAgIHRoaXMubGluayhkZXBlbmRl
bmN5LCBmZXRjaGVyKTsKKyAgICAgICAgICAgIGhhc0FzeW5jRGVwZW5kZW5jeSB8fD0gZGVwZW5k
ZW5jeS5pc0FzeW5jOworICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5tb2R1bGVEZWNsYXJhdGlv
bkluc3RhbnRpYXRpb24oZW50cnkubW9kdWxlLCBmZXRjaGVyKTsKKyAgICAgICAgZW50cnkuaXNB
c3luYyA9IHRoaXMubW9kdWxlRGVjbGFyYXRpb25JbnN0YW50aWF0aW9uKGVudHJ5Lm1vZHVsZSwg
ZmV0Y2hlcikgfHwgaGFzQXN5bmNEZXBlbmRlbmN5OwogICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAg
ICAgICAgIGVudHJ5LmxpbmtTdWNjZWVkZWQgPSBmYWxzZTsKICAgICAgICAgZW50cnkubGlua0Vy
cm9yID0gZXJyb3I7CkBAIC0zMDMsNyArMzA5LDYgQEAgZnVuY3Rpb24gbGluayhlbnRyeSwgZmV0
Y2hlcikKIGZ1bmN0aW9uIG1vZHVsZUV2YWx1YXRpb24oZW50cnksIGZldGNoZXIpCiB7CiAgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1v
ZHVsZWV2YWx1YXRpb24KLQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmIChlbnRyeS5ldmFs
dWF0ZWQpCkBAIC0zMTIsMTAgKzMxNywzNyBAQCBmdW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9uKGVu
dHJ5LCBmZXRjaGVyKQogCiAgICAgLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBbW1JlcXVlc3RlZE1v
ZHVsZXNdXSBpcyBjbG9uZWQgaW50byBlbnRyeS5kZXBlbmRlbmNpZXMuCiAgICAgdmFyIGRlcGVu
ZGVuY2llcyA9IGVudHJ5LmRlcGVuZGVuY2llczsKLSAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3Ro
ID0gZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICB0aGlzLm1v
ZHVsZUV2YWx1YXRpb24oZGVwZW5kZW5jaWVzW2ldLCBmZXRjaGVyKTsKIAotICAgIHRoaXMuZXZh
bHVhdGUoZW50cnkua2V5LCBlbnRyeS5tb2R1bGUsIGZldGNoZXIpOworICAgIGlmICghZW50cnku
aXNBc3luYykgeworICAgICAgICAvLyBTaW5jZSBsaW5raW5nIHNldHMgaXNBc3luYyBmb3IgYW55
IHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnQgd2l0aCBhbiBhc3luYyBtb2R1bGUgd2Ugc2hv
dWxkIG9ubHkgZ2V0IGhlcmUgaWYgYWxsIG91ciBkZXBlbmRlbmNpZXMgYXJlIGFsc28gc3luYy4K
KyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkg
PCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBlbmRlbmNp
ZXNbaV07CisgICAgICAgICAgICBAYXNzZXJ0KCFkZXBlbmRlbmN5LmlzQXN5bmMpOworICAgICAg
ICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0aW9uKGRlcGVuZGVuY3ksIGZldGNoZXIpOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5ldmFsdWF0ZShlbnRyeS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0
Y2hlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChhc3luYyBmdW5jdGlvbiBhc3lu
Y01vZHVsZUV2YWx1YXRpb24oZW50cnksIGRlcGVuZGVuY2llcykgeworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbmd0aCA9IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsr
aSkKKyAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1vZHVsZUV2YWx1YXRpb24oZGVwZW5kZW5j
aWVzW2ldLCBmZXRjaGVyKTsKKworICAgICAgICAgICAgdmFyIHJlc3VtZU1vZGUgPSAwOworICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgYXdhaXRlZFZhbHVl
ID0gdGhpcy5ldmFsdWF0ZShlbnRyeS5rZXksIGVudHJ5Lm1vZHVsZSwgZmV0Y2hlciwgYXdhaXRl
ZFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoQGdldEFic3RyYWN0TW9k
dWxlUmVjb3JkSW50ZXJuYWxGaWVsZChlbnRyeS5tb2R1bGUsIEBhYnN0cmFjdE1vZHVsZVJlY29y
ZEZpZWxkU3RhdGUpID09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAg
ICAgYXdhaXRlZFZhbHVlID0gYXdhaXQgYXdhaXRlZFZhbHVlOworICAgICAgICAgICAgICAgICAg
ICByZXN1bWVNb2RlID0gMDsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF3YWl0ZWRWYWx1ZSA9IGU7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vt
ZU1vZGUgPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSku
QGNhbGwodGhpcywgZW50cnksIGRlcGVuZGVuY2llcyk7CisgICAgfQogfQogCiAvLyBBUElzIHRv
IGNvbnRyb2wgdGhlIG1vZHVsZSBsb2FkZXIuCkBAIC0zNjQsMjUgKzM5NiwxMyBAQCBhc3luYyBm
dW5jdGlvbiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUobW9kdWxlTmFtZSwgcGFyYW1ldGVycywgZmV0
Y2hlcikKICAgICByZXR1cm4gYXdhaXQgdGhpcy5saW5rQW5kRXZhbHVhdGVNb2R1bGUoa2V5LCBm
ZXRjaGVyKTsKIH0KIAotZnVuY3Rpb24gcmVxdWVzdEltcG9ydE1vZHVsZShrZXksIHBhcmFtZXRl
cnMsIGZldGNoZXIpCithc3luYyBmdW5jdGlvbiByZXF1ZXN0SW1wb3J0TW9kdWxlKGtleSwgcGFy
YW1ldGVycywgZmV0Y2hlcikKIHsKICAgICAidXNlIHN0cmljdCI7CiAKLSAgICB2YXIgY29uc3Ry
dWN0b3IgPSBASW50ZXJuYWxQcm9taXNlOwotICAgIHZhciBwcm9taXNlID0gQGNyZWF0ZVByb21p
c2UoY29uc3RydWN0b3IsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIHRydWUpOwotICAgIEByZXNv
bHZlV2l0aG91dFByb21pc2UodGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVy
ZWQoa2V5KSwgcGFyYW1ldGVycywgZmV0Y2hlciwgbmV3IEBTZXQpLAotICAgICAgICAoZW50cnkp
ID0+IHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5saW5rQW5kRXZh
bHVhdGVNb2R1bGUoZW50cnkua2V5LCBmZXRjaGVyKTsKLSAgICAgICAgICAgICAgICBAZnVsZmls
bFByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCB0aGlz
LmdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChlbnRyeS5tb2R1bGUpKTsKLSAgICAgICAgICAgIH0g
Y2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgQHJlamVjdFByb21pc2VXaXRoRmlyc3RS
ZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCBlcnJvcik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0sCi0gICAgICAgIChyZWFzb24pID0+IHsKLSAgICAgICAgICAgIEByZWplY3RQ
cm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwgcmVhc29u
KTsKLSAgICAgICAgfSk7Ci0gICAgcmV0dXJuIHByb21pc2U7CisgICAgdmFyIGVudHJ5ID0gYXdh
aXQgdGhpcy5yZXF1ZXN0U2F0aXNmeSh0aGlzLmVuc3VyZVJlZ2lzdGVyZWQoa2V5KSwgcGFyYW1l
dGVycywgZmV0Y2hlciwgbmV3IEBTZXQpOworICAgIGF3YWl0IHRoaXMubGlua0FuZEV2YWx1YXRl
TW9kdWxlKGVudHJ5LmtleSwgZmV0Y2hlcik7CisgICAgcmV0dXJuIHRoaXMuZ2V0TW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KGVudHJ5Lm1vZHVsZSk7CiB9CiAKIGZ1bmN0aW9uIGRlcGVuZGVuY3lLZXlz
SWZFdmFsdWF0ZWQoa2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKaW5kZXggYThlNTZkMGNk
Mzk0YmMxYjdhYzA1MjZiZTg2NjdlYWM4YmRkN2U2YS4uNmNiODhjZTdhZjUzNTc5YTk2YmNhNjQ3
ODRiMjczMWNhNTgyOGZkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0yMTcsNyAr
MjE3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKICAgICB7CiAg
ICAgICAgIGF1dG8gbmV4dFRvRW50ZXJQb2ludCA9IGVudGVyUG9pbnQoKS5uZXh0KCk7CiAgICAg
ICAgIHVuc2lnbmVkIHN3aXRjaFRhYmxlSW5kZXggPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0
Y2hKdW1wVGFibGVzKCk7Ci0gICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcyhzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6QXJndW1lbnQ6OlN0YXRlKSk7CiAgICAgICAg
IGF1dG8mIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKICAg
ICAgICAganVtcFRhYmxlLm1pbiA9IDA7CiAgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRz
ID0gUmVmQ291bnRlZEFycmF5PGludDMyX3Q+KG1feWllbGRzLnNpemUoKSArIDEpOwpAQCAtMjMy
LDcgKzIzMiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCiAgICAg
fQogCiAgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgewotICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1
ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvckFyZ3Vt
ZW50OjpGcmFtZSkpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkFyZ3VtZW50OjpGcmFtZSkpOwogCiAgICAgICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBt
X2luc3RydWN0aW9ucy5hdChkYXRhLnBvaW50KTsKICAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVl
bmNlLgpAQCAtMjkzLDExICsyOTMsMTggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6cnVuKCkKIAogdm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR2VuZXJh
dG9yJiBieXRlY29kZUdlbmVyYXRvciwgVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUq
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXgpCiB7Ci0gICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVH
ZW5lcmF0b3JpZmljYXRpb24oKSkpCisgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBCeXRl
Y29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJC
eXRlY29kZXMgYmVmb3JlIGdlbmVyYXRvcmlmaWNhdGlvbiIpOwogICAgICAgICBDb2RlQmxvY2tC
eXRlY29kZUR1bXBlcjxVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvcj46OmR1bXBCbG9jayhjb2Rl
QmxvY2ssIGluc3RydWN0aW9ucywgV1RGOjpkYXRhRmlsZSgpKTsKKyAgICB9CiAKICAgICBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGJ5dGVjb2RlR2VuZXJhdG9yLCBjb2RlQmxvY2ss
IGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4KTsKICAgICBwYXNzLnJ1bigpOworCisgICAgaWYgKFVOTElLRUxZKE9w
dGlvbnM6OmR1bXBCeXRlY29kZXNCZWZvcmVHZW5lcmF0b3JpZmljYXRpb24oKSkpIHsKKyAgICAg
ICAgZGF0YUxvZ0xuKCJCeXRlY29kZXMgYWZ0ZXIgZ2VuZXJhdG9yaWZpY2F0aW9uIik7CisgICAg
ICAgIENvZGVCbG9ja0J5dGVjb2RlRHVtcGVyPFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yPjo6
ZHVtcEJsb2NrKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBXVEY6OmRhdGFGaWxlKCkpOworICAg
IH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKaW5kZXgg
NWNhMzY0OWE3YzFmYzQ3NzU3OTk2ZjNjMzIyMDI4Y2Y0NWUwNWMzMi4uMmE3NTg4ZDZkNWNjN2Ez
NThlOGNjMWM4OTMzMWNiOTIxZjc5Yjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVjb3JkLmgiCiAj
aW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgpAQCAtODYsMTEgKzg3LDExIEBAIEJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0mIHZtKQog
ICAgIG1fZ2VuZXJhdG9yRmllbGROZXh0LnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpOZXh0KSkpOwogICAgIG1fZ2VuZXJhdG9yRmll
bGRUaGlzLnNldChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0
b3I6OkZpZWxkOjpUaGlzKSkpOwogICAgIG1fZ2VuZXJhdG9yRmllbGRGcmFtZS5zZXQobV92bSwg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTR2VuZXJhdG9yOjpGaWVsZDo6RnJhbWUp
KSk7Ci0gICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsLnNldChtX3ZtLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9y
bWFsTW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVUaHJvdy5zZXQobV92bSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkdlbmVyYXRvclJlc3VtZU1v
ZGU6OlRocm93TW9kZSkpKTsKLSAgICBtX0dlbmVyYXRvclJlc3VtZU1vZGVSZXR1cm4uc2V0KG1f
dm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQu
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JTdGF0ZTo6Q29tcGxldGVkKSkpOwotICAgIG1fR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcu
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpHZW5l
cmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSkpOworICAgIG1fR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1h
bC5zZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJl
c3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cu
c2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpSZXN1
bWVNb2RlOjpUaHJvd01vZGUpKSk7CisgICAgbV9HZW5lcmF0b3JSZXN1bWVNb2RlUmV0dXJuLnNl
dChtX3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1l
TW9kZTo6UmV0dXJuTW9kZSkpKTsKKyAgICBtX0dlbmVyYXRvclN0YXRlQ29tcGxldGVkLnNldCht
X3ZtLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkNv
bXBsZXRlZCkpKTsKKyAgICBtX0dlbmVyYXRvclN0YXRlRXhlY3V0aW5nLnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykp
KTsKICAgICBtX2FycmF5SXRlcmF0b3JGaWVsZEl0ZXJhdGVkT2JqZWN0LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJdGVyYXRl
ZE9iamVjdCkpKTsKICAgICBtX2FycmF5SXRlcmF0b3JGaWVsZEluZGV4LnNldChtX3ZtLCBqc051
bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0FycmF5SXRlcmF0b3I6OkZpZWxkOjpJbmRleCkp
KTsKICAgICBtX2FycmF5SXRlcmF0b3JGaWVsZEtpbmQuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KEpTQXJyYXlJdGVyYXRvcjo6RmllbGQ6OktpbmQpKSk7CkBAIC0xMTIs
NiArMTEzLDcgQEAgQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6Qnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeShWTSYgdm0pCiAgICAgbV9Bc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb25Bd2FpdC5z
ZXQobV92bSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNBc3luY0dlbmVyYXRvcjo6
QXN5bmNHZW5lcmF0b3JTdXNwZW5kUmVhc29uOjpBd2FpdCkpKTsKICAgICBtX0FzeW5jR2VuZXJh
dG9yU3VzcGVuZFJlYXNvbk5vbmUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMy
X3Q+KEpTQXN5bmNHZW5lcmF0b3I6OkFzeW5jR2VuZXJhdG9yU3VzcGVuZFJlYXNvbjo6Tm9uZSkp
KTsKICAgICBtX3VzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZC5zZXQobV92bSwganNCb29s
ZWFuKE9wdGlvbnM6OnVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZCgpKSk7CisgICAgbV9h
YnN0cmFjdE1vZHVsZVJlY29yZEZpZWxkU3RhdGUuc2V0KG1fdm0sIGpzTnVtYmVyKHN0YXRpY19j
YXN0PGludDMyX3Q+KEFic3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpKSk7CiB9CiAK
IE9wdGlvbmFsPEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkVudHJ5PiBCeXRlY29kZUludHJp
bnNpY1JlZ2lzdHJ5Ojpsb29rdXAoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnkuaAppbmRleCAxYzkwODIzOGYzYTNlZWFkM2UwYjI0YzQzNWM1NjdmMTVlZTcw
YmI2Li41Y2Y0ZmE1NWMzZWVlZGVmNGY4ZWE5M2NkNjFkNDY2MWViNjdmODJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgZW51bSBjbGFzcyBMaW5rVGltZUNvbnN0YW50
IDogaW50MzJfdDsKICAgICBtYWNybyhnZXRQcm9taXNlSW50ZXJuYWxGaWVsZCkgXAogICAgIG1h
Y3JvKGdldEdlbmVyYXRvckludGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRBc3luY0dlbmVy
YXRvckludGVybmFsRmllbGQpIFwKKyAgICBtYWNybyhnZXRBYnN0cmFjdE1vZHVsZVJlY29yZElu
dGVybmFsRmllbGQpIFwKICAgICBtYWNybyhnZXRBcnJheUl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkg
XAogICAgIG1hY3JvKGdldFN0cmluZ0l0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXAogICAgIG1hY3Jv
KGdldE1hcEl0ZXJhdG9ySW50ZXJuYWxGaWVsZCkgXApAQCAtMTUyLDYgKzE1Myw3IEBAIGVudW0g
Y2xhc3MgTGlua1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAgICAgbWFjcm8oQXN5bmNHZW5lcmF0
b3JTdXNwZW5kUmVhc29uQXdhaXQpIFwKICAgICBtYWNybyhBc3luY0dlbmVyYXRvclN1c3BlbmRS
ZWFzb25Ob25lKSBcCiAgICAgbWFjcm8odXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kKSBc
CisgICAgbWFjcm8oYWJzdHJhY3RNb2R1bGVSZWNvcmRGaWVsZFN0YXRlKSBcCiAKICNkZWZpbmUg
SlNDX0NPTU1PTl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0NVU1RPTV9FQUNIX05BTUUo
bWFjcm8pIFwKICAgICBtYWNybyhzZW50aW5lbE1hcEJ1Y2tldCkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYTI0ZDI2NTFiNTFhODZl
NmM5ZTcwNjlkNzQyNjBiY2E4NTcxZTQ5MS4uY2IwZTdjOGM5YmJiYTE0YzU3ZDIyYjRiYTI3ZWJm
YjlkNzI5Nzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCkBAIC0xMjk3LDcgKzEyOTcsNiBAQCBvcCA6aXRlcmF0b3JfbmV4dCwKIAogb3Ag
OnlpZWxkLAogICAgIGFyZ3M6IHsKLSAgICAgICAgZ2VuZXJhdG9yOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgICAgIHlpZWxkUG9pbnQ6IHVuc2lnbmVkLAogICAgICAgICBhcmd1bWVudDogVmlydHVh
bFJlZ2lzdGVyLAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IDQyNWFmMjViODA0OTI5ZjQ2MWYwYmIxMzhjNjVhOGNm
NTRiYjUyNDMuLjAxNmEwMjdmYTMzYWI3OTQ5NDMxMmE0YTQ3N2RmYzViMmU3YTAwZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApA
QCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChW
aXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEdl
dEludGVybmFsRmllbGQsIGJhc2UpCiAgICAgVVNFUyhPcFB1dEludGVybmFsRmllbGQsIGJhc2Us
IHZhbHVlKQogCi0gICAgVVNFUyhPcFlpZWxkLCBnZW5lcmF0b3IsIGFyZ3VtZW50KQorICAgIFVT
RVMoT3BZaWVsZCwgYXJndW1lbnQpCiAKICAgICBjYXNlIG9wX2l0ZXJhdG9yX29wZW46IHsKICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEl0ZXJhdG9yT3Blbj4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2suaAppbmRleCBiOTMyNDgxYWE0ZTI1YzQ3ZDdlN2Fl
ZTQxMWIwODk4MzMwMGRhZTE2Li44NTM5ZjU2MmI5MzA1NDZkZTRhNzM4NjU4MzEwMGU2MTRmYjQ5
OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oCkBAIC04Miw2ICs4Miw4IEBAIHB1
YmxpYzoKICAgICAgICAgbV9tb2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlQ29uc3RhbnRSZWdp
c3Rlck9mZnNldCA9IG9mZnNldDsKICAgICB9CiAKKyAgICBib29sIGlzQXN5bmMoKSBjb25zdCB7
IHJldHVybiBjb2RlRmVhdHVyZXMoKSAmIEF3YWl0RmVhdHVyZTsgfQorCiBwcml2YXRlOgogICAg
IGZyaWVuZCBDYWNoZWRNb2R1bGVDb2RlQmxvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMWNl
YWJjMGI1ZWFmZTJmZGRiMDlhMmNkY2Q1MDZjMDc5ZTQ5ZjdhZC4uNzZkZjBhMDk1NDZhZTA4NWQ1
YzI3ZmJiYTRhNDQwNDNmZDU5ZWI2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgog
CisjaW5jbHVkZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCdWlsdGluRXhl
Y3V0YWJsZXMuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgiCkBAIC0yNzksNyArMjgwLDcgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAgICAgCiAKLSAgICBpZiAoaXNH
ZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKG1fY29kZUJsb2NrLT5wYXJzZU1v
ZGUoKSkpCisgICAgaWYgKG1faXNBc3luYykKICAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNh
dGlvbigqdGhpcywgbV9jb2RlQmxvY2suZ2V0KCksIG1fd3JpdGVyLCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKIAog
ICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9jay0+bnVt
Q2FsbGVlTG9jYWxzKCkpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4KSk7CkBAIC0zODUsNiArMzg2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UK
ICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMo
KSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+
aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24o
KSkpICYmIHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXpl
ck1vZGU7CiAKICAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpIHsKKyAgICAgICAgbV9pc0FzeW5jID0gdHJ1ZTsKICAgICAgICAgLy8gR2Vu
ZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJn
dW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3Ig
ZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAgICAgfQpA
QCAtNDM0LDcgKzQzNiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgZW1pdEVudGVy
KCk7CiAKICAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBh
cnNlTW9kZSkpCi0gICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFd
OworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpHZW5lcmF0b3IpXTsKIAogICAgIGFs
bG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKQEAgLTk1MSw2ICs5NTMsMTQgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgTW9kdWxlUHJvZ3JhbU5vZGUqIG1vZHVs
ZVByb2dyYW1Ob2QKICAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29w
ZSA6IFZhcktpbmQ6OlN0YWNrOwogICAgIH07CiAKKyAgICBpZiAobW9kdWxlUHJvZ3JhbU5vZGUt
PnVzZXNBd2FpdCgpKSB7CisgICAgICAgIG1faXNBc3luYyA9IHRydWU7CisgICAgICAgIGluaXRp
YWxpemVOZXh0UGFyYW1ldGVyKCk7IC8vIHx0aGlzfAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpOdW1iZXJPZkFyZ3VtZW50czsgKytpKQor
ICAgICAgICAgICAgaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKKyAgICAgICAgbV9nZW5lcmF0
b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFic3RyYWN0
TW9kdWxlUmVjb3JkOjpBcmd1bWVudDo6R2VuZXJhdG9yKV07CisgICAgfQorCiAgICAgZW1pdEVu
dGVyKCk7CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwpAQCAtOTU5LDcgKzk2OSw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIE1vZHVsZVByb2dy
YW1Ob2RlKiBtb2R1bGVQcm9ncmFtTm9kCiAgICAgCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJ
bmRleChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogCi0gICAgbV9jb2RlQmxvY2stPnNldE51bVBh
cmFtZXRlcnMoMSk7IC8vIEFsbG9jYXRlIHNwYWNlIGZvciAidGhpcyIKKyAgICBtX2NvZGVCbG9j
ay0+c2V0TnVtUGFyYW1ldGVycyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQWJzdHJhY3RNb2R1bGVS
ZWNvcmQ6OkFyZ3VtZW50OjpOdW1iZXJPZkFyZ3VtZW50cykgKyAxKTsgLy8gQWxsb2NhdGUgc3Bh
Y2UgZm9yICJ0aGlzIiArIGFzeW5jIG1vZHVsZSBhcmd1bWVudHMuCiAKICAgICAvLyBOb3cgZGVj
bGFyZSBhbGwgdmFyaWFibGVzLgogCkBAIC05ODMsMTEgKzk5MywxNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBNb2R1bGVQcm9ncmFtTm9kZSogbW9kdWxl
UHJvZ3JhbU5vZAogCiAgICAgLy8gV2Uga2VlcCB0aGUgc3ltYm9sIHRhYmxlIGluIHRoZSBjb25z
dGFudCBwb29sLgogICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGUgPSBudWxscHRy
OwotICAgIGlmIChzaG91bGRFbWl0VHlwZVByb2ZpbGVySG9va3MoKSkKKyAgICBpZiAoc2hvdWxk
RW1pdFR5cGVQcm9maWxlckhvb2tzKCkgfHwgbW9kdWxlUHJvZ3JhbU5vZGUtPnVzZXNBd2FpdCgp
KQogICAgICAgICBjb25zdGFudFN5bWJvbFRhYmxlID0gYWRkQ29uc3RhbnRWYWx1ZShtb2R1bGVF
bnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKICAgICBlbHNlCiAgICAgICAgIGNvbnN0YW50U3ltYm9s
VGFibGUgPSBhZGRDb25zdGFudFZhbHVlKG1vZHVsZUVudmlyb25tZW50U3ltYm9sVGFibGUtPmNs
b25lU2NvcGVQYXJ0KG1fdm0pKTsKIAorICAgIGlmIChtb2R1bGVQcm9ncmFtTm9kZS0+dXNlc0F3
YWl0KCkpIHsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldChtX3ZtLCBt
b2R1bGVFbnZpcm9ubWVudFN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXggPSBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpOworICAgICAgICBl
bWl0UHV0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3JSZWdpc3RlcigpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpGcmFtZSksIGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgcHVzaFREWlZhcmlhYmxlcyhsZXhpY2FsVmFyaWFi
bGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRl
clREWik7CiAgICAgYm9vbCBpc1dpdGhTY29wZSA9IGZhbHNlOwogICAgIG1fbGV4aWNhbFNjb3Bl
U3RhY2suYXBwZW5kKHsgbW9kdWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSwgbV90b3BNb3N0U2Nv
cGUsIGlzV2l0aFNjb3BlLCBjb25zdGFudFN5bWJvbFRhYmxlLT5pbmRleCgpIH0pOwpAQCAtMzcy
OSw3ICszNzQ1LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhFeHBy
ZXNzaW9uTm9kZSogZXhwcikKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFdpbGxMZWF2
ZUNhbGxGcmFtZURlYnVnSG9vaygpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9zY29wZU5vZGUt
PmlzRnVuY3Rpb25Ob2RlKCkpOwogICAgIGVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1l
LCBtX3Njb3BlTm9kZS0+bGFzdExpbmUoKSwgbV9zY29wZU5vZGUtPnN0YXJ0T2Zmc2V0KCksIG1f
c2NvcGVOb2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7CiB9CiAKQEAgLTQxODAsNyArNDE5NSw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmljRW51bWVyYXRpb24oVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEqIG5vZGUsIEV4CiB7CiAgICAgYm9vbCBpc0ZvckF3YWl0ID0gZm9yTG9v
cE5vZGUgPyBmb3JMb29wTm9kZS0+aXNGb3JBd2FpdCgpIDogZmFsc2U7CiAgICAgYXV0byBzaG91
bGRFbWl0QXdhaXQgPSBpc0ZvckF3YWl0ID8gRW1pdEF3YWl0OjpZZXMgOiBFbWl0QXdhaXQ6Ok5v
OwotICAgIEFTU0VSVCghaXNGb3JBd2FpdCB8fCBpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUocGFy
c2VNb2RlKCkpKTsKKyAgICBBU1NFUlQoIWlzRm9yQXdhaXQgfHwgKGlzQXN5bmNGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSkgfHwgaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKCkpKSk7
CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ViamVjdCA9IG5ld1RlbXBvcmFyeSgpOwogICAg
IGVtaXROb2RlKHN1YmplY3QuZ2V0KCksIHN1YmplY3ROb2RlKTsKQEAgLTQ3NDAsNyArNDc1NSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFy
Z3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOjpBCiAgICAgd2hpbGUgKG1fd3JpdGVyLnBvc2l0aW9u
KCkgJSBPcGNvZGVTaXplOjpXaWRlMzIpCiAgICAgICAgIE9wTm9wOjplbWl0PE9wY29kZVNpemU6
Ok5hcnJvdz4odGhpcyk7CiAjZW5kaWYKLSAgICBPcFlpZWxkOjplbWl0KHRoaXMsIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSwgeWllbGRQb2ludEluZGV4LCBhcmd1bWVudCk7CisgICAgT3BZaWVs
ZDo6ZW1pdCh0aGlzLCB5aWVsZFBvaW50SW5kZXgsIGFyZ3VtZW50KTsKIAogICAgIC8vIFJlc3Rv
cmUgdGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhl
IG1lcmdlIHBvaW50LgogICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0
U3RhY2spOwpAQCAtNDc1MywxMSArNDc2OCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2VuZXJhdG9yOgog
CiAgICAgUmVmPExhYmVsPiBub3JtYWxMYWJlbCA9IG5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGNvbmRpdGlvbiA9IG5ld1RlbXBvcmFyeSgpOwotICAgIGVtaXRFcXVhbGl0eU9w
PE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpKTsKKyAgICBlbWl0RXF1
YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJlc3VtZU1vZGVS
ZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgZW1pdEp1bXBJ
ZlRydWUoY29uZGl0aW9uLmdldCgpLCBub3JtYWxMYWJlbC5nZXQoKSk7CiAKICAgICBSZWY8TGFi
ZWw+IHRocm93TGFiZWwgPSBuZXdMYWJlbCgpOwotICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgIGVtaXRFcXVhbGl0eU9wPE9w
U3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yOjpSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOwogICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRp
dGlvbi5nZXQoKSwgdGhyb3dMYWJlbC5nZXQoKSk7CiAgICAgLy8gUmV0dXJuLgogICAgIHsKQEAg
LTQ5NDEsMTAgKzQ5NTYsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAg
ICAgICBSZWY8TGFiZWw+IHJldHVybkxhYmVsID0gbmV3TGFiZWwoKTsKICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBu
ZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6
OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSkpOworICAgICAgICAgICAgICAgICAg
ICBlbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25kaXRpb24uZ2V0KCksIGdlbmVyYXRvclJl
c3VtZU1vZGVSZWdpc3RlcigpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGNvbmRpdGlvbi5nZXQoKSwgbm9ybWFsTGFi
ZWwuZ2V0KCkpOwogCi0gICAgICAgICAgICAgICAgICAgIGVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0
ZXE+KGNvbmRpdGlvbi5nZXQoKSwgZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JSZXN1bWVNb2RlOjpSZXR1cm5Nb2RlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6OlJldHVybk1vZGUpKSkpOwogICAgICAg
ICAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShjb25kaXRpb24uZ2V0KCksIHJldHVybkxhYmVs
LmdldCgpKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBGYWxsdGhyb3VnaCB0byBUaHJvd01v
ZGUuCkBAIC01MDQ4LDkgKzUwNjMsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIAogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3Rh
dGUpCiB7CisgICAgLy8gRklYTUU6IEl0IHNlZW1zIGxpa2UgdGhpcyB3aWxsIGNyZWF0ZSBhIGxv
dCBvZiBjb25zdGFudHMgaWYgdGhlcmUgYXJlIG1hbnkgeWllbGQgcG9pbnRzLiBNYXliZSB3ZSBz
aG91bGQgb3BfaW5jIHRoZSBvbGQgc3RhdGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjIyNTQKICAgICBSZWdpc3RlcklEKiBjb21wbGV0ZWRTdGF0ZSA9IGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRlKSk7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkOjpTdGF0ZSkpOwotICAgIGVtaXRQdXRJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlKSwgY29tcGxldGVkU3RhdGUpOworICAgIGVtaXRQdXRJ
bnRlcm5hbEZpZWxkKGdlbmVyYXRvclJlZ2lzdGVyKCksIGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNl
TW9kZSgpKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihBYnN0cmFjdE1vZHVsZVJlY29yZDo6Rmll
bGQ6OlN0YXRlKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0dlbmVyYXRvcjo6RmllbGQ6OlN0
YXRlKSwgY29tcGxldGVkU3RhdGUpOwogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
SnVtcFZpYUZpbmFsbHlJZk5lZWRlZChpbnQgdGFyZ2V0TGFiZWxTY29wZURlcHRoLCBMYWJlbCYg
anVtcFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA5MTQyOGU5NjZlZjY0NDA4M2FjYjgxM2Q4NDcx
MTAxMWUwN2MxZjhmLi44NjFjMDlmMTI5OTExNmY2ZDhmNzliZjVlOWI1YzRlZDYxNjdhYTMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC0xMDU4LDEwICsxMDU4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBKU0FzeW5jR2Vu
ZXJhdG9yOjpBc3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb24gPSBKU0FzeW5jR2VuZXJhdG9yOjpB
c3luY0dlbmVyYXRvclN1c3BlbmRSZWFzb246OllpZWxkKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKik7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpH
ZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0
b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KLSAgICAgICAg
UmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yQXJndW1l
bnQ6OlJlc3VtZU1vZGUpXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJl
Z2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvcjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OkFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1bWVudDo6VmFsdWUpXTsg
fQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yOjpBcmd1
bWVudDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC0xMzI3LDYgKzEzMjcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZjxGb3JJbkNvbnRleHQ+PiBtX2Zv
ckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0
U3RhY2s7CiAgICAgICAgIHVuc2lnbmVkIG1feWllbGRQb2ludHMgeyAwIH07CisgICAgICAgIGJv
b2wgbV9pc0FzeW5jIHsgZmFsc2UgfTsKIAogICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKICAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDYzZjExYTE5MTE5OWY3Mjg3NTM1ZGM0
MTJlZTFmNDdmMjViNGM4ZDUuLjdlYWI0NTBjNzRjZGFlZDA1NjVlN2Q5MDU4NDQ5OWY3ODE4Yzg1
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgIk5vZGVDb25zdHJ1Y3RvcnMuaCIKIAorI2luY2x1ZGUgIkFic3RyYWN0TW9kdWxlUmVjb3Jk
LmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvckJhc2VJbmxpbmVzLmgiCkBAIC0xMzg5
LDYgKzEzOTAsMTUgQEAgc3RhdGljIEpTQXN5bmNHZW5lcmF0b3I6OkZpZWxkIGFzeW5jR2VuZXJh
dG9ySW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2RlSW50cmluc2kKICAgICByZXR1cm4gSlNBc3lu
Y0dlbmVyYXRvcjo6RmllbGQ6OlN0YXRlOwogfQogCitzdGF0aWMgQWJzdHJhY3RNb2R1bGVSZWNv
cmQ6OkZpZWxkIGFic3RyYWN0TW9kdWxlUmVjb3JkSW50ZXJuYWxGaWVsZEluZGV4KEJ5dGVjb2Rl
SW50cmluc2ljTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZS0+ZW50cnkoKS50eXBlKCkg
PT0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeTo6VHlwZTo6RW1pdHRlcik7CisgICAgaWYgKG5v
ZGUtPmVudHJ5KCkuZW1pdHRlcigpID09ICZCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50
cmluc2ljX2Fic3RyYWN0TW9kdWxlUmVjb3JkRmllbGRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGU7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OkZpZWxkOjpTdGF0
ZTsKK30KKwogc3RhdGljIEpTQXJyYXlJdGVyYXRvcjo6RmllbGQgYXJyYXlJdGVyYXRvckludGVy
bmFsRmllbGRJbmRleChCeXRlY29kZUludHJpbnNpY05vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJU
KG5vZGUtPmVudHJ5KCkudHlwZSgpID09IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OlR5cGU6
OkVtaXR0ZXIpOwpAQCAtMTQ3NCw2ICsxNDg0LDE5IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlSW50
cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QXN5bmNHZW5lcmF0b3JJbnRlcm5hbEZpZWxk
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0SW50ZXJuYWxGaWVsZChnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBpbmRleCk7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfZ2V0QWJzdHJhY3RNb2R1bGVS
ZWNvcmRJbnRlcm5hbEZpZWxkKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3RO
b2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25leHQ7CisgICAgUkVMRUFTRV9BU1NFUlQobm9kZS0+
bV9leHByLT5pc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihhYnN0cmFjdE1vZHVsZVJlY29yZEludGVybmFsRmllbGRJ
bmRleChzdGF0aWNfY2FzdDxCeXRlY29kZUludHJpbnNpY05vZGUqPihub2RlLT5tX2V4cHIpKSk7
CisgICAgQVNTRVJUKGluZGV4IDwgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6Om51bWJlck9mSW50ZXJu
YWxGaWVsZHMpOworICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKKworICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEludGVybmFsRmllbGQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSwgaW5kZXgpOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUludHJpbnNp
Y05vZGU6OmVtaXRfaW50cmluc2ljX2dldEFycmF5SXRlcmF0b3JJbnRlcm5hbEZpZWxkKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpAQCAtNDk0MCw3ICs0OTYzLDcg
QEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rlcigp
KTsKICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50
Q291bnQrKyksIGdlbmVyYXRvci5wcm9taXNlUmVnaXN0ZXIoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNVbmRl
ZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0
ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5l
cmF0b3I6OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNO
dW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJlc3VtZU1vZGU6Ok5vcm1h
bE1vZGUpKSk7CiAgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZz
ZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChm
aXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwogCkBAIC00OTU3
LDExICs0OTgwLDExIEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIFJlZjxMYWJlbD4gZ2Vu
ZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjb25kaXRpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4o
Y29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCks
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEVxdWFsaXR5T3A8T3BTdHJpY3RlcT4oY29uZGl0aW9uLmdl
dCgpLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCksIGdlbmVyYXRvci5l
bWl0TG9hZChudWxscHRyLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
cjo6UmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEp1bXBJZlRydWUoY29uZGl0aW9uLmdldCgpLCBnZW5lcmF0b3JCb2R5TGFiZWwuZ2V0KCkpOwog
CiAgICAgICAgICAgICBSZWY8TGFiZWw+IHRocm93TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwo
KTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXF1YWxpdHlPcDxPcFN0cmljdGVxPihjb25k
aXRpb24uZ2V0KCksIGdlbmVyYXRvci5nZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpUaHJvd01vZGUpKSkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFcXVhbGl0eU9wPE9wU3RyaWN0ZXE+KGNvbmRpdGlvbi5nZXQoKSwg
Z2VuZXJhdG9yLmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpLCBnZW5lcmF0b3IuZW1pdExv
YWQobnVsbHB0ciwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3I6OlJl
c3VtZU1vZGU6OlRocm93TW9kZSkpKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJ
ZlRydWUoY29uZGl0aW9uLmdldCgpLCB0aHJvd0xhYmVsLmdldCgpKTsKIAogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAppbmRleCA3ZWY5NTkxOTk1Y2VkZWVlYzdlMTZkNjgwYzI3ZGJmYTQ5OTIwNWRjLi5hZDFiMTk1
Y2JjODUzMmNmZTZlNjY0YmJkMjMwYmYyYTc0ZTgwODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCisjaW5jbHVk
ZSAiQWJzdHJhY3RNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplci5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUNs
b3N1cmUuaCIKQEAgLTQ5LDYgKzUwLDcgQEAKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZs
eS5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgogI2luY2x1ZGUgIkxpdGVyYWxQ
YXJzZXIuaCIKQEAgLTEyMDEsNyArMTIwMyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1
dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsCiAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotSlNWYWx1ZSBJbnRlcnByZXRl
cjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0oTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU01vZHVsZUVudmlyb25t
ZW50KiBzY29wZSkKK0pTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKEpT
TW9kdWxlUmVjb3JkKiByZWNvcmQsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxl
LCBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNNb2R1bGVFbnZpcm9ubWVu
dCogc2NvcGUsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAg
Vk0mIHZtID0gc2NvcGUtPnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CkBAIC0xMjMxLDYgKzEyMzMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpl
eGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwg
SgogICAgIGlmIChzY29wZS0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KSkKICAgICAgICAgc2NvcGUtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZtKTsKIAorICAgIGNv
bnN0IHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFi
c3RyYWN0TW9kdWxlUmVjb3JkOjpBcmd1bWVudDo6TnVtYmVyT2ZBcmd1bWVudHMpOwogICAgIEpT
Q2FsbGVlKiBjYWxsZWUgPSBKU0NhbGxlZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNjb3Bl
KTsKICAgICBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7CiAgICAgewpAQCAtMTI0
MCw3ICsxMjQzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYW0o
TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEoKICAgICAgICAgaWYgKFVOTElL
RUxZKCEhY29tcGlsZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNv
bXBpbGVFcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxNb2R1bGVQcm9ncmFtQ29k
ZUJsb2NrKj4odGVtcENvZGVCbG9jayk7Ci0gICAgICAgIEFTU0VSVChjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA9PSAxKTsgLy8gMSBwYXJhbWV0ZXIgZm9yICd0aGlzJy4KKyAgICAgICAgQVNT
RVJUKGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpID09IG51bWJlck9mQXJndW1lbnRzICsgMSk7
CiAgICAgfQogCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGU7CkBAIC0xMjQ4LDEyICsxMjUx
LDIyIEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGVNb2R1bGVQcm9ncmFtKE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKCiAgICAgewogICAgICAgICBEaXNhbGxvd0dD
IGRpc2FsbG93R0M7IC8vIEVuc3VyZSBubyBHQyBoYXBwZW5zLiBHQyBjYW4gcmVwbGFjZSBDb2Rl
QmxvY2sgaW4gRXhlY3V0YWJsZS4KICAgICAgICAgaml0Q29kZSA9IGV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGUoKTsKKworICAgICAgICBKU1ZhbHVlIGFyZ3NbbnVtYmVyT2ZBcmd1bWVudHNd
ID0geworICAgICAgICAgICAgcmVjb3JkLAorICAgICAgICAgICAgcmVjb3JkLT5pbnRlcm5hbEZp
ZWxkKEpTTW9kdWxlUmVjb3JkOjpGaWVsZDo6U3RhdGUpLmdldCgpLAorICAgICAgICAgICAgc2Vu
dFZhbHVlLAorICAgICAgICAgICAgcmVzdW1lTW9kZSwKKyAgICAgICAgICAgIHNjb3BlLAorICAg
ICAgICB9OwogICAgICAgICAvLyBUaGUgfHRoaXN8IG9mIHRoZSBtb2R1bGUgaXMgYWx3YXlzIGB1
bmRlZmluZWRgLgogICAgICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLWVudmlyb25tZW50LXJlY29yZHMtaGFzdGhpc2JpbmRp
bmcKICAgICAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLW1vZHVsZS1lbnZpcm9ubWVudC1yZWNvcmRzLWdldHRoaXNiaW5kaW5nCi0gICAg
ICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGNhbGxlZSwg
anNVbmRlZmluZWQoKSwgMSk7CisgICAgICAgIHByb3RvQ2FsbEZyYW1lLmluaXQoY29kZUJsb2Nr
LCBnbG9iYWxPYmplY3QsIGNhbGxlZSwganNVbmRlZmluZWQoKSwgbnVtYmVyT2ZBcmd1bWVudHMg
KyAxLCBhcmdzKTsKICAgICB9CiAKKyAgICByZWNvcmQtPmludGVybmFsRmllbGQoSlNNb2R1bGVS
ZWNvcmQ6OkZpZWxkOjpTdGF0ZSkuc2V0KHZtLCByZWNvcmQsIGpzTnVtYmVyKHN0YXRpY19jYXN0
PGludD4oSlNNb2R1bGVSZWNvcmQ6OlN0YXRlOjpFeGVjdXRpbmcpKSk7CisKICAgICAvLyBFeGVj
dXRlIHRoZSBjb2RlOgogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIEFTU0VSVChqaXRD
b2RlID09IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKS5wdHIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDRmOGJjNzg1
YzUzYjNkY2ViYWYyNTIzM2JhODUwZGI1MmFkNDFmYzUuLjBjM2VmZTEyZTUxMDUzODhmNmNmMjg1
MTFkOWVhNWU0ZWFmMzA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZW5kaWYKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVQcm9ncmFtKGNvbnN0IFNvdXJjZUNvZGUm
LCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiB0aGlzT2JqKTsKLSAgICAgICAgSlNWYWx1ZSBl
eGVjdXRlTW9kdWxlUHJvZ3JhbShNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNNb2R1bGVFbnZpcm9ubWVudCopOworICAgICAgICBKU1ZhbHVlIGV4ZWN1dGVNb2R1
bGVQcm9ncmFtKEpTTW9kdWxlUmVjb3JkKiwgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqLCBKU0ds
b2JhbE9iamVjdCosIEpTTW9kdWxlRW52aXJvbm1lbnQqLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNW
YWx1ZSByZXN1bWVNb2RlKTsKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlQ2FsbChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBKU1ZhbHVlIHRoaXNW
YWx1ZSwgY29uc3QgQXJnTGlzdCYpOwogICAgICAgICBKU09iamVjdCogZXhlY3V0ZUNvbnN0cnVj
dChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBmdW5jdGlvbiwgY29uc3QgQ2FsbERhdGEmLCBj
b25zdCBBcmdMaXN0JiwgSlNWYWx1ZSBuZXdUYXJnZXQpOwogICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGUoRXZhbEV4ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGhpc1ZhbHVlLCBK
U1Njb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IDQ5MTBmYzdjZGFmYzViYTg3Y2YyODkzNGNhMjMzYTRmOGJjNmQ3MjMuLjU3ZDg3YmZhYTFmZTJj
YWVmYTg3Nzg2MzNlMWMzMjlhN2FlZTgyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC00MDAsNiArNDAwLDcgQEAgcHVibGljOgogICAgIEF3YWl0RXhw
ck5vZGUqIGNyZWF0ZUF3YWl0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBhcmd1bWVudCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoYXJndW1lbnQpOworICAgICAgICB1c2VzQXdhaXQoKTsKICAgICAgICAg
QXdhaXRFeHByTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXdhaXRFeHByTm9kZShs
b2NhdGlvbiwgYXJndW1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBz
dGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwpAQCAtMTA5OSw2ICsxMTAw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zY29wZS5tX2ZlYXR1cmVzIHw9IEV2YWxGZWF0dXJl
OwogICAgIH0KICAgICB2b2lkIHVzZXNOZXdUYXJnZXQoKSB7IG1fc2NvcGUubV9mZWF0dXJlcyB8
PSBOZXdUYXJnZXRGZWF0dXJlOyB9CisgICAgdm9pZCB1c2VzQXdhaXQoKSB7IG1fc2NvcGUubV9m
ZWF0dXJlcyB8PSBBd2FpdEZlYXR1cmU7IH0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlSW50
ZWdlckxpa2VOdW1iZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91YmxlIGQp
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbnRlZ2VyTm9kZShs
b2NhdGlvbiwgZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDAy
Yjc4NzVjY2FmNmFmZjY2M2FjMWVlZjVhZGRiOGRiZDM0MDkzNzcuLmE4NDk1ZDExNTBjODhhOWVh
ZjlkNzRhMzFhYWViZWVhMjcxZTk5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCkBAIC0xNzcsNiArMTc3LDcgQEAgTW9kdWxlUHJvZ3JhbU5vZGU6Ok1vZHVsZVByb2dy
YW1Ob2RlKFBhcnNlckFyZW5hJiBwYXJzZXJBcmVuYSwgY29uc3QgSlNUb2tlbkxvY2EKICAgICA6
IFNjb3BlTm9kZShwYXJzZXJBcmVuYSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHNvdXJj
ZSwgY2hpbGRyZW4sIHZhckVudmlyb25tZW50LCBXVEZNb3ZlKGZ1bmNTdGFjayksIGxleGljYWxW
YXJpYWJsZXMsIFdURk1vdmUoc2xvcHB5TW9kZUhvaXN0ZWRGdW5jdGlvbnMpLCBmZWF0dXJlcywg
aW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzLCBudW1Db25zdGFudHMpCiAgICAgLCBtX3N0
YXJ0Q29sdW1uKHN0YXJ0Q29sdW1uKQogICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQorICAg
ICwgbV91c2VzQXdhaXQoZmVhdHVyZXMgJiBBd2FpdEZlYXR1cmUpCiAgICAgLCBtX21vZHVsZVNj
b3BlRGF0YSgqV1RGTW92ZShtb2R1bGVTY29wZURhdGEpKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IDA1YzE4ZWFkZjI0OTAwNTYwNTlhNGJjY2NlMTVhYmU1YWZk
NDkxNmIuLmI4YTcxNmUwMDQwOWNlYjkwYTFjOGFmODdmOWM2MWI2MzE2M2ZlZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE5OTAsNiArMTk5MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1cm4g
bV9zdGFydENvbHVtbjsgfQogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJl
dHVybiBtX2VuZENvbHVtbjsgfQorICAgICAgICBib29sIHVzZXNBd2FpdCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc0F3YWl0OyB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNjb3Bl
SXNGdW5jdGlvbiA9IGZhbHNlOwogCkBAIC0yMDAyLDYgKzIwMDMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IG51bGxwdHIpIGZpbmFsOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwog
ICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKKyAgICAgICAgYm9vbCBtX3VzZXNBd2FpdDsK
ICAgICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGU5NWFjMDFlYzNl
MmM5YWM1MDJkODRmYzkwYzEyMjU3MDUyMGYxZjUuLjI5MDc1ZjIxMWMwZGU4N2RkNjQ0ZDBjZDRl
OTMxNzc2YzNmZjM4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
QEAgLTIwOSw2ICsyMDksMTEgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogewogfQog
Cit2b2lkIEpTVG9rZW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQu
cHJpbnQoKm1fZGF0YS5jb29rZWQpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJSZXN1bHQs
IFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYg
Y2FsbGVlTmFtZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVjdG9yPEpT
VGV4dFBvc2l0aW9uPiogY2xhc3NGaWVsZExvY2F0aW9ucykKIHsKQEAgLTEzNTIsNyArMTM1Nyw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgbV9zdGF0ZW1lbnREZXB0aCsrOwogCiAg
ICAgaWYgKG1hdGNoKEFXQUlUKSkgewotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJl
bnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSwgImZvci1hd2FpdC1vZiBjYW4gb25seSBiZSB1
c2VkIGluIGFuIGFzeW5jIGZ1bmN0aW9uIG9yIGFzeW5jIGdlbmVyYXRvciIpOworICAgICAgICBz
ZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSB8fCAo
aXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpICYmIE9wdGlvbnM6OnVzZVRvcExl
dmVsQXdhaXQoKSksICJmb3ItYXdhaXQtb2YgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBhc3luYyBm
dW5jdGlvbiBvciBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgaXNBd2FpdEZvciA9IHRydWU7
CiAgICAgICAgIG5leHQoKTsKICAgICB9CkBAIC00MTQ0LDcgKzQxNDksOCBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24oVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEFXQUlUKSk7Ci0gICAgQVNTRVJUKGN1
cnJlbnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSk7CisgICAgQVNTRVJUKGN1cnJlbnRTY29w
ZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSB8fCBpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1v
ZGUoKSkpOworICAgIEFTU0VSVChpc0FzeW5jRnVuY3Rpb25QYXJzZU1vZGUoc291cmNlUGFyc2VN
b2RlKCkpIHx8IGlzTW9kdWxlUGFyc2VNb2RlKHNvdXJjZVBhcnNlTW9kZSgpKSk7CiAgICAgQVNT
RVJUKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlICE9IEZ1bmN0aW9uUGFyc2VQaGFz
ZTo6UGFyYW1ldGVycyk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwpAQCAtNDgxNCw3ICs0ODIwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICBj
YXNlIEFXQUlUOgogICAgICAgICBpZiAobV9wYXJzZXJTdGF0ZS5mdW5jdGlvblBhcnNlUGhhc2Ug
PT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzKQogICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZGYWxzZShtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQsICJDYW5ub3QgdXNlICdhd2FpdCcg
d2l0aGluIGEgcGFyYW1ldGVyIGRlZmF1bHQgZXhwcmVzc2lvbiIpOwotICAgICAgICBlbHNlIGlm
IChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpKQorICAg
ICAgICBlbHNlIGlmIChjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pc0FzeW5jRnVuY3Rpb25Cb3Vu
ZGFyeSgpIHx8IChpc01vZHVsZVBhcnNlTW9kZShzb3VyY2VQYXJzZU1vZGUoKSkgJiYgT3B0aW9u
czo6dXNlVG9wTGV2ZWxBd2FpdCgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUF3YWl0RXhw
cmVzc2lvbihjb250ZXh0KTsKIAogICAgICAgICBnb3RvIGlkZW50aWZpZXJFeHByZXNzaW9uOwpA
QCAtNTMzOCw3ICs1MzQ0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBib29sIGhh
c1ByZWZpeFVwZGF0ZU9wID0gZmFsc2U7CiAgICAgdW5zaWduZWQgbGFzdE9wZXJhdG9yID0gMDsK
IAotICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkgJiYgY3VycmVudEZ1bmN0aW9uU2NvcGUo
KS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgaWYgKFVOTElLRUxZKG1hdGNoKEFX
QUlUKSAmJiAoY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uQm91bmRhcnko
KSB8fCAoaXNNb2R1bGVQYXJzZU1vZGUoc291cmNlUGFyc2VNb2RlKCkpKSAmJiBPcHRpb25zOjp1
c2VUb3BMZXZlbEF3YWl0KCkpKSkKICAgICAgICAgcmV0dXJuIHBhcnNlQXdhaXRFeHByZXNzaW9u
KGNvbnRleHQpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggMWNk
YWZjNTg1OTI2MDc2Y2YxM2I2MzhmYTIxNjI3ZDJmNzU1ZGI2NC4uOTYzMzRiYmVhNThhMDE2ZmFm
YWQzZjI5NmVjMDg2OTRlMjAwYTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaApAQCAtMzIyLDggKzMyMiw5IEBAIGNvbnN0IENvZGVGZWF0dXJlcyBTdXBl
clByb3BlcnR5RmVhdHVyZSA9ICAgICAgICAgIDEgPDwgOTsKIGNvbnN0IENvZGVGZWF0dXJlcyBO
ZXdUYXJnZXRGZWF0dXJlID0gICAgICAgICAgICAgIDEgPDwgMTA7CiBjb25zdCBDb2RlRmVhdHVy
ZXMgTm9FdmFsQ2FjaGVGZWF0dXJlID0gICAgICAgICAgICAxIDw8IDExOwogY29uc3QgQ29kZUZl
YXR1cmVzIE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlID0gMSA8PCAxMjsKK2NvbnN0IENv
ZGVGZWF0dXJlcyBBd2FpdEZlYXR1cmUgPSAgICAgICAgICAgICAgICAgIDEgPDwgMTM7CiAKLWNv
bnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0dXJlIHwgQXJndW1lbnRzRmVh
dHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBTdHJpY3RNb2RlRmVhdHVyZSB8IFNo
YWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBBcnJvd0Z1bmN0
aW9uQ29udGV4dEZlYXR1cmUgfCBTdXBlckNhbGxGZWF0dXJlIHwgU3VwZXJQcm9wZXJ0eUZlYXR1
cmUgfCBOZXdUYXJnZXRGZWF0dXJlIHwgTm9FdmFsQ2FjaGVGZWF0dXJlIHwgTm9uU2ltcGxlUGFy
YW1ldGVyTGlzdEZlYXR1cmU7Citjb25zdCBDb2RlRmVhdHVyZXMgQWxsRmVhdHVyZXMgPSBFdmFs
RmVhdHVyZSB8IEFyZ3VtZW50c0ZlYXR1cmUgfCBXaXRoRmVhdHVyZSB8IFRoaXNGZWF0dXJlIHwg
U3RyaWN0TW9kZUZlYXR1cmUgfCBTaGFkb3dzQXJndW1lbnRzRmVhdHVyZSB8IEFycm93RnVuY3Rp
b25GZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkNvbnRleHRGZWF0dXJlIHwgU3VwZXJDYWxsRmVhdHVy
ZSB8IFN1cGVyUHJvcGVydHlGZWF0dXJlIHwgTmV3VGFyZ2V0RmVhdHVyZSB8IE5vRXZhbENhY2hl
RmVhdHVyZSB8IE5vblNpbXBsZVBhcmFtZXRlckxpc3RGZWF0dXJlIHwgQXdhaXRGZWF0dXJlOwog
CiB0eXBlZGVmIHVpbnQ4X3QgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggYTIxOTE3
MjRlMDQ1MWU0NmU0ZjgyODgxMGM3ZGJlM2ZhOWI3ZWI2NS4uZGU2N2E0MGJjNTUwYmU3NzY3OTg0
MmE4ZjNmNjlkZGE5NzlhYjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCkBAIC0yODMsNiArMjgzLDggQEAgc3RydWN0IEpTVG9rZW4gewogICAgIEpT
VG9rZW5Mb2NhdGlvbiBtX2xvY2F0aW9uOwogICAgIEpTVGV4dFBvc2l0aW9uIG1fc3RhcnRQb3Np
dGlvbjsKICAgICBKU1RleHRQb3NpdGlvbiBtX2VuZFBvc2l0aW9uOworCisgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CiB9OwogCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVcGRhdGVP
cChKU1Rva2VuVHlwZSB0b2tlbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAppbmRleCBjNzNkYTUxNDJhMzdjZDNlYjQ1
NjQ1ZGRlYjVmYzNjODc3NjBmNTQ2Li40NWYyYjQxOTY2ZGRjYzRlZDcxNjBmYjhiMWU5MGMxNjBk
ZDdmMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFj
dE1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJz
dHJhY3RNb2R1bGVSZWNvcmQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0ludGVybmFsRmllbGRP
YmplY3RJbXBsSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNb2R1
bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCkBA
IC01Myw2ICs1NCwxMSBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpmaW5pc2hDcmVhdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKKyAgICBh
dXRvIHZhbHVlcyA9IGluaXRpYWxWYWx1ZXMoKTsKKyAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA9
PSBudW1iZXJPZkludGVybmFsRmllbGRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB2YWx1ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBCYXNlOjppbnRlcm5hbEZp
ZWxkKGluZGV4KS5zZXQodm0sIHRoaXMsIHZhbHVlc1tpbmRleF0pOworCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3Jl
YXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAg
IHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwpAQCAtODA4LDcgKzgxNCw3IEBAIHZv
aWQgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OnNldE1vZHVsZUVudmlyb25tZW50KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIHRo
aXMsIG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6
bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIp
CitTeW5jaHJvbm91c25lc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBpZiAoYXV0byoganNNb2R1bGVSZWNvcmQgPSBqc0R5
bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQpAQCAtODE4LDEzICs4MjQsMTQg
QEAgdm9pZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGMKICAgICAgICAgcmV0dXJuIHdhc21Nb2R1bGVSZWNv
cmQtPmxpbmsoZ2xvYmFsT2JqZWN0LCBzY3JpcHRGZXRjaGVyLCBudWxscHRyLCBXYXNtOjpDcmVh
dGlvbk1vZGU6OkZyb21Nb2R1bGVMb2FkZXIpOwogI2VuZGlmCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwogfQogCi1K
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpldmFsdWF0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBB
YnN0cmFjdE1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgaWYgKGF1dG8qIGpzTW9kdWxlUmVjb3JkID0ganNE
eW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KHZtLCB0aGlzKSkKLSAgICAgICAgcmV0dXJuIGpz
TW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4ganNN
b2R1bGVSZWNvcmQtPmV2YWx1YXRlKGdsb2JhbE9iamVjdCwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
KTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKGF1dG8qIHdhc21Nb2R1bGVSZWNv
cmQgPSBqc0R5bmFtaWNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4odm0sIHRoaXMpKQog
ICAgICAgICByZXR1cm4gd2FzbU1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxl
UmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJl
Y29yZC5oCmluZGV4IDQzMWI5M2NkZTFlMDQyOGJmMTUyMGY3NGUxOGQ0NTUwYjRkZTFiNDYuLmY0
MTAyZWNhNmJiZTg1NDQ2ZGI4MWY2MzRmMGFkYjI5ODM1NjViOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuaApAQCAtMjYs
NyArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCi0jaW5j
bHVkZSAiSlNEZXN0cnVjdGlibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCIKICNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNywxMCArMzgsMTAgQEAgY2xhc3Mg
SlNNYXA7CiAKIC8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3JkCiAvLyBo
dHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc291cmNl
LXRleHQtbW9kdWxlLXJlY29yZHMKLWNsYXNzIEFic3RyYWN0TW9kdWxlUmVjb3JkIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgQWJzdHJhY3RNb2R1bGVSZWNvcmQgOiBwdWJsaWMg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PiB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw0PjsKIAogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKIApAQCAtNTAs
NiArNTEsMjggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIAorICAgIHVzaW5nIEFyZ3VtZW50ID0gSlNHZW5lcmF0b3I6OkFyZ3VtZW50Owor
ICAgIHVzaW5nIFN0YXRlID0gSlNHZW5lcmF0b3I6OlN0YXRlOworICAgIHVzaW5nIFJlc3VtZU1v
ZGUgPSBKU0dlbmVyYXRvcjo6UmVzdW1lTW9kZTsKKworICAgIGVudW0gY2xhc3MgRmllbGQgOiB1
aW50MzJfdCB7CisgICAgICAgIFN0YXRlLAorICAgICAgICBOZXh0LAorICAgICAgICBUaGlzLAor
ICAgICAgICBGcmFtZSwKKyAgICB9OworCisgICAgc3RhdGljX2Fzc2VydChudW1iZXJPZkludGVy
bmFsRmllbGRzID09IDQpOworICAgIHN0YXRpYyBzdGQ6OmFycmF5PEpTVmFsdWUsIG51bWJlck9m
SW50ZXJuYWxGaWVsZHM+IGluaXRpYWxWYWx1ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsg
eworICAgICAgICAgICAganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6OkluaXQp
KSwKKyAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICBqc1VuZGVmaW5lZCgp
LAorICAgICAgICAgICAganNVbmRlZmluZWQoKSwKKyAgICAgICAgfSB9OworICAgIH0KKwogICAg
IC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNvdXJjZS10ZXh0LW1vZHVs
ZS1yZWNvcmRzCiAgICAgc3RydWN0IEV4cG9ydEVudHJ5IHsKICAgICAgICAgZW51bSBjbGFzcyBU
eXBlIHsKQEAgLTEyOSw4ICsxNTIsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9tb2R1
bGVFbnZpcm9ubWVudC5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIGxpbmsoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFs
dWUgZXZhbHVhdGUoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGluayhK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgc2VudFZhbHVl
LCBKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgaW50ZXJu
YWxGaWVsZChGaWVsZCBmaWVsZCkgeyByZXR1cm4gQmFzZTo6aW50ZXJuYWxGaWVsZChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZmllbGQpKTsgfQorICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBpbnRl
cm5hbEZpZWxkKEZpZWxkIGZpZWxkKSBjb25zdCB7IHJldHVybiBCYXNlOjppbnRlcm5hbEZpZWxk
KHN0YXRpY19jYXN0PHVpbnQzMl90PihmaWVsZCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBBYnN0
cmFjdE1vZHVsZVJlY29yZChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNHZW5lcmF0b3IuaAppbmRl
eCAzZjNiMDRlNWMyNzU2ZjUyY2VjODdmMmI1YzU5MWY4NGM0MGU1ZGFkLi5kZDQxNTY1ODU3YWUy
OGYzMGNhMGI3Y2U4NDc4ODljMzIxOGQxNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBc3luY0dlbmVyYXRvci5oCkBAIC01NCw4ICs1NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgU3VzcGVuZGVkWWllbGQgPSAtNCwKICAgICAgICAgQXdhaXRpbmdSZXR1cm4gPSAt
NSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNH
ZW5lcmF0b3JTdGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvcjo6R2VuZXJhdG9yU3RhdGU6OkNvbXBsZXRlZCkpOwotICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6R2VuZXJhdG9yU3RhdGU6OkV4ZWN1dGluZykp
OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oQXN5bmNHZW5lcmF0b3JT
dGF0ZTo6Q29tcGxldGVkKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvcjo6U3Rh
dGU6OkNvbXBsZXRlZCkpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
QXN5bmNHZW5lcmF0b3JTdGF0ZTo6RXhlY3V0aW5nKSA9PSBzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvcjo6U3RhdGU6OkV4ZWN1dGluZykpOwogCiAgICAgZW51bSBjbGFzcyBBc3luY0dl
bmVyYXRvclN1c3BlbmRSZWFzb24gOiBpbnQzMl90IHsKICAgICAgICAgTm9uZSA9IDAsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3IuaAppbmRleCA3ODE2NjY5MjRj
YTQyM2Q3Y2RhNWZkZjZhMDM0MGEwNDI3NTdmMTBkLi4yNTc2MTAyZjU0YzliMTc1YzQ3NmJhNzE3
MTU1Y2ZlM2VkMDEwMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yLmgKQEAgLTQ2LDI2ICs0NiwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB2bS5n
ZW5lcmF0b3JTcGFjZTxtb2RlPigpOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgR2VuZXJhdG9y
UmVzdW1lTW9kZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgUmVzdW1lTW9kZSA6IGludDMy
X3QgewogICAgICAgICBOb3JtYWxNb2RlID0gMCwKICAgICAgICAgUmV0dXJuTW9kZSA9IDEsCiAg
ICAgICAgIFRocm93TW9kZSA9IDIKICAgICB9OwogCi0gICAgZW51bSBjbGFzcyBHZW5lcmF0b3JT
dGF0ZSA6IGludDMyX3QgeworICAgIGVudW0gY2xhc3MgU3RhdGUgOiBpbnQzMl90IHsKICAgICAg
ICAgQ29tcGxldGVkID0gLTEsCiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgICAgICBJbml0
ID0gMCwKICAgICB9OwogCiAgICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3Rh
dGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFt
ZS4KLSAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgZW51
bSBjbGFzcyBBcmd1bWVudCA6IGludDMyX3QgewogICAgICAgICBUaGlzVmFsdWUgPSAwLAogICAg
ICAgICBHZW5lcmF0b3IgPSAxLAogICAgICAgICBTdGF0ZSA9IDIsCiAgICAgICAgIFZhbHVlID0g
MywKICAgICAgICAgUmVzdW1lTW9kZSA9IDQsCiAgICAgICAgIEZyYW1lID0gNSwKKyAgICAgICAg
TnVtYmVyT2ZBcmd1bWVudHMgPSBGcmFtZSwKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBGaWVs
ZCA6IHVpbnQzMl90IHsKQEAgLTgyLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIHsgewogICAgICAgICAgICAganNOdWxsKCksCi0gICAgICAgICAgICBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihHZW5lcmF0b3JTdGF0ZTo6SW5pdCkpLAorICAgICAgICAgICAg
anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oU3RhdGU6OkluaXQpKSwKICAgICAgICAgICAg
IGpzVW5kZWZpbmVkKCksCiAgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAogICAgICAgICAgICAg
anNVbmRlZmluZWQoKSwKQEAgLTEwMSw0ICsxMDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKK09WRVJMT0FEX1JFTEFUSU9OQUxfT1BFUkFUT1JTX0ZP
Ul9FTlVNX0NMQVNTX1dJVEhfSU5URUdSQUxTKEpTR2VuZXJhdG9yOjpBcmd1bWVudCk7CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggZDVkNDM2YzI2MWVlODNlMTgwMDZkYzliM2IzNTI4M2M3Y2VhYmYx
My4uM2U5YmQ2MjQ1OTMzMWI4YTUxNjI2MjIzMTQ5OGFkZjJlMTEzNzI1OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yMzAsNyArMjMw
LDcgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKICAgICB0eXBlZGVmIEpTT2Jq
ZWN0KiAoKk1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzUHRyKShKU0dsb2Jh
bE9iamVjdCosIEpTTW9kdWxlTG9hZGVyKiwgSlNWYWx1ZSwgSlNNb2R1bGVSZWNvcmQqLCBKU1Zh
bHVlKTsKICAgICBNb2R1bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllc1B0ciBtb2R1
bGVMb2FkZXJDcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllczsKIAotICAgIHR5cGVkZWYgSlNWYWx1
ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEpTTW9kdWxlTG9h
ZGVyKiwgSlNWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAgdHlwZWRlZiBKU1ZhbHVlICgq
TW9kdWxlTG9hZGVyRXZhbHVhdGVQdHIpKEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVMb2FkZXIq
LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwgSlNWYWx1ZSBzY3JpcHRG
ZXRjaGVyLCBKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKICAgICBN
b2R1bGVMb2FkZXJFdmFsdWF0ZVB0ciBtb2R1bGVMb2FkZXJFdmFsdWF0ZTsKIAogICAgIHR5cGVk
ZWYgdm9pZCAoKlByb21pc2VSZWplY3Rpb25UcmFja2VyUHRyKShKU0dsb2JhbE9iamVjdCosIEpT
UHJvbWlzZSosIEpTUHJvbWlzZVJlamVjdGlvbk9wZXJhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5kZXggNzdiYjJiMGI1OWQ3
ZDZmYmY2MDU2OTc3MGM1YzZjMjkyODRiNDJjOS4uNzcxMGZkMzA3MjMyNDc4MTUyYzU1YTQwNDE3
MDEzNjJhY2Q3ZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTG9hZGVyLmNwcApAQCAtMzA3LDIwICszMDcsMjAgQEAgSlNPYmplY3QqIEpTTW9kdWxl
TG9hZGVyOjpjcmVhdGVJbXBvcnRNZXRhUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWMKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgp
LCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CiB9CiAKLUpT
VmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlLCBKU1ZhbHVlIHNjcmlw
dEZldGNoZXIpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSwg
SlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVN
b2RlKQogewogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUo
KSwgIkxvYWRlciBbZXZhbHVhdGVdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxPYmplY3Qs
IGtleSkpOwogCiAgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+bW9kdWxlTG9hZGVyRXZhbHVhdGUpCi0gICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVj
dCwgdGhpcywga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlcik7CisgICAgICAg
IHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxv
YWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgdGhpcywga2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwg
c2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKIAotICAgIHJldHVybiBldmFs
dWF0ZU5vblZpcnR1YWwoZ2xvYmFsT2JqZWN0LCBrZXksIG1vZHVsZVJlY29yZFZhbHVlLCBzY3Jp
cHRGZXRjaGVyKTsKKyAgICByZXR1cm4gZXZhbHVhdGVOb25WaXJ0dWFsKGdsb2JhbE9iamVjdCwg
a2V5LCBtb2R1bGVSZWNvcmRWYWx1ZSwgc2NyaXB0RmV0Y2hlciwgc2VudFZhbHVlLCByZXN1bWVN
b2RlKTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZUxvYWRlcjo6ZXZhbHVhdGVOb25WaXJ0dWFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTVmFsdWUgbW9kdWxlUmVjb3Jk
VmFsdWUsIEpTVmFsdWUpCitKU1ZhbHVlIEpTTW9kdWxlTG9hZGVyOjpldmFsdWF0ZU5vblZpcnR1
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNWYWx1ZSBtb2R1bGVS
ZWNvcmRWYWx1ZSwgSlNWYWx1ZSwgSlNWYWx1ZSBzZW50VmFsdWUsIEpTVmFsdWUgcmVzdW1lTW9k
ZSkKIHsKICAgICBpZiAoYXV0byogbW9kdWxlUmVjb3JkID0ganNEeW5hbWljQ2FzdDxBYnN0cmFj
dE1vZHVsZVJlY29yZCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgbW9kdWxlUmVjb3JkVmFsdWUpKQot
ICAgICAgICByZXR1cm4gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QpOworICAg
ICAgICByZXR1cm4gbW9kdWxlUmVjb3JkLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIHNlbnRWYWx1
ZSwgcmVzdW1lTW9kZSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTM2NSw2
ICszNjUsOCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04obW9kdWxlTG9hZGVyUGFyc2VNb2R1
bGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU1dlYkFzc2VtYmx5OjppbnN0YW50aWF0ZShn
bG9iYWxPYmplY3QsIHByb21pc2UsIG1vZHVsZUtleSwganNTb3VyY2VDb2RlKSkpOwogI2VuZGlm
CiAKKyAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRlKCksICJs
b2FkZXIgW3BhcnNpbmddICIsIG1vZHVsZUtleSk7CisKICAgICBQYXJzZXJFcnJvciBlcnJvcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2Rl
ID0gcGFyc2U8TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICB2bSwgc291cmNlQ29kZSwgSWRl
bnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLApAQCAtNDA5LDEwICs0
MTEsMTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlck1vZHVsZURlY2xh
cmF0aW9uSW5zdGFudGlhdGlvbiwgKEpTR2xvYmFsT2IKIAogICAgIGRhdGFMb2dMbklmKE9wdGlv
bnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSwgIkxvYWRlciBbbGlua10gIiwgbW9kdWxlUmVj
b3JkLT5tb2R1bGVLZXkoKSk7CiAKLSAgICBtb2R1bGVSZWNvcmQtPmxpbmsoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIHN5bmMgPSBtb2R1bGVSZWNvcmQt
PmxpbmsoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oc3luYyA9PSBTeW5jaHJvbm91c25lc3M6OkFzeW5jKSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQ4MSw3ICs0ODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
bW9kdWxlTG9hZGVyRXZhbHVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYQog
ICAgIEpTTW9kdWxlTG9hZGVyKiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlTG9hZGVy
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9hZGVyKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMikp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZhbHVhdGUoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDMpLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDQpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmgKaW5kZXggMWUwNmI3NzBhMWY4YWNiYTM0
MTBkYzIxYWVlMGZmZTAxYWVlOWMyMC4uYjNkODVhOTVjZmZmYzY5MTA5NGVkOTYyM2FkZDFlYjhl
YjhlZmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxv
YWRlci5oCkBAIC04NCw4ICs4NCw4IEBAIHB1YmxpYzoKICAgICBKU09iamVjdCogY3JlYXRlSW1w
b3J0TWV0YVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGtleSwgSlNNb2R1bGVS
ZWNvcmQqLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpOwogCiAgICAgLy8gQWRkaXRpb25hbCBwbGF0
Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCi0gICAgSlNWYWx1ZSBldmFsdWF0ZShKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKTsKLSAgICBKU1ZhbHVlIGV2YWx1YXRlTm9uVmlydHVhbChKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUga2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZCwgSlNWYWx1ZSBzY3JpcHRGZXRj
aGVyKTsKKyAgICBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBrZXks
IEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTVmFsdWUgc2Vu
dFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1vZGUpOworICAgIEpTVmFsdWUgZXZhbHVhdGVOb25WaXJ0
dWFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkLCBK
U1ZhbHVlIHNjcmlwdEZldGNoZXIsIEpTVmFsdWUgc2VudFZhbHVlLCBKU1ZhbHVlIHJlc3VtZU1v
ZGUpOwogCiAgICAgLy8gVXRpbGl0eSBmdW5jdGlvbnMuCiAgICAgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QqIGdldE1vZHVsZU5hbWVzcGFjZU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
bW9kdWxlUmVjb3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAppbmRleCAxZDUwNzU4NzM2YmI4NDhlZmQwMjUxZDE4MjQ5OTI5YWNhZjJh
N2YwLi43YjZiMDY5ODgwNGMyNDg2NmYxMTAwMTc3ZTgyZmEzYTRhNWFmYzgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCog
Y2VsbCwgVmlzaXRvciYgdmlzaXRvcikKIAogREVGSU5FX1ZJU0lUX0NISUxEUkVOKEpTTW9kdWxl
UmVjb3JkKTsKIAotdm9pZCBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHNjcmlwdEZldGNoZXIpCitTeW5jaHJvbm91c25lc3MgSlNNb2R1
bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBzY3Jp
cHRGZXRjaGVyKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC05MCwxMSArOTAsMTMgQEAgdm9p
ZCBKU01vZHVsZVJlY29yZDo6bGluayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpCiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09ICFleGVjdXRhYmxlKTsKICAgICBpZiAoIWV4ZWN1dGFibGUpIHsKICAgICAgICAgdGhy
b3dTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5jOwogICAgIH0KICAgICBpbnN0YW50aWF0
ZURlY2xhcmF0aW9ucyhnbG9iYWxPYmplY3QsIGV4ZWN1dGFibGUsIHNjcmlwdEZldGNoZXIpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgU3luY2hyb25vdXNuZXNzOjpTeW5jKTsKICAgICBtX21vZHVsZVByb2dy
YW1FeGVjdXRhYmxlLnNldCh2bSwgdGhpcywgZXhlY3V0YWJsZSk7CisKKyAgICByZXR1cm4gZXhl
Y3V0YWJsZS0+dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCktPmlzQXN5bmMoKSA/IFN5
bmNocm9ub3VzbmVzczo6QXN5bmMgOiBTeW5jaHJvbm91c25lc3M6OlN5bmM7CiB9CiAKIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1bGVQcm9ncmFtRXhlY3V0
YWJsZSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpAQCAtMjM4LDE0ICsyNDAsMTYgQEAgdm9pZCBK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgTW9kdWwKICAgICBzZXRNb2R1bGVFbnZpcm9ubWVudChnbG9iYWxPYmplY3Qs
IG1vZHVsZUVudmlyb25tZW50KTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXZhbHVh
dGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6
OmV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc2VudFZhbHVl
LCBKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgaWYgKCFtX21vZHVsZVByb2dyYW1FeGVjdXRh
YmxlKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBt
X21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdldCgpOwotICAgIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuY2xlYXIoKTsKLSAgICByZXR1cm4gdm0uaW50ZXJwcmV0ZXItPmV4ZWN1dGVNb2R1bGVQ
cm9ncmFtKGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgbW9kdWxlRW52aXJvbm1lbnQoKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHRPckF3YWl0ZWRWYWx1ZSA9IHZtLmludGVycHJldGVyLT5leGVjdXRl
TW9kdWxlUHJvZ3JhbSh0aGlzLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIG1vZHVsZUVudmly
b25tZW50KCksIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgaWYgKEpTVmFsdWUgc3RhdGUg
PSBpbnRlcm5hbEZpZWxkKEZpZWxkOjpTdGF0ZSkuZ2V0KCk7ICFzdGF0ZS5pc051bWJlcigpIHx8
IHN0YXRlLmFzTnVtYmVyKCkgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFN0YXRlOjpFeGVjdXRp
bmcpKQorICAgICAgICBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmNsZWFyKCk7CisgICAgcmV0
dXJuIHJlc3VsdE9yQXdhaXRlZFZhbHVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDhhNTUw
N2FmNGFjNmI0MTY4NTA5ODc4ODYxMWIxMTZlOGVjNmFlZjMuLjAxYWUwMGMwOTNkMWIyN2FhN2I3
NjliZGFkYmE5NTgxNDM5NjY3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKICAgICBzdGF0aWMgSlNNb2R1bGVSZWNvcmQqIGNyZWF0ZShKU0dsb2JhbE9iamVjdCosIFZN
JiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFNvdXJjZUNvZGUmLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCi0g
ICAgdm9pZCBsaW5rKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpTR2xvYmFsT2JqZWN0Kik7Cisg
ICAgU3luY2hyb25vdXNuZXNzIGxpbmsoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHNjcmlwdEZl
dGNoZXIpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHNlbnRWYWx1ZSwgSlNWYWx1ZSByZXN1bWVNb2RlKTsKIAogICAgIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGU7
IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVQcm9ncmFtRXhlY3V0YWJsZS5oCmluZGV4IDc4
NTExNWM5NGI1YzBlNjkxM2VjNDM2YjcxNzFiOTU1Zjc5OTY5MzcuLjU5NTQzNzM1YWQxNTM1NThk
NjY2NjJiZDI5YmMyNWEzZjI5ODM4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUuaApAQCAtNjYsNiArNjYsNyBA
QCBwdWJsaWM6CiAgICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyh1c2VzRXZhbCgpLCBmYWxzZSwgUHJpdmF0ZUJyYW5kUmVxdWly
ZW1lbnQ6Ok5vbmUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIEpTUGFyc2VyU2NyaXB0
TW9kZTo6TW9kdWxlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVFdmFsdWF0ZU1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSgpLCBOZWVkc0NsYXNzRmllbGRJ
bml0aWFsaXplcjo6Tm8sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSwgZmFsc2UsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSk7IH0KIAogICAgIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jayog
dW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKCkgeyByZXR1cm4gbV91bmxpbmtlZE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2suZ2V0KCk7IH0KKyAgICBib29sIGlzQXN5bmMoKSBjb25zdCB7IHJl
dHVybiBmZWF0dXJlcygpICYgQXdhaXRGZWF0dXJlOyB9CiAKICAgICBTeW1ib2xUYWJsZSogbW9k
dWxlRW52aXJvbm1lbnRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnRT
eW1ib2xUYWJsZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaAppbmRleCBhZjdjNzI0OTcxNzM1ZjA3NzA0YTVkMDZhZmJhMmQ3NmViYjZhNTAz
Li5iYzFjZWRiOTAzYzg2ZmY3NmZhMmI0MTRmZTk4M2EyODE3ZTNmYTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4MywxNiArNDgzLDcgQEAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihPcHRpb25SYW5n
ZSwgd2FzbUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZSwgMCwgTm9ybWFsLCAid2FzbSBmdW5j
dGlvbiBpbmRleCByYW5nZSB0byBhbGxvdyBjb21waWxhdGlvbiBvbiwgZS5nLiAxOjEwMCIpIFwK
ICAgICB2KEJvb2wsIHdhc21MTEludFRpZXJzVXBUb0JCUSwgdHJ1ZSwgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihTaXplLCB3ZWJBc3NlbWJseUJCUUFpck1vZGVUaHJlc2hvbGQsIGlzSU9TKCkg
PyAoMTAgKiBNQikgOiAwLCBOb3JtYWwsICJJZiAwLCB3ZSBhbHdheXMgdXNlIEJCUSBBaXIuIElm
IFdhc20gbW9kdWxlIGNvZGUgc2l6ZSBoaXRzIHRoaXMgdGhyZXNob2xkLCB3ZSBjb21waWxlIFdh
c20gbW9kdWxlIHdpdGggQjMgQkJRIG1vZGUuIikgXAotICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1i
bHlTdHJlYW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJseSdzIFN0
cmVhbWluZyBBUEkiKSBcCiAgICAgdihCb29sLCB1c2VFYWdlcldlYkFzc2VtYmx5TW9kdWxlSGFz
aGluZywgZmFsc2UsIE5vcm1hbCwgIlVubmFtZWQgV2ViQXNzZW1ibHkgbW9kdWxlcyBhcmUgaWRl
bnRpZmllZCBpbiBiYWNrdHJhY2VzIHRocm91Z2ggdGhlaXIgaGFzaCwgaWYgYXZhaWxhYmxlLiIp
IFwKLSAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcywgdHJ1ZSwgTm9ybWFsLCAi
QWxsb3cgdHlwZXMgZnJvbSB0aGUgd2FzbSByZWZlcmVuY2VzIHNwZWMuIikgXAotICAgIHYoQm9v
bCwgdXNlV2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMg
ZnJvbSB0aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCi0gICAgdihCb29sLCB1c2VXZWJB
c3NlbWJseVRocmVhZGluZywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgaW5zdHJ1Y3Rpb25zIGZyb20g
dGhlIHdhc20gdGhyZWFkaW5nIHNwZWMuIikgXAotICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIHRy
dWUsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCi0gICAgdihC
b29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QsIHRydWUsIE5vcm1hbCwgIkV4cG9z
ZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCBkYXlQZXJpb2QgZmVhdHVyZS4iKSBcCi0gICAgdihC
b29sLCB1c2VJbnRsRGF0ZVRpbWVGb3JtYXRSYW5nZVRvUGFydHMsIHRydWUsIE5vcm1hbCwgIkV4
cG9zZSB0aGUgSW50bC5EYXRlVGltZUZvcm1hdCNmb3JtYXRSYW5nZVRvUGFydHMgZmVhdHVyZS4i
KSBcCi0gICAgdihCb29sLCB1c2VBdE1ldGhvZCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUg
YXQoKSBtZXRob2Qgb24gQXJyYXksICVUeXBlZEFycmF5JSwgYW5kIFN0cmluZy4iKSBcCi0gICAg
dihCb29sLCB1c2VTaGFyZWRBcnJheUJ1ZmZlciwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVlLCBOb3JtYWwsICJJ
ZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRpb24gcHJvZmlsaW5n
LiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5cyBjbGFpbSB0byBi
ZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8sIGZhbHNlLCBOb3Jt
YWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUgYW4gb2JqZWN0IHdp
dGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBmb3JjZU1pbmlWTU1v
ZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1pbmkgVk0gbW9kZSBv
bi4iKSBcCkBAIC01MTMsOCArNTA0LDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VK
SVRDYWdlKCk7CiAgICAgdihCb29sLCB1c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxv
Y2F0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRm9yIHRoZSBhcm02NCBFeGVjdXRhYmxlQWxsb2NhdG9y
LCBpZiB0cnVlLCBzZWxlY3Qgd2hpY2ggcmVnaW9uIHRvIHVzZSByYW5kb21seS4gVGhpcyBpcyB1
c2VmdWwgZm9yIHRlc3RpbmcgdGhhdCBqdW1wIGlzbGFuZHMgd29yay4iKSBcCiAgICAgdihCb29s
LCBleHBvc2VQcm9maWxlcnNPbkdsb2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUs
IHdlIHdpbGwgZXhwb3NlIGZ1bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1w
bGluZyBwcm9maWxlciBhbmQgdGhlIHN1cGVyIHNhbXBsZXIiKSBcCiAgICAgdihCb29sLCBhbGxv
d1Vuc3VwcG9ydGVkVGllcnMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIG5vdCBk
aXNhYmxlIERGRyBvciBGVEwgd2hlbiBhbiBleHBlcmltZW50YWwgZmVhdHVyZSBpcyBlbmFibGVk
LiIpIFwKLSAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAi
SWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBp
bnNpZGUgY2xhc3Nlcy4iKSBcCi0gICAgdihCb29sLCB1c2VQcml2YXRlTWV0aG9kcywgdHJ1ZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBtZXRo
b2RzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHJldHVybkVhcmx5RnJvbUluZmlu
aXRlTG9vcHNGb3JGdXp6aW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihTaXpl
LCBlYXJseVJldHVybkZyb21JbmZpbml0ZUxvb3BzTGltaXQsIDEzMDAwMDAwMDAsIE5vcm1hbCwg
IldoZW4gcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgaXMgdHJ1ZSwgdGhp
cyBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZXhlY3V0aW9ucyBhIGxvb3AgY2FuIHJ1biBmb3Ig
YmVmb3JlIGp1c3QgcmV0dXJuaW5nLiBUaGlzIGlzIGhlbHBmdWwgZm9yIHRoZSBmdXp6ZXIgc28g
aXQgZG9lc24ndCBnZXQgc3R1Y2sgaW4gaW5maW5pdGUgbG9vcHMuIikgXAogICAgIHYoQm9vbCwg
dXNlTElDTUZ1enppbmcsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTUyMiw4ICs1MTEs
MjQgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjYW5Vc2VKSVRDYWdlKCk7CiAgICAgdihEb3Vi
bGUsIGFsbG93SG9pc3RpbmdMSUNNUHJvYmFiaWxpdHksIDAuNSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdihCb29sLCBleHBvc2VDdXN0b21TZXR0ZXJzT25HbG9iYWxPYmplY3RGb3JUZXN0aW5n
LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihCb29sLCB1c2VKSVRDYWdlLCBjYW5V
c2VKSVRDYWdlKCksIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIFwKKyAgICAvKiBGZWF0dXJlIEZs
YWdzICovXAorICAgIFwKICAgICB2KEJvb2wsIHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzLCB0
cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMg
c3RhdGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHVzZVBy
aXZhdGVTdGF0aWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNl
ciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBzdGF0aWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNz
ZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWws
ICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRz
IGluc2lkZSBjbGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVNZXRob2RzLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIG1l
dGhvZHMgaW5zaWRlIGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlTdHJl
YW1pbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IHRvIHJ1biBXZWJBc3NlbWJseSdzIFN0cmVhbWlu
ZyBBUEkiKSBcCisgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMsIHRydWUsIE5v
cm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gcmVmZXJlbmNlcyBzcGVjLiIpIFwKKyAg
ICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93
IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAorICAgIHYoQm9vbCwg
dXNlV2ViQXNzZW1ibHlUaHJlYWRpbmcsIHRydWUsIE5vcm1hbCwgIkFsbG93IGluc3RydWN0aW9u
cyBmcm9tIHRoZSB3YXNtIHRocmVhZGluZyBzcGVjLiIpIFwKKyAgICB2KEJvb2wsIHVzZVdlYWtS
ZWZzLCB0cnVlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAor
ICAgIHYoQm9vbCwgdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kLCB0cnVlLCBOb3JtYWws
ICJFeHBvc2UgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQgZGF5UGVyaW9kIGZlYXR1cmUuIikgXAor
ICAgIHYoQm9vbCwgdXNlSW50bERhdGVUaW1lRm9ybWF0UmFuZ2VUb1BhcnRzLCB0cnVlLCBOb3Jt
YWwsICJFeHBvc2UgdGhlIEludGwuRGF0ZVRpbWVGb3JtYXQjZm9ybWF0UmFuZ2VUb1BhcnRzIGZl
YXR1cmUuIikgXAorICAgIHYoQm9vbCwgdXNlQXRNZXRob2QsIGZhbHNlLCBOb3JtYWwsICJFeHBv
c2UgdGhlIGF0KCkgbWV0aG9kIG9uIEFycmF5LCAlVHlwZWRBcnJheSUsIGFuZCBTdHJpbmcuIikg
XAorICAgIHYoQm9vbCwgdXNlU2hhcmVkQXJyYXlCdWZmZXIsIGZhbHNlLCBOb3JtYWwsIG51bGxw
dHIpIFwKKyAgICB2KEJvb2wsIHVzZVRvcExldmVsQXdhaXQsIHRydWUsIE5vcm1hbCwgImFsbG93
IHRoZSBhd2FpdCBrZXl3b3JkIGF0IHRoZSB0b3AgbGV2ZWwgb2YgYSBtb2R1bGUuIikgXAorCiAK
IGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggMzJlMzFiYjkwYzM2MjE2
NzhhZDg3OWQ5MzkxYjQ2YWQ3YjM4YzNmZS4uMWMyN2FkNDk2Y2NkNzM3NjEwZmFhMDJhMTkwMzA1
YjZkNTE0ZGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CisKIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gU3ltYm9sVGFibGU6OnNf
aW5mbyA9IHsgIlN5bWJvbFRhYmxlIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShTeW1ib2xUYWJsZSkgfTsKQEAgLTI4Myw1ICsyODUsMTcgQEAgUmVmUHRy
PFR5cGVTZXQ+IFN5bWJvbFRhYmxlOjpnbG9iYWxUeXBlU2V0Rm9yVmFyaWFibGUoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJgogICAgIHJldHVybiBpdGVyLT52YWx1ZTsKIH0KIAordm9pZCBTeW1i
b2xUYWJsZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBCYXNlOjpkdW1wKG91dCk7CisKKyAgICBDb21t
YVByaW50ZXIgY29tbWE7CisgICAgb3V0LnByaW50KCIgPCIpOworICAgIGZvciAoYXV0byYgaXRl
ciA6IG1fbWFwKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICppdGVyLmtleSwgIjogIiwgaXRl
ci52YWx1ZS52YXJPZmZzZXQoKSk7CisgICAgb3V0LnByaW50bG4oIj4iKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCmluZGV4IDAxNzk2YzdkZWQ2MzQzN2M1ZjYzMzcyZGJiMTY0YjdjMjk5MjAxODcuLmU1YTIw
NjVjMmY1NGM2Y2Q3Mjc3OTYwNzlkYWYwNDk4NjNmYTBjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtNzM4LDYgKzczOCw3IEBAIHB1YmxpYzoK
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseShWTSYpOworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbFRhYmxlKFZNJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAKaW5kZXggYjU1Njg2ZWJlNjVjMWQ2YjkzYjY3Mjg1NzcyNzM5MWM4ZmVjZGQ0OC4uMjkxNzI0
OTdjYzExMzQ2ODZhYThiYmVhZGUwYTFlZTFhNGExNmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApA
QCAtOTcsNyArOTcsMTMgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6cHJlcGFyZUxp
bmsoVk0mIHZtLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3RhbmMKICAgICBtX2luc3RhbmNl
LnNldCh2bSwgdGhpcywgaW5zdGFuY2UpOwogfQogCi12b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUsIEpTT2JqZWN0
KiBpbXBvcnRPYmplY3QsIFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCitTeW5jaHJv
bm91c25lc3MgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6Q3JlYXRp
b25Nb2RlIGNyZWF0aW9uTW9kZSkKK3sKKyAgICBsaW5rSW1wbChnbG9iYWxPYmplY3QsIGltcG9y
dE9iamVjdCwgY3JlYXRpb25Nb2RlKTsKKyAgICByZXR1cm4gU3luY2hyb25vdXNuZXNzOjpTeW5j
OworfQorCit2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVhdGlv
bk1vZGUgY3JlYXRpb25Nb2RlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaApp
bmRleCAzNzJiZjliMzc4N2Y4YzdjYWJiNzA5MGI2YmNhODAyYTZlNGE1OGUwLi42Yzk5OTIxMWJl
MDQwNjhlMWZmMjE0OGY3NjZhN2NhMWU4NWI0NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKQEAgLTU5LDEy
ICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiBj
cmVhdGUoSlNHbG9iYWxPYmplY3QqLCBWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiAgICAgdm9pZCBwcmVwYXJlTGlu
ayhWTSYsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSopOwotICAgIHZvaWQgbGluayhKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2Fz
bTo6Q3JlYXRpb25Nb2RlKTsKKyAgICBTeW5jaHJvbm91c25lc3MgbGluayhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNPYmplY3QqIGltcG9ydE9iamVjdCwgV2FzbTo6
Q3JlYXRpb25Nb2RlKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGV2YWx1YXRlKEpT
R2xvYmFsT2JqZWN0Kik7CiAKICAgICBKU09iamVjdCogZXhwb3J0c09iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwb3J0c09iamVjdC5nZXQoKTsgfQogCiBwcml2YXRlOgorICAgIHZvaWQgbGlu
a0ltcGwoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogaW1wb3J0T2JqZWN0LCBXYXNtOjpDcmVh
dGlvbk1vZGUpOwogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKFZNJiwgU3RydWN0dXJlKiwg
Y29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbE9i
amVjdCosIFZNJiwgY29uc3QgV2FzbTo6TW9kdWxlSW5mb3JtYXRpb24mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNGE1NmVl
ZmMwNTNmYzk0OGY4MWE3Y2FkZjcwOGE1N2Y1ZTk0OGE1Li4zOTk4YWFjMGFjODIwM2E0MTFkNzFh
MTkyNjgyODY1OWQyYzA1ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00NzAsMTEgKzQ3MCwxMSBAQCBKU0M6OkpTSW50ZXJu
YWxQcm9taXNlKiBKU0RPTUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2goSlNDOjpKU0ds
b2JhbE9iamVjdAogICAgIHJldHVybiBwcm9taXNlOwogfQogCi1KU0M6OkpTVmFsdWUgSlNET01H
bG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKU01vZHVsZUxvYWRlciogbW9kdWxlTG9hZGVyLCBKU0M6OkpTVmFs
dWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgc2Ny
aXB0RmV0Y2hlcikKK0pTQzo6SlNWYWx1ZSBKU0RPTUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVy
RXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTTW9kdWxl
TG9hZGVyKiBtb2R1bGVMb2FkZXIsIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXksIEpTQzo6SlNWYWx1
ZSBtb2R1bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyLCBKU0M6OkpTVmFsdWUg
YXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBKU0RPTUdsb2Jh
bE9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KTsKICAgICBpZiAoYXV0byogbG9hZGVyID0gc2NyaXB0TW9kdWxlTG9hZGVyKHRo
aXNPYmplY3QpKQotICAgICAgICByZXR1cm4gbG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmplY3Qs
IG1vZHVsZUxvYWRlciwgbW9kdWxlS2V5LCBtb2R1bGVSZWNvcmQsIHNjcmlwdEZldGNoZXIpOwor
ICAgICAgICByZXR1cm4gbG9hZGVyLT5ldmFsdWF0ZShnbG9iYWxPYmplY3QsIG1vZHVsZUxvYWRl
ciwgbW9kdWxlS2V5LCBtb2R1bGVSZWNvcmQsIHNjcmlwdEZldGNoZXIsIGF3YWl0ZWRWYWx1ZSwg
cmVzdW1lTW9kZSk7CiAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZDU1MDVj
NjE3YzZlOGFmMWFlYjlkMzFiYjJmYzBmZDBjMzFmMjc4MC4uZDQ5NzNkMDkzNWI3MzhlZWQ2ZWIz
YTFmZjI2MDcxZmQ2MGY2ZWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
c3RhdGljIEpTQzo6SWRlbnRpZmllciBtb2R1bGVMb2FkZXJSZXNvbHZlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUs
IEpTQzo6SlNWYWx1ZSk7CiAgICAgc3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVs
ZUxvYWRlckZldGNoKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBtb2R1bGVMb2FkZXJFdmFsdWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFs
dWUpOworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbW9kdWxlTG9hZGVyRXZhbHVhdGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSk7CiAgICAg
c3RhdGljIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIG1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNTdHJpbmcq
LCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6U291cmNlT3JpZ2luJik7CiAgICAgc3RhdGljIEpT
Qzo6SlNPYmplY3QqIG1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQcm9wZXJ0aWVzKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OkpTTW9kdWxlUmVjb3JkKiwgSlNDOjpKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2ZWE4MmIwM2ZlOGM0ZWI1MjA4
ODFkYjljNzE1MmQ5ZTVkZjE0NjhjLi5kNzU4MjczNGFmM2Q1MDcyMDNiNWU0MzhiN2JlOWVlYzBm
ZjU5NjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVTY3JpcHQoTG9hZGFibGVNb2R1bGVTY3JpcHQmCiAgICAg
cmV0dXJuIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZVNjcmlwdEluV29ybGQobW9kdWxlU2NyaXB0LCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9s
bGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1bGVSZWNvcmQm
IG1vZHVsZVJlY29yZCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKK0pTQzo6SlNWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVSTCwgSlNNb2R1
bGVSZWNvcmQmIG1vZHVsZVJlY29yZCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgSlNDOjpKU1Zh
bHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sod29ybGQudm0oKSk7CiAKQEAgLTI0MCwxNSArMjQwLDE1IEBAIEpTQzo6SlNW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIHNvdXJjZVVS
TCwgSlNNb2R1bGVSZWNvCiAgICAgU2V0Rm9yU2NvcGU8Y29uc3QgVVJMKj4gc291cmNlVVJMU2Nv
cGUobV9zb3VyY2VVUkwsICZzb3VyY2VVUkwpOwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLnN0cmluZygpLCBqc1Nv
dXJjZUNvZGUuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSwganNTb3VyY2VDb2RlLnN0YXJ0Q29s
dW1uKCkub25lQmFzZWRJbnQoKSk7Ci0gICAgYXV0byByZXR1cm5WYWx1ZSA9IG1vZHVsZVJlY29y
ZC5ldmFsdWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byByZXR1cm5WYWx1ZSA9
IG1vZHVsZVJlY29yZC5ldmFsdWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgYXdhaXRlZFZhbHVl
LCByZXN1bWVNb2RlKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRl
U2NyaXB0KG1fZnJhbWUpOwogCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCi1KU0M6OkpT
VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VV
UkwsIEpTTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQpCitKU0M6OkpTVmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiBzb3VyY2VVUkwsIEpTTW9kdWxlUmVj
b3JkJiBtb2R1bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1
ZSByZXN1bWVNb2RlKQogewotICAgIHJldHVybiBldmFsdWF0ZU1vZHVsZShzb3VyY2VVUkwsIG1v
ZHVsZVJlY29yZCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOworICAgIHJldHVybiBldmFsdWF0
ZU1vZHVsZShzb3VyY2VVUkwsIG1vZHVsZVJlY29yZCwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCks
IGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CiB9CiAKIFJlZjxET01XcmFwcGVyV29ybGQ+IFNj
cmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKGNvbnN0IFN0cmluZyYgbmFtZSwgV29ybGRUeXBl
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggOTY0M2I5MmZmOGYwNzMzYTg4Yzg5YzRiMGQxNDcwZGVjMGJjZTkyZi4uNjA4MjEyYjJi
NWFlYTYyMjIyZDhlNTE2ODZhYWRjOTlkZjRhYTU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtMTIzLDggKzEyMyw4IEBAIHB1YmxpYzoK
ICAgICBKU0M6OkpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0SW5Xb3JsZChMb2Fk
YWJsZU1vZHVsZVNjcmlwdCYgLCBET01XcmFwcGVyV29ybGQmKTsKICAgICBKU0M6OkpTVmFsdWUg
bGlua0FuZEV2YWx1YXRlTW9kdWxlU2NyaXB0KExvYWRhYmxlTW9kdWxlU2NyaXB0Jik7CiAKLSAg
ICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoY29uc3QgVVJMJiwgSlNDOjpKU01vZHVsZVJl
Y29yZCYsIERPTVdyYXBwZXJXb3JsZCYpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVs
ZShjb25zdCBVUkwmLCBKU0M6OkpTTW9kdWxlUmVjb3JkJik7CisgICAgSlNDOjpKU1ZhbHVlIGV2
YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNNb2R1bGVSZWNvcmQmLCBET01XcmFwcGVy
V29ybGQmLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9k
ZSk7CisgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYsIEpTQzo6SlNN
b2R1bGVSZWNvcmQmLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVz
dW1lTW9kZSk7CiAKICAgICBXVEY6OlRleHRQb3NpdGlvbiBldmVudEhhbmRsZXJQb3NpdGlvbigp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRN
b2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxl
TG9hZGVyLmNwcAppbmRleCBkMWVlNzFiOWI1NWYwNTZiYzM1NmE2OTZmMzAxZTg0ZGFkZTc3Y2Y4
Li40NzUxZTBhMDBiYmM4NDczODE0YjBlNjA3ZTAwZmJiODU3ZWVkOGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTIyMCw3
ICsyMjAsNyBAQCBVUkwgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21SZXF1ZXN0
VVJMKEpTQzo6SlNHbG9iYWxPYmplY3QmIGpzR2xvYmFsTwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUpTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlNDOjpKU1Zh
bHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUsIEpTQzo6
SlNWYWx1ZSkKK0pTQzo6SlNWYWx1ZSBTY3JpcHRNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkpTTW9kdWxlTG9hZGVyKiwgSlND
OjpKU1ZhbHVlIG1vZHVsZUtleVZhbHVlLCBKU0M6OkpTVmFsdWUgbW9kdWxlUmVjb3JkVmFsdWUs
IEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJl
c3VtZU1vZGUpCiB7CiAgICAgSlNDOjpWTSYgdm0gPSBqc0dsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC0yMzgsMTEgKzIzOCwx
MSBAQCBKU0M6OkpTVmFsdWUgU2NyaXB0TW9kdWxlTG9hZGVyOjpldmFsdWF0ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBqc0dsb2JhbE9iamVjdCwgSgogCiAgICAgaWYgKG1fb3duZXJUeXBlID09IE93
bmVyVHlwZTo6RG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KG1fY29udGV4dCkuZnJhbWUoKSkKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+
c2NyaXB0KCkuZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCAqbW9kdWxlUmVjb3JkKTsKKyAgICAg
ICAgICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCkuZXZhbHVhdGVNb2R1bGUoc291cmNlVVJMLCAq
bW9kdWxlUmVjb3JkLCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChpczxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4obV9jb250ZXh0KSk7
CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHQgPSBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZT4obV9jb250ZXh0KS5zY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVybiBzY3JpcHQt
PmV2YWx1YXRlTW9kdWxlKCptb2R1bGVSZWNvcmQpOworICAgICAgICAgICAgcmV0dXJuIHNjcmlw
dC0+ZXZhbHVhdGVNb2R1bGUoKm1vZHVsZVJlY29yZCwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2Rl
KTsKICAgICB9CiAgICAgcmV0dXJuIEpTQzo6anNVbmRlZmluZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmgKaW5kZXggZGYzNGQ1NTFh
MTFjZDk4ZjRlMjM2YTJhYTFmNDgyNzlkOTY0YzY4NS4uZTgyYThiYjQzMzcxZWE2Y2FiOGZjZmE4
NDI0ZDg3ZWIzYzk4NjMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0TW9kdWxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0TW9kdWxlTG9hZGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgSlNDOjpJ
ZGVudGlmaWVyIHJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2Fk
ZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlTmFtZSwgSlNDOjpKU1ZhbHVlIGltcG9ydGVyTW9kdWxl
S2V5LCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlcik7CiAgICAgSlNDOjpKU0ludGVybmFsUHJv
bWlzZSogZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNNb2R1bGVMb2FkZXIqLCBK
U0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgSlNDOjpKU1Zh
bHVlIHNjcmlwdEZldGNoZXIpOwotICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXks
IEpTQzo6SlNWYWx1ZSBtb2R1bGVSZWNvcmQsIEpTQzo6SlNWYWx1ZSBzY3JpcHRGZXRjaGVyKTsK
KyAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNN
b2R1bGVMb2FkZXIqLCBKU0M6OkpTVmFsdWUgbW9kdWxlS2V5LCBKU0M6OkpTVmFsdWUgbW9kdWxl
UmVjb3JkLCBKU0M6OkpTVmFsdWUgc2NyaXB0RmV0Y2hlciwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRW
YWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpOwogICAgIEpTQzo6SlNJbnRlcm5hbFByb21p
c2UqIGltcG9ydE1vZHVsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRl
ciosIEpTQzo6SlNTdHJpbmcqLCBKU0M6OkpTVmFsdWUgcGFyYW1ldGVycywgY29uc3QgSlNDOjpT
b3VyY2VPcmlnaW4mKTsKICAgICBKU0M6OkpTT2JqZWN0KiBjcmVhdGVJbXBvcnRNZXRhUHJvcGVy
dGllcyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU01vZHVsZUxvYWRlciosIEpTQzo6SlNW
YWx1ZSwgSlNDOjpKU01vZHVsZVJlY29yZCosIEpTQzo6SlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDNhODMyZmE1MjBiMTRlNmE0ZTEyOTIyZjRjNDYxYmNjN2E2MWE0NjkuLmRm
OGY0NGM1NjM1NDgwNzFiYjBjZmI1MWI3NzIwODExYWJhMDUwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtMjQ1LDEyICsyNDUsMTIgQEAgc3RhdGljIElkZW50aWZpZXIganNWYWx1ZVRvTW9k
dWxlS2V5KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBy
ZXR1cm4gYXNTdHJpbmcodmFsdWUpLT50b0lkZW50aWZpZXIobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiB9CiAKLUpTQzo6SlNWYWx1ZSBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZU1vZHVsZShKU0M6OkpTTW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQpCitKU0M6OkpTVmFs
dWUgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUoSlNDOjpK
U01vZHVsZVJlY29yZCYgbW9kdWxlUmVjb3JkLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBK
U0M6OkpTVmFsdWUgcmVzdW1lTW9kZSkKIHsKICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9n
bG9iYWxTY29wZVdyYXBwZXIuZ2V0KCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sgeyB2bSB9OwotICAgIHJldHVybiBtb2R1bGVSZWNvcmQu
ZXZhbHVhdGUoJmdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIG1vZHVsZVJlY29yZC5ldmFsdWF0
ZSgmZ2xvYmFsT2JqZWN0LCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogfQogCiBNZXNzYWdl
UXVldWVXYWl0UmVzdWx0IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1
bGVTeW5jaHJvbm91c2x5KFdvcmtlclNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIsIGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGU5ODA2
MzkxMDI5OTU0OTI4NDY4MDVjMGMxN2YwMGM3OGI3MTQxYzkuLmRlMWU3MWU2ZGVlY2RlMWM4N2Rl
NjQ0MDI1NTU1ZmE2Y2NmNmM2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC05Niw3ICs5Niw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJp
bmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwogICAgIHZvaWQgZXZhbHVh
dGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24sIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlID0gbnVsbHB0
cik7CiAKLSAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoSlNDOjpKU01vZHVsZVJlY29y
ZCYpOworICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVsZShKU0M6OkpTTW9kdWxlUmVjb3Jk
JiwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpKU1ZhbHVlIHJlc3VtZU1vZGUpOwog
CiAgICAgdm9pZCBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoV29ya2VyU2NyaXB0RmV0Y2hlciYsIGNv
bnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSA9
IG51bGxwdHIpOwogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgbG9hZE1vZHVsZVN5bmNocm9u
b3VzbHkoV29ya2VyU2NyaXB0RmV0Y2hlciYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODU0
ZjlmYjM1ZTZkYjBlMzVhOTIxMTcxZjliMzEyNmYzNWQ4Y2U4YS4uMWQzNDE3NmUwMWM3NzM3MzU0
MTMzM2Q5MDZkM2Q0MTNhNzFiYzljYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0yMSAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdGhl
IFRvcC1sZXZlbCBhd2FpdCBwcm9wb3NhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1
enVraS4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDItMjEgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGdyYWRl
IHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAyZmNlYjQ0ODczZmNjYmRhMDExNWU1ZGZkM2Ix
Y2JhMjQ3YzgyM2Y2Li44NTVkNTA2YWM0YjJmYTBmMjY3MjcwZGY2OTU3MjY2ZmVlMDZhNDcwIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCkBAIC0xNCw2ICsxNCw3IEBAIGZsYWdzOgogICBBcnJheS5wcm90b3R5
cGUuYXQ6IHVzZUF0TWV0aG9kCiAgIFR5cGVkQXJyYXkucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhv
ZAogICBTdHJpbmcucHJvdG90eXBlLmF0OiB1c2VBdE1ldGhvZAorICB0b3AtbGV2ZWwtYXdhaXQ6
IHVzZVRvcExldmVsQXdhaXQKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gQXRvbWljcy53YWl0
QXN5bmMKQEAgLTI2LDggKzI3LDYgQEAgc2tpcDoKIAogICAgICMgRklYTUU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIxNDIKICAgICAtIHJlZ2V4cC1tYXRjaC1p
bmRpY2VzCi0KLSAgICAtIHRvcC1sZXZlbC1hd2FpdAogICBwYXRoczoKICAgZmlsZXM6CiAgICAg
IyBTbGlnaHRseSBkaWZmZXJlbnQgZm9ybWF0dGluZy4gV2Ugc2hvdWxkIHVwZGF0ZSB0ZXN0MjYy
IHNpZGUuCg==
</data>
<flag name="commit-queue"
          id="439933"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>