<?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>169387</bug_id>
          
          <creation_ts>2017-03-08 14:43:20 -0800</creation_ts>
          <short_desc>Add plumbing to WebProcess to enable JavaScriptCore configuration and logging</short_desc>
          <delta_ts>2017-03-09 16:53:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285034</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-08 14:43:20 -0800</bug_when>
    <thetext>This is to add the ability to configure JavaScriptCore debug and logging from within the Web process through the presence of a configuration file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285035</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-08 14:43:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/30930797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285049</commentid>
    <comment_count>2</comment_count>
      <attachid>303852</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-08 15:08:40 -0800</bug_when>
    <thetext>Created attachment 303852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285052</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-08 15:10:44 -0800</bug_when>
    <thetext>Attachment 303852 did not pass style-queue:


ERROR: Source/WebCore/ForwardingHeaders/runtime/ConfigFile.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/JavaScriptCore/runtime/ConfigFile.cpp:469:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285462</commentid>
    <comment_count>4</comment_count>
      <attachid>303852</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-03-09 12:34:59 -0800</bug_when>
    <thetext>Comment on attachment 303852
Patch

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

&gt; Source/JavaScriptCore/runtime/ConfigFile.cpp:39
&gt; +#include &lt;mutex&gt;

This is the Windows build failure.

&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:482
&gt; +    path = path + &quot;/Library/WebKit/JavaScriptConfig&quot;;

I would call this JavaScriptCoreDebug since it will include debug output in addition to configuration files.

We might need to make sure not to put anything in the Framework or app bundle, otherwise we might invalidate the bundle signature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285527</commentid>
    <comment_count>5</comment_count>
      <attachid>303972</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 13:17:19 -0800</bug_when>
    <thetext>Created attachment 303972
Patch for landing - Speculative Windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285530</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 13:19:04 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 303852 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303852&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ConfigFile.cpp:39
&gt; &gt; +#include &lt;mutex&gt;
&gt; 
&gt; This is the Windows build failure.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:482
&gt; &gt; +    path = path + &quot;/Library/WebKit/JavaScriptConfig&quot;;
&gt; 
&gt; I would call this JavaScriptCoreDebug since it will include debug output in
&gt; addition to configuration files.
&gt; 
&gt; We might need to make sure not to put anything in the Framework or app
&gt; bundle, otherwise we might invalidate the bundle signature.

I made these changes.  I also changed the name of the config file to JSC.config.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285532</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 13:19:23 -0800</bug_when>
    <thetext>Attachment 303972 did not pass style-queue:


ERROR: Source/WebCore/ForwardingHeaders/runtime/ConfigFile.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/JavaScriptCore/runtime/ConfigFile.cpp:469:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285638</commentid>
    <comment_count>8</comment_count>
      <attachid>304000</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 15:22:57 -0800</bug_when>
    <thetext>Created attachment 304000
Patch for landing - Speculative gtk build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285640</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 15:25:28 -0800</bug_when>
    <thetext>Attachment 304000 did not pass style-queue:


ERROR: Source/WebCore/ForwardingHeaders/runtime/ConfigFile.h:0:  No copyright message found.  You should have a line: &quot;Copyright [year] &lt;Copyright Owner&gt;&quot;  [legal/copyright] [5]
ERROR: Source/JavaScriptCore/runtime/ConfigFile.cpp:469:  Missing space before {  [whitespace/braces] [5]
Total errors found: 2 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285694</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-03-09 16:53:11 -0800</bug_when>
    <thetext>Committed r213690: &lt;http://trac.webkit.org/changeset/213690&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303852</attachid>
            <date>2017-03-08 15:08:40 -0800</date>
            <delta_ts>2017-03-09 13:17:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>169387.patch</filename>
            <type>text/plain</type>
            <size>25563</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE3LTAzLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBwbHVtYmluZyB0byBXZWJQcm9jZXNzIHRvIGVuYWJsZSBKYXZhU2NyaXB0Q29yZSBj
b25maWd1cmF0aW9uIGFuZCBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjkzODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiwgcHJvY2Vzc0NvbmZpZ0Zp
bGUoKSwgdG8gcHJvY2VzcyBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgIENoYW5nZWQganNj
LmNwcCB0byB1c2UgdGhhdCBmdW5jdGlvbiBpbiBsaWV1IG9mIHByb2Nlc3NpbmcgdGhlIGNvbmZp
ZyBmaWxlCisgICAgICAgIG1hbnVhbGx5LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTWFkZSBDb25maWdGaWxlLmggYSBwcml2YXRlIGhlYWRl
ciBmaWxlLgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAg
KiBydW50aW1lL0NvbmZpZ0ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpwcm9jZXNzQ29uZmlnRmls
ZSk6CisgICAgICAgICogcnVudGltZS9Db25maWdGaWxlLmg6CisKIDIwMTctMDMtMDcgIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgcGxhdGZvcm1zIHdvbid0
IGJlIGFibGUgdG8gY3JlYXRlIGEgR1BVRGV2aWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAko
cmV2aXNpb24gMjEzNTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3ODQsMTEgKzM3ODQsNyBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAgICAgLy8gY29tZXMgZmlyc3QuCiAgICAgQ29tbWFuZExpbmUgb3B0aW9ucyhh
cmdjLCBhcmd2KTsKIAotICAgIGlmIChPcHRpb25zOjpjb25maWdGaWxlKCkpIHsKLSAgICAgICAg
Q29uZmlnRmlsZSBjb25maWdGaWxlKE9wdGlvbnM6OmNvbmZpZ0ZpbGUoKSk7Ci0gICAgICAgIGNv
bmZpZ0ZpbGUuc2V0UHJvY2Vzc05hbWUoImpzYyIpOwotICAgICAgICBjb25maWdGaWxlLnBhcnNl
KCk7Ci0gICAgfQorICAgIHByb2Nlc3NDb25maWdGaWxlKE9wdGlvbnM6OmNvbmZpZ0ZpbGUoKSwg
ImpzYyIpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBKU0MgYmVmb3JlIGdldHRpbmcgVk0uCiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDIxMzU5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkw
LDcgKzEzOTAsNyBAQAogCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2Vu
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NUVC
MjlBMTBDRTI1ODEwMDFBOTkwRSAvKiBOb2Rlc0NvZGVnZW4uY3BwICovOyB9OwogCQk2NTdDRjQ1
ODE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2Fs
bGVlLmNwcCAqLzsgfTsKIAkJNjU3Q0Y0NTkxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdDRjQ1NzE5
QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk2NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyogQ29uZmln
RmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4
ODI0QUUxRTVDRkRCMDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCAqLzsgfTsKKwkJNjU4ODI0QUYx
RTVDRkRCMDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdG
aWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NjU4ODI0QjExRTVDRkRGNDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4ODI0QjAxRTVDRkRGNDAwRkI3MzU5
IC8qIENvbmZpZ0ZpbGUuY3BwICovOyB9OwogCQk2NThEM0E1NjE5NjM4MjY4MDAzQzQ1RDYgLyog
Vk1FbnRyeVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU4RDNBNTUxOTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUI4MzkyRTFCQUNB
RDM2MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QjgzOTJDMUJBQ0E5MkEwMDQ0RTgyNCAvKiBDYWNoZWRS
ZWNvdmVyeS5oICovOyB9OwpAQCAtNzk3NSw2ICs3OTc1LDcgQEAKIAkJCQkwRjYxODMyQTFDNDVC
RjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MzgxQjk0MDFFNjVERkVCMDA5MEY3OTQgLyogSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1NzQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNDYWxsU3Bl
Y2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU4ODI0QUYxRTVDRkRCMDAwRkI3MzU5IC8qIENv
bmZpZ0ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTc2MUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEwRjFBMzFDNDIwQkYwMDAxQzA3RDIg
LyogQWlyQ3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQlEQzQ1NEI4RDFEMDBFODI0MDA0QzE4
QUYgLyogQWlyRHVtcEFzSlMuaCBpbiBIZWFkZXJzICovLApAQCAtODM5Myw3ICs4Mzk0LDYgQEAK
IAkJCQlBN0Q4OUNGRTE3QTBCOENDMDA3NzNBRDggLyogREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlz
aXNQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEODJFNTcxNDFEQUYxMDAwMTc5Qzk0IC8q
IERGR09TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJD
NDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTY1ODgyNEFGMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENv
bXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db25maWdGaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25maWdGaWxlLmNwcAkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNp
ZiBPUyhVTklYKSB8fCBPUyhEQVJXSU4pCisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CiAjZW5kaWYKIApAQCAtNDU4LDQgKzQ1OSwyMiBAQCB2b2lkIENvbmZpZ0ZpbGU6OmNh
bm9uaWNhbGl6ZVBhdGhzKCkKICNlbmRpZgogfQogCit2b2lkIHByb2Nlc3NDb25maWdGaWxlKGNv
bnN0IGNoYXIqIGNvbmZpZ0ZpbGVuYW1lLCBjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSwgY29uc3Qg
Y2hhciogcGFyZW50UHJvY2Vzc05hbWUpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHBy
b2Nlc3NDb25maWdGaWxlT25jZUZsYWc7CisgICAgCisgICAgaWYgKCFjb25maWdGaWxlbmFtZSB8
fCAhc3RybGVuKGNvbmZpZ0ZpbGVuYW1lKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RkOjpj
YWxsX29uY2UocHJvY2Vzc0NvbmZpZ0ZpbGVPbmNlRmxhZywgWyZdeworICAgICAgICBpZiAoY29u
ZmlnRmlsZW5hbWUpIHsKKyAgICAgICAgICAgIENvbmZpZ0ZpbGUgY29uZmlnRmlsZShjb25maWdG
aWxlbmFtZSk7CisgICAgICAgICAgICBjb25maWdGaWxlLnNldFByb2Nlc3NOYW1lKHByb2Nlc3NO
YW1lKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnRQcm9jZXNzTmFtZSkKKyAgICAgICAgICAgICAg
ICBjb25maWdGaWxlLnNldFBhcmVudFByb2Nlc3NOYW1lKHBhcmVudFByb2Nlc3NOYW1lKTsKKyAg
ICAgICAgICAgIGNvbmZpZ0ZpbGUucGFyc2UoKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bmZpZ0ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25maWdGaWxlLmgJKHJldmlzaW9uIDIxMzU5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbmZpZ0ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNCArNTMsNiBAQCBwcml2
YXRlOgogICAgIGNoYXIgbV9jb25maWdEaXJlY3Rvcnlbc19tYXhQYXRoTGVuZ3RoICsgMV07CiB9
OwogCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByb2Nlc3NDb25maWdGaWxlKGNvbnN0IGNoYXIq
IGNvbmZpZ0ZpbGUsIGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQ
cm9jZXNzTmFtZSA9IG51bGxwdHIpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIxMzU5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAzLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1z
YWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBXZWJQcm9jZXNzIHRv
IGVuYWJsZSBKYXZhU2NyaXB0Q29yZSBjb25maWd1cmF0aW9uIGFuZCBsb2dnaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkzODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGZvcndhcmRp
bmcgaGVhZGVyIGZpbGUgZm9yIEphdlNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxlLmguCisK
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0NvbmZpZ0ZpbGUuaDogQWRkZWQu
CisKIDIwMTctMDMtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFN1cHBvcnQgY2FudmFzIGNhcHR1cmVTdHJlYW0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQ29uZmlnRmlsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQ29uZmlnRmlsZS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvQ29uZmln
RmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZX
RF9Db25maWdGaWxlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfQ29uZmlnRmlsZV9oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29uZmlnRmlsZS5oPgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMTM1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw0OSBAQAorMjAxNy0wMy0wOCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gV2ViUHJvY2VzcyB0byBlbmFi
bGUgSmF2YVNjcmlwdENvcmUgY29uZmlndXJhdGlvbiBhbmQgbG9nZ2luZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Mzg3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBwYXRoIGFuZCBzYW5k
Ym94IGV4dGVuc2lvbiBmb3IgSmF2YVNjcmlwdCBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS4KKyAg
ICAgICAgVGhlc2UgYXJlIHNlbnQgdG8gdGhlIFdlYiBwcm9jZXNzIG9uIHN0YXJ0dXAgYWxvbmcg
d2l0aCBvdGhlciBwYXJhbWV0ZXJzLgorICAgICAgICBXaGVuIEphdmFTY3JpcHQgY29uZmlndXJh
dGlvbiBmaWxlIHByb2Nlc3NpbmcgaXMgZW5hYmxlZCwgdGhlIFdlYlByb2Nlc3MKKyAgICAgICAg
d2lsbCBsb29rIGZvciB0aGUgZmlsZSBXZWJDb250ZW50LmNvbmZpZyBpbiB0aGF0IGRpcmVjdG9y
eSBhbmQgY29uZmlndXJlCisgICAgICAgIEphdmFTY3JpcHRDb3JlIHdpdGggaXRzIGNvbnRlbnRz
LgorCisgICAgICAgIFRoZSBkaXJlY3RvcnkgbG9jYXRpb24gaXMgZm9yIE1hYyBpcyB+L0xpYnJh
cnkvV2ViS2l0L0phdmFTY3JpcHRDb25maWcgYW5kCisgICAgICAgIHRoZSBsb2NhdGlvbiBvbiBp
T1MgaXMgPHByb2Nlc3MtY29udGFpbmVyLXBhdGg+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRD
b25maWcuCisgICAgICAgIEphdmFTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHByb2Nlc3Npbmcg
aXMgY29udHJvbGxlZCB2aWEgYSBib29sZWFuIGtlcHQgaW4KKyAgICAgICAgdGhlIFdlYlByb2Nl
c3MgcG9vbC4gIEZvciBEZWJ1ZyBidWlsZHMsIGNvbmZpZyBmaWxlIHByb2Nlc3NpbmcgaXMgZW5h
YmxlZC4KKyAgICAgICAgRm9yIFJlbGVhc2UgYnVpbGRzIGl0IGlzIGRpc2FibGVkLgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKToKKyAgICAg
ICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24pOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKToKKyAgICAgICAgKFdLQ29udGV4dFNl
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OnJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAx
Ny0wMy0wOCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdGhlIHRyYWNlIGNvbW1hbmQgZnJvbSB0aGUgc2FuZGJveCBwcm9maWxlLgpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1
NCw4IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNv
ZGVyIDw8IHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29k
ZXIgPDwgbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBqYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeTsKKyAgICBlbmNvZGVyIDw8IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0Nv
b2tpZVN0b3JhZ2VJZGVudGlmaWVyOwogI2VuZGlmCkBAIC0xNjQsNiArMTY2LDEwIEBAIGJvb2wg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMu
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTEwMAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy51aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NiArNzUsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIFN0cmlu
ZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMAogICAgIFZlY3Rvcjx1aW50OF90PiB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRp
ZmllcjsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCShyZXZpc2lvbiAyMTM1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDcgQEAgc3Rh
dGljIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbAogICAgIGNvbmZpZ3VyYXRpb24u
bWVkaWFDYWNoZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsK
ICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5kaXNrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLmphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICAvLyBUaGlzIGlzIG5lZWRl
ZCB0byBzdXBwb3J0IGxlZ2FjeSBXSzIgY2xpZW50cywgd2hpY2ggZGlkIG5vdCBoYXZlIHJlc291
cmNlIGxvYWQgc3RhdGlzdGljcy4KICAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CkBAIC01OTgsNiArNTk5LDEyIEBAIFdlYlByb2Nlc3NQ
cm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KICAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCisgICAgaWYgKGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQoKSkgeworICAgICAgICBwYXJhbWV0ZXJzLmphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZSA/IHdlYnNpdGVE
YXRhU3RvcmUtPnJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSA6IFN0
cmluZygpOworICAgICAgICBpZiAoIXBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICB9CisK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbiA9IG1fc2hvdWxk
VXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uOwogCiAgICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0g
Y2FjaGVNb2RlbCgpOwpAQCAtMTM2Miw2ICsxMzY5LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnNldEluaXRpYWxDb25uZWN0ZWQKIAogI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQogCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKGJv
b2wgZmxhZykKK3sKKyAgICBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQgPSBm
bGFnOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRP
YmplY3RzKCkKIHsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Niw2ICsyNzYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFN0YXRpc3RpY3ModWludDMyX3Qg
c3RhdGlzdGljc01hc2ssIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEaWN0aW9uYXJ5KiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+KTsKICAgICAKKyAgICBib29sIGphdmFTY3JpcHRDb25maWd1cmF0
aW9uRmlsZUVuYWJsZWQoKSB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQo
Ym9vbCBmbGFnKTsKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKTsK
ICAgICB2b2lkIHNldEphdmFTY3JpcHRHYXJiYWdlQ29sbGVjdG9yVGltZXJFbmFibGVkKGJvb2wg
ZmxhZyk7CiAKQEAgLTM3Miw2ICszNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBs
ZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0
cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdEphdmFTY3JpcHRD
b25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgaXNOZXR3b3JrQ2FjaGVF
bmFibGVkKCk7CiAKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgeyBy
ZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsgfQpAQCAtNTUyLDcgKzU1NSwx
NCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CiAgICAgYm9v
bCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKLQorICAgIGJvb2wg
bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkIHsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIC8vIEVuYWJsZSBKYXZhU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSBwcm9jZXNzaW5n
IGJ5IGRlZmF1bHQgZm9yIERlYnVnIGJ1aWxkcy4KKyAgICAgICAgdHJ1ZQorI2Vsc2UKKyAgICAg
ICAgZmFsc2UKKyNlbmRpZgorICAgIH07CiAgICAgYm9vbCBtX2Fsd2F5c1J1bnNBdEJhY2tncm91
bmRQcmlvcml0eTsKIAogICAgIFVzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXIgbV91c2VyT2JzZXJ2
YWJsZVBhZ2VDb3VudGVyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24g
MjEzNTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIFJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBjb25maWd1cmF0aW9uLT5tX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRm
b3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPm1f
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1
cmF0aW9uLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBj
b25maWd1cmF0aW9uLT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkoKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpAQCAtODEs
NiArODIsNyBAQCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uCiAgICAg
LCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQogICAgICwgbV9t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkpCisgICAgLCBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5KCIiKQogewogfQogCkBAIC0xMDUsNiArMTA3LDcgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0g
dGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgY29weS0+bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHRoaXMtPm1f
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29w
eS0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fY2FjaGVQYXJ0aXRpb25l
ZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMgPSB0
aGlzLT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODcsNiArODcs
OSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KICAg
ICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQogCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5KSB7IG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSBqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsgfQorCiAgICAgY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKSB7IHJldHVybiBtX2NhY2hlUGFy
dGl0aW9uZWRVUkxTY2hlbWVzOyB9CiAgICAgdm9pZCBzZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2No
ZW1lcyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMpIHsg
bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IFdURk1vdmUoY2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXMpOyB9CiAKQEAgLTEzNCw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIFdURjo6U3Ry
aW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeTsKKyAgICBXVEY6OlN0cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5OwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJM
U2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzOwogICAgIGJvb2wgbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rp
bmcgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAJKHJldmlzaW9uIDIxMzU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNiArNTAyLDE2IEBA
IHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljc1dpdGhPcHRpb25zKFcKICAgICB0b0ltcGwoY29u
dGV4dFJlZiktPmdldFN0YXRpc3RpY3Mob3B0aW9uc01hc2ssIHRvR2VuZXJpY0NhbGxiYWNrRnVu
Y3Rpb24oY29udGV4dCwgY2FsbGJhY2spKTsKIH0KIAorYm9vbCBXS0NvbnRleHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQoreworICAg
IHJldHVybiB0b0ltcGwoY29udGV4dFJlZiktPmphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVu
YWJsZWQoKTsKK30KKwordm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZp
bGVFbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBib29sIGVuYWJsZSkKK3sKKyAgICB0
b0ltcGwoY29udGV4dFJlZiktPnNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQo
ZW5hYmxlKTsKK30KKwogdm9pZCBXS0NvbnRleHRHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmpl
Y3RzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+
Z2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkocmV2aXNpb24gMjEzNTk4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTQsNiArMTU0LDggQEAgdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bgog
V0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4
dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24g
ZnVuY3Rpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljc1dpdGhPcHRp
b25zKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0YXRpc3RpY3NPcHRpb25zIHN0YXRpc3RpY3NN
YXNrLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlv
biBmdW5jdGlvbik7CiAKK1dLX0VYUE9SVCBib29sIFdLQ29udGV4dEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRmlsZUVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZChXS0NvbnRleHRS
ZWYgY29udGV4dCwgYm9vbCBlbmFibGUpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2FyYmFn
ZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRTZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxl
ZChXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBlbmFibGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQko
cmV2aXNpb24gMjEzNTk4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3Miw2ICs0NzIsMjQgQEAgU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZgogICAgIHJldHVybiBzdHJpbmdC
eVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5n
UGF0aF0pOwogfQogCitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVs
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKK3sKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgU3RyaW5nIHBhdGggPSBwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpOworICAgIGlmIChw
YXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcGF0aCA9IE5TSG9tZURpcmVjdG9yeSgpOworICAgIAor
ICAgIHBhdGggPSBwYXRoICsgIi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29uZmlnIjsKKyAg
ICBwYXRoID0gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChwYXRoKTsKKworICAgIHJl
dHVybiBwYXRoOworI2Vsc2UKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGphdmFTY3JpcHRDb25m
aWdQYXRoID0gQCJ+L0xpYnJhcnkvV2ViS2l0L0phdmFTY3JpcHRDb25maWciOworICAgIAorICAg
IHJldHVybiBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtqYXZhU2NyaXB0Q29uZmln
UGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CisjZW5kaWYKK30KKwogYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6aXNOZXR3b3JrQ2FjaGVFbmFibGVkKCkKIHsKICNpZiBFTkFCTEUoTkVUV09S
S19DQUNIRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIxMzU5OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVzb2x2ZURpcmVjdG9yaWUKICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkpOwogICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGly
ZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpOworCisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHJlc29sdmVQYXRoRm9yU2FuZGJv
eEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkpOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmNsb25lU2Vzc2lvbkRhdGEoV2ViUGFn
ZVByb3h5JiBzb3VyY2VQYWdlLCBXZWJQYWdlUHJveHkmIG5ld1BhZ2UpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgJKHJldmlzaW9uIDIxMzU5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcg
QEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgICAg
ICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgICAgIFN0cmluZyBqYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICB9OwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgIHN0YXRpYyBSZWY8V2Vic2l0ZURhdGFT
dG9yZT4gY3JlYXRlKENvbmZpZ3VyYXRpb24pOwpAQCAtOTUsNiArOTYsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5OyB9CiAgICAg
Y29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KICAg
ICBjb25zdCBTdHJpbmcmIHJlc29sdmVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsgfQorICAg
IGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OyB9CiAKICAgICBTdG9yYWdlTWFuYWdlciogc3RvcmFnZU1hbmFnZXIo
KSB7IHJldHVybiBtX3N0b3JhZ2VNYW5hZ2VyLmdldCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lv
biAyMTM1OTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJP
YmpDT2JqZWN0R3JhcGguaCIKKyNpbXBvcnQgPHJ1bnRpbWUvQ29uZmlnRmlsZS5oPgogI2ltcG9y
dCAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2ltcG9ydCAiU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycy5oIgogI2ltcG9ydCAiU2VjSXRlbVNoaW0uaCIKQEAgLTEwMiw2ICsxMDMsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5hdWRpb0NhcHR1
cmVFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCkBAIC0xMTIsNiArMTE0LDExIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICNlbmRpZgogI2VuZGlmCiAKKyAgICBp
ZiAoIXBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgp
KSB7CisgICAgICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlnRmlsZSA9IHBhcmFtZXRlcnMuamF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgKyAiL1dlYkNvbnRlbnQuY29uZmlnIjsKKyAg
ICAgICAgSlNDOjpwcm9jZXNzQ29uZmlnRmlsZShqYXZhU2NyaXB0Q29uZmlnRmlsZS5sYXRpbjEo
KS5kYXRhKCksICJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiLCBwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0J1bmRsZUlkZW50aWZpZXIubGF0aW4xKCkuZGF0YSgpKTsKKyAgICB9CisKICNpZiBQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCiAg
ICAgc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UocGFyYW1ldGVycy51aVByb2Nlc3NDb29raWVT
dG9yYWdlSWRlbnRpZmllcik7CiAjZW5kaWYK
</data>
<flag name="review"
          id="325450"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303972</attachid>
            <date>2017-03-09 13:17:19 -0800</date>
            <delta_ts>2017-03-09 15:22:57 -0800</delta_ts>
            <desc>Patch for landing - Speculative Windows build fix</desc>
            <filename>169387-landing.patch</filename>
            <type>text/plain</type>
            <size>25863</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE3LTAzLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBwbHVtYmluZyB0byBXZWJQcm9jZXNzIHRvIGVuYWJsZSBKYXZhU2NyaXB0Q29yZSBj
b25maWd1cmF0aW9uIGFuZCBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjkzODcKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXps
by4KKworICAgICAgICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiwgcHJvY2Vzc0NvbmZpZ0ZpbGUo
KSwgdG8gcHJvY2VzcyBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgIENoYW5nZWQganNjLmNw
cCB0byB1c2UgdGhhdCBmdW5jdGlvbiBpbiBsaWV1IG9mIHByb2Nlc3NpbmcgdGhlIGNvbmZpZyBm
aWxlCisgICAgICAgIG1hbnVhbGx5LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTWFkZSBDb25maWdGaWxlLmggYSBwcml2YXRlIGhlYWRlciBm
aWxlLgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbmZpZ0ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpwcm9jZXNzQ29uZmlnRmlsZSk6
CisgICAgICAgICogcnVudGltZS9Db25maWdGaWxlLmg6CisKIDIwMTctMDMtMDkgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBjb25zdCBBYnN0cmFjdExvY2tl
ciYgKGluc3RlYWQgb2YgY29uc3QgTG9ja0hvbGRlciYpIGluIG1vcmUgcGxhY2VzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzg0LDExICszNzg0LDcgQEAgaW50IGpz
Y21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIC8vIGNvbWVzIGZpcnN0LgogICAgIENv
bW1hbmRMaW5lIG9wdGlvbnMoYXJnYywgYXJndik7CiAKLSAgICBpZiAoT3B0aW9uczo6Y29uZmln
RmlsZSgpKSB7Ci0gICAgICAgIENvbmZpZ0ZpbGUgY29uZmlnRmlsZShPcHRpb25zOjpjb25maWdG
aWxlKCkpOwotICAgICAgICBjb25maWdGaWxlLnNldFByb2Nlc3NOYW1lKCJqc2MiKTsKLSAgICAg
ICAgY29uZmlnRmlsZS5wYXJzZSgpOwotICAgIH0KKyAgICBwcm9jZXNzQ29uZmlnRmlsZShPcHRp
b25zOjpjb25maWdGaWxlKCksICJqc2MiKTsKIAogICAgIC8vIEluaXRpYWxpemUgSlNDIGJlZm9y
ZSBnZXR0aW5nIFZNLgogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTM5MCw3ICsxMzkwLDcgQEAKIAkJNjU1RUIyOUIxMENFMjU4MTAwMUE5
OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTVFQjI5QTEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNw
cCAqLzsgfTsKIAkJNjU3Q0Y0NTgxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0NGNDU2MTlCRjY2
NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi87IH07CiAJCTY1N0NGNDU5MTlCRjY2NjIwMDRB
Q0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjU4ODI0QUYxRTVDRkRC
MDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmgg
Ki87IH07CisJCTY1ODgyNEFGMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg4MjRBRTFFNUNGREIw
MDBGQjczNTkgLyogQ29uZmlnRmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTY1ODgyNEIxMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdGaWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgy
NEIwMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdGaWxlLmNwcCAqLzsgfTsKIAkJNjU4RDNBNTYx
OTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVu
dHJ5UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNjVCODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4MzkyQzFCQUNBOTJB
MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsKQEAgLTc5NzUsNiArNzk3NSw3IEBA
CiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTM4MUI5NDAxRTY1REZFQjAwOTBGNzk0IC8qIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTc0MUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJDQ2FsbFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1ODgyNEFGMUU1
Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3
NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYx
QTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREM0
NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKQEAg
LTgzOTMsNyArODM5NCw2IEBACiAJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09T
UkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3
MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
OEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVB
NURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5jcHAJKHJldmlzaW9u
IDIxMzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJPcHRpb25zLmgi
CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgpAQCAt
NDQ0LDYgKzQ0NSw3IEBAIHZvaWQgQ29uZmlnRmlsZTo6Y2Fub25pY2FsaXplUGF0aHMoKQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAKICAgICBjaGFyKiBsYXN0UGF0
aFNlcGVyYXRvciA9IHN0cnJjaHIobV9maWxlbmFtZSwgJy8nKTsKIApAQCAtNDU1LDcgKzQ1Nywy
NCBAQCB2b2lkIENvbmZpZ0ZpbGU6OmNhbm9uaWNhbGl6ZVBhdGhzKCkKICAgICAgICAgbV9jb25m
aWdEaXJlY3RvcnlbMF0gPSAnLyc7CiAgICAgICAgIG1fY29uZmlnRGlyZWN0b3J5WzFdID0gJ1ww
JzsKICAgICB9Ci0jZW5kaWYKK30KKwordm9pZCBwcm9jZXNzQ29uZmlnRmlsZShjb25zdCBjaGFy
KiBjb25maWdGaWxlbmFtZSwgY29uc3QgY2hhciogcHJvY2Vzc05hbWUsIGNvbnN0IGNoYXIqIHBh
cmVudFByb2Nlc3NOYW1lKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBwcm9jZXNzQ29u
ZmlnRmlsZU9uY2VGbGFnOworICAgIAorICAgIGlmICghY29uZmlnRmlsZW5hbWUgfHwgIXN0cmxl
bihjb25maWdGaWxlbmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6Y2FsbF9vbmNl
KHByb2Nlc3NDb25maWdGaWxlT25jZUZsYWcsIFsmXXsKKyAgICAgICAgaWYgKGNvbmZpZ0ZpbGVu
YW1lKSB7CisgICAgICAgICAgICBDb25maWdGaWxlIGNvbmZpZ0ZpbGUoY29uZmlnRmlsZW5hbWUp
OworICAgICAgICAgICAgY29uZmlnRmlsZS5zZXRQcm9jZXNzTmFtZShwcm9jZXNzTmFtZSk7Cisg
ICAgICAgICAgICBpZiAocGFyZW50UHJvY2Vzc05hbWUpCisgICAgICAgICAgICAgICAgY29uZmln
RmlsZS5zZXRQYXJlbnRQcm9jZXNzTmFtZShwYXJlbnRQcm9jZXNzTmFtZSk7CisgICAgICAgICAg
ICBjb25maWdGaWxlLnBhcnNlKCk7CisgICAgICAgIH0KKyAgICB9KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmls
ZS5oCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25maWdGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDQgKzUzLDYgQEAgcHJpdmF0ZToKICAg
ICBjaGFyIG1fY29uZmlnRGlyZWN0b3J5W3NfbWF4UGF0aExlbmd0aCArIDFdOwogfTsKIAorSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9jZXNzQ29uZmlnRmlsZShjb25zdCBjaGFyKiBjb25maWdG
aWxlLCBjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSwgY29uc3QgY2hhciogcGFyZW50UHJvY2Vzc05h
bWUgPSBudWxscHRyKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gV2ViUHJvY2VzcyB0byBlbmFibGUg
SmF2YVNjcmlwdENvcmUgY29uZmlndXJhdGlvbiBhbmQgbG9nZ2luZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Mzg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgQWRkZWQgYSBmb3J3YXJkaW5nIGhlYWRlciBm
aWxlIGZvciBKYXZTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5oLgorCisgICAgICAgICog
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9Db25maWdGaWxlLmg6IEFkZGVkLgorCiAyMDE3LTAz
LTA4ICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAogICAgICAgICBMZXQgY2xpZW50
cyBjb250cm9sIGF1dG9wbGF5IHF1aXJrcyB3aXRoIHdlYnNpdGUgcG9saWNpZXMuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0NvbmZpZ0ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0NvbmZp
Z0ZpbGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0NvbmZpZ0ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfQ29uZmlnRmlsZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0NvbmZp
Z0ZpbGVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbmZpZ0ZpbGUuaD4KKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjU4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTctMDMtMDkgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHRvIFdl
YlByb2Nlc3MgdG8gZW5hYmxlIEphdmFTY3JpcHRDb3JlIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2dp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTM4
NworCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIEFkZGVkIGEg
cGF0aCBhbmQgc2FuZGJveCBleHRlbnNpb24gZm9yIEphdmFTY3JpcHQgY29uZmlndXJhdGlvbiBk
aXJlY3RvcnkuCisgICAgICAgIFRoZXNlIGFyZSBzZW50IHRvIHRoZSBXZWIgcHJvY2VzcyBvbiBz
dGFydHVwIGFsb25nIHdpdGggb3RoZXIgcGFyYW1ldGVycy4KKyAgICAgICAgV2hlbiBKYXZhU2Ny
aXB0IGNvbmZpZ3VyYXRpb24gZmlsZSBwcm9jZXNzaW5nIGlzIGVuYWJsZWQsIHRoZSBXZWJQcm9j
ZXNzCisgICAgICAgIHdpbGwgbG9vayBmb3IgdGhlIGZpbGUgV2ViQ29udGVudC5jb25maWcgaW4g
dGhhdCBkaXJlY3RvcnkgYW5kIGNvbmZpZ3VyZQorICAgICAgICBKYXZhU2NyaXB0Q29yZSB3aXRo
IGl0cyBjb250ZW50cy4KKworICAgICAgICBUaGUgZGlyZWN0b3J5IGxvY2F0aW9uIGlzIGZvciBN
YWMgaXMgfi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29uZmlnIGFuZAorICAgICAgICB0aGUg
bG9jYXRpb24gb24gaU9TIGlzIDxwcm9jZXNzLWNvbnRhaW5lci1wYXRoPi9MaWJyYXJ5L1dlYktp
dC9KYXZhU2NyaXB0Q29uZmlnLgorICAgICAgICBKYXZhU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmls
ZSBwcm9jZXNzaW5nIGlzIGNvbnRyb2xsZWQgdmlhIGEgYm9vbGVhbiBrZXB0IGluCisgICAgICAg
IHRoZSBXZWJQcm9jZXNzIHBvb2wuICBGb3IgRGVidWcgYnVpbGRzLCBjb25maWcgZmlsZSBwcm9j
ZXNzaW5nIGlzIGVuYWJsZWQuCisgICAgICAgIEZvciBSZWxlYXNlIGJ1aWxkcyBpdCBpcyBkaXNh
YmxlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0
aW9ucyk6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCk6CisgICAgICAg
IChXS0NvbnRleHRTZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVk
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlZEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisKIDIwMTctMDMtMDggIE1hdHQgUmFqY2EgIDxtcmFqY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIExldCBjbGllbnRzIGNvbnRyb2wgYXV0b3BsYXkgcXVpcmtzIHdpdGggd2Vic2l0ZSBw
b2xpY2llcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kCiAgICAgZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8
PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgamF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBqYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNpZiBQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCiAgICAgZW5jb2Rl
ciA8PCB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcjsKICNlbmRpZgpAQCAtMTY0LDYg
KzE2NiwxMCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVk
aWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDYgKzc1LDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CisgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBWZWN0b3I8dWludDhfdD4gdWlQcm9jZXNzQ29v
a2llU3RvcmFnZUlkZW50aWZpZXI7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjEzNjU4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDYgKzE0Miw3IEBAIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGwKICAg
ICBjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3Rvcnkg
PSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZGlza0NhY2hlRGlyZWN0b3J5KCk7CisgICAgY29u
ZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCiAgICAg
Ly8gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsZWdhY3kgV0syIGNsaWVudHMsIHdoaWNoIGRp
ZCBub3QgaGF2ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MuCiAgICAgY29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwpAQCAtNTk4LDYgKzU5OSwx
MiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgaWYgKCFw
YXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRl
cnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUs
IHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAor
ICAgIGlmIChqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKCkpIHsKKyAgICAgICAg
cGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHdlYnNpdGVEYXRh
U3RvcmUgPyB3ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZlZEphdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5KCkgOiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuamF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CisgICAgfQorCiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKIAogICAgIHBhcmFtZXRl
cnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKQEAgLTEzNjIsNiArMTM2OSwxMSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRJbml0aWFsQ29ubmVjdGVkCiAKICNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25GaWxlRW5hYmxlZChib29sIGZsYWcpCit7CisgICAgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkZpbGVFbmFibGVkID0gZmxhZzsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2FyYmFnZUNv
bGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiB7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpHYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCkpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDIx
MzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsNiArMjc2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRTdGF0
aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6
RGljdGlvbmFyeSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CiAgICAgCisgICAgYm9vbCBqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKCkgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkZpbGVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkZpbGVFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdEphdmFT
Y3JpcHRPYmplY3RzKCk7CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0R2FyYmFnZUNvbGxlY3RvclRp
bWVyRW5hYmxlZChib29sIGZsYWcpOwogCkBAIC0zNzIsNiArMzc0LDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgp
OwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBib29s
IGlzTmV0d29ya0NhY2hlRW5hYmxlZCgpOwogCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpIHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7IH0K
QEAgLTU1Miw3ICs1NTUsMTQgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURp
c2FibGVkOwogICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNl
IH07Ci0KKyAgICBib29sIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCB7Cisj
aWZuZGVmIE5ERUJVRworICAgICAgICAvLyBFbmFibGUgSmF2YVNjcmlwdCBjb25maWd1cmF0aW9u
IGZpbGUgcHJvY2Vzc2luZyBieSBkZWZhdWx0IGZvciBEZWJ1ZyBidWlsZHMuCisgICAgICAgIHRy
dWUKKyNlbHNlCisgICAgICAgIGZhbHNlCisjZW5kaWYKKyAgICB9OwogICAgIGJvb2wgbV9hbHdh
eXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHk7CiAKICAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3Vu
dGVyIG1fdXNlck9ic2VydmFibGVQYWdlQ291bnRlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5jcHAJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiAr
NTIsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgY29u
ZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBj
b25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gY29uZmlndXJh
dGlvbjsKIH0KQEAgLTgxLDYgKzgyLDcgQEAgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9j
ZXNzUG9vbENvbgogICAgICwgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKQogICAgICwgbV93ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKSkKICAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpKQorICAgICwgbV9qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgiIikKIHsKIH0KIApAQCAtMTA1LDYgKzEwNyw3IEBAIFJl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBjb3B5LT5tX2luamVj
dGVkQnVuZGxlUGF0aCA9IHRoaXMtPm1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIGNvcHktPm1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIGNv
cHktPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dlYlNRTERhdGFiYXNlRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSB0aGlzLT5t
X2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDYgKzg3LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KIAorICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNl
dEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkgeyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5ID0gamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7IH0KKwogICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkgeyBy
ZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZvaWQgc2V0Q2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC0xMzQsNiArMTM3LDcgQEAgcHJpdmF0
ZToKICAgICBXVEY6OlN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdURjo6
U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJpbmcgbV9qYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5
c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBib29sIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJ
c0FsbG93ZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAyLDYgKzUwMiwxNiBAQCB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhX
CiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5nZXRTdGF0aXN0aWNzKG9wdGlvbnNNYXNrLCB0b0dl
bmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9CiAKK2Jvb2wgV0tD
b250ZXh0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNvbnRleHRSZWYpLT5qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkZpbGVFbmFibGVkKCk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0SmF2YVNjcmlw
dENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBl
bmFibGUpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5zZXRKYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkZpbGVFbmFibGVkKGVuYWJsZSk7Cit9CisKIHZvaWQgV0tDb250ZXh0R2FyYmFnZUNvbGxl
Y3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAgICB0b0lt
cGwoY29udGV4dFJlZiktPmdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgJKHJldmlzaW9uIDIx
MzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw4IEBAIHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dEdl
dFN0YXRpc3RpY3NGdW4KIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3MoV0tD
b250ZXh0UmVmIGNvbnRleHQsIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tDb250ZXh0R2V0U3Rh
dGlzdGljc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdldFN0
YXRpc3RpY3NXaXRoT3B0aW9ucyhXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdGF0aXN0aWNzT3B0
aW9ucyBzdGF0aXN0aWNzTWFzaywgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRleHRHZXRT
dGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwogCitXS19FWFBPUlQgYm9vbCBXS0NvbnRleHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKFdLQ29udGV4dFJlZiBjb250ZXh0KTsK
K1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVu
YWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgZW5hYmxlKTsKIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHMoV0tDb250ZXh0UmVmIGNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xs
ZWN0b3JUaW1lckVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgZW5hYmxlKTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzIs
NiArNDcyLDI0IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWYKICAg
ICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbY2FjaGVQYXRoIHN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKIH0KIAorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdh
Y3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIFN0cmluZyBwYXRoID0gcGF0aEZvclByb2Nlc3NDb250YWlu
ZXIoKTsKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHBhdGggPSBOU0hvbWVEaXJl
Y3RvcnkoKTsKKyAgICAKKyAgICBwYXRoID0gcGF0aCArICIvTGlicmFyeS9XZWJLaXQvSmF2YVNj
cmlwdENvcmVEZWJ1ZyI7CisgICAgcGF0aCA9IHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBh
dGgocGF0aCk7CisKKyAgICByZXR1cm4gcGF0aDsKKyNlbHNlCisgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBqYXZhU2NyaXB0Q29uZmlnUGF0aCA9IEAifi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0
Q29yZURlYnVnIjsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0lu
UGF0aChbamF2YVNjcmlwdENvbmZpZ1BhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwor
I2VuZGlmCit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzTmV0d29ya0NhY2hlRW5hYmxlZCgp
CiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShy
ZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsOSBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3RvcmllCiAgICAgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3Jp
dGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5KTsKICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hF
eHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpOwogICAg
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2
ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1
cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsKKworICAgIGlmICghbV9jb25maWd1cmF0
aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnkg
PSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpj
bG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291cmNlUGFnZSwgV2ViUGFnZVByb3h5JiBu
ZXdQYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7
CiAgICAgICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OworICAgICAg
ICBTdHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgfTsKICAgICBz
dGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICBz
dGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShDb25maWd1cmF0aW9uKTsKQEAgLTk4
LDYgKzk5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFD
YWNoZURpcmVjdG9yeTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZERhdGFiYXNlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ud2ViU1FMRGF0
YWJhc2VEaXJlY3Rvcnk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkSmF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsgfQogCiAgICAgU3RvcmFnZU1h
bmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5nZXQoKTsg
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjEzNjU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbXBvcnQgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCisjaW1wb3J0IDxydW50aW1l
L0NvbmZpZ0ZpbGUuaD4KICNpbXBvcnQgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbXBvcnQgIlNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIlNlY0l0ZW1TaGltLmgi
CkBAIC0xMDIsNiArMTAzLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcgogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJz
LmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hF
eHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseShwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuamF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5
KHBhcmFtZXRlcnMuYXVkaW9DYXB0dXJlRXh0ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgpAQCAtMTEy
LDYgKzExNCwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAj
ZW5kaWYKICNlbmRpZgogCisgICAgaWYgKCFwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZp
Z0ZpbGUgPSBwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ICsgIi9K
U0MuY29uZmlnIjsKKyAgICAgICAgSlNDOjpwcm9jZXNzQ29uZmlnRmlsZShqYXZhU2NyaXB0Q29u
ZmlnRmlsZS5sYXRpbjEoKS5kYXRhKCksICJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiLCBw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIubGF0aW4xKCkuZGF0YSgpKTsKKyAg
ICB9CisKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMTAwCiAgICAgc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UocGFyYW1ldGVycy51
aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRpZmllcik7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304000</attachid>
            <date>2017-03-09 15:22:57 -0800</date>
            <delta_ts>2017-03-09 15:22:57 -0800</delta_ts>
            <desc>Patch for landing - Speculative gtk build fix</desc>
            <filename>169387-landing2.patch</filename>
            <type>text/plain</type>
            <size>26797</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE3LTAzLTA5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBwbHVtYmluZyB0byBXZWJQcm9jZXNzIHRvIGVuYWJsZSBKYXZhU2NyaXB0Q29yZSBj
b25maWd1cmF0aW9uIGFuZCBsb2dnaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjkzODcKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXps
by4KKworICAgICAgICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiwgcHJvY2Vzc0NvbmZpZ0ZpbGUo
KSwgdG8gcHJvY2VzcyBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgIENoYW5nZWQganNjLmNw
cCB0byB1c2UgdGhhdCBmdW5jdGlvbiBpbiBsaWV1IG9mIHByb2Nlc3NpbmcgdGhlIGNvbmZpZyBm
aWxlCisgICAgICAgIG1hbnVhbGx5LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogTWFkZSBDb25maWdGaWxlLmggYSBwcml2YXRlIGhlYWRlciBm
aWxlLgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChqc2NtYWluKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbmZpZ0ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpwcm9jZXNzQ29uZmlnRmlsZSk6
CisgICAgICAgICogcnVudGltZS9Db25maWdGaWxlLmg6CisKIDIwMTctMDMtMDkgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBjb25zdCBBYnN0cmFjdExvY2tl
ciYgKGluc3RlYWQgb2YgY29uc3QgTG9ja0hvbGRlciYpIGluIG1vcmUgcGxhY2VzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzg0LDExICszNzg0LDcgQEAgaW50IGpz
Y21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIC8vIGNvbWVzIGZpcnN0LgogICAgIENv
bW1hbmRMaW5lIG9wdGlvbnMoYXJnYywgYXJndik7CiAKLSAgICBpZiAoT3B0aW9uczo6Y29uZmln
RmlsZSgpKSB7Ci0gICAgICAgIENvbmZpZ0ZpbGUgY29uZmlnRmlsZShPcHRpb25zOjpjb25maWdG
aWxlKCkpOwotICAgICAgICBjb25maWdGaWxlLnNldFByb2Nlc3NOYW1lKCJqc2MiKTsKLSAgICAg
ICAgY29uZmlnRmlsZS5wYXJzZSgpOwotICAgIH0KKyAgICBwcm9jZXNzQ29uZmlnRmlsZShPcHRp
b25zOjpjb25maWdGaWxlKCksICJqc2MiKTsKIAogICAgIC8vIEluaXRpYWxpemUgSlNDIGJlZm9y
ZSBnZXR0aW5nIFZNLgogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTM5MCw3ICsxMzkwLDcgQEAKIAkJNjU1RUIyOUIxMENFMjU4MTAwMUE5
OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTVFQjI5QTEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNw
cCAqLzsgfTsKIAkJNjU3Q0Y0NTgxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0NGNDU2MTlCRjY2
NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi87IH07CiAJCTY1N0NGNDU5MTlCRjY2NjIwMDRB
Q0JGMiAvKiBKU0NhbGxlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjU3Q0Y0NTcxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjU4ODI0QUYxRTVDRkRC
MDAwRkI3MzU5IC8qIENvbmZpZ0ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1ODgyNEFFMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmgg
Ki87IH07CisJCTY1ODgyNEFGMUU1Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTg4MjRBRTFFNUNGREIw
MDBGQjczNTkgLyogQ29uZmlnRmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTY1ODgyNEIxMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdGaWxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODgy
NEIwMUU1Q0ZERjQwMEZCNzM1OSAvKiBDb25maWdGaWxlLmNwcCAqLzsgfTsKIAkJNjU4RDNBNTYx
OTYzODI2ODAwM0M0NUQ2IC8qIFZNRW50cnlSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OEQzQTU1MTk2MzgyNjgwMDNDNDVENiAvKiBWTUVu
dHJ5UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNjVCODM5MkUxQkFDQUQzNjAwNDRFODI0IC8qIENhY2hlZFJlY292ZXJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUI4MzkyQzFCQUNBOTJB
MDA0NEU4MjQgLyogQ2FjaGVkUmVjb3ZlcnkuaCAqLzsgfTsKQEAgLTc5NzUsNiArNzk3NSw3IEBA
CiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTM4MUI5NDAxRTY1REZFQjAwOTBGNzk0IC8qIEpTV2ViQXNz
ZW1ibHlDb2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTc0MUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJDQ2FsbFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTY1ODgyNEFGMUU1
Q0ZEQjAwMEZCNzM1OSAvKiBDb25maWdGaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODU3
NjFCREFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMEYx
QTMxQzQyMEJGMDAwMUMwN0QyIC8qIEFpckN1c3RvbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREM0
NTRCOEQxRDAwRTgyNDAwNEMxOEFGIC8qIEFpckR1bXBBc0pTLmggaW4gSGVhZGVycyAqLywKQEAg
LTgzOTMsNyArODM5NCw2IEBACiAJCQkJQTdEODlDRkUxN0EwQjhDQzAwNzczQUQ4IC8qIERGR09T
UkF2YWlsYWJpbGl0eUFuYWx5c2lzUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDgyRTU3
MTQxREFGMTAwMDE3OUM5NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZE
OEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk2NTg4MjRBRjFFNUNGREIwMDBGQjczNTkgLyogQ29uZmlnRmls
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVB
NURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5jcHAJKHJldmlzaW9u
IDIxMzY1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbmZpZ0ZpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJPcHRpb25zLmgi
CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3RkaW8u
aD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgpAQCAt
NDQ0LDYgKzQ0NSw3IEBAIHZvaWQgQ29uZmlnRmlsZTo6Y2Fub25pY2FsaXplUGF0aHMoKQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorI2VuZGlmCiAKICAgICBjaGFyKiBsYXN0UGF0
aFNlcGVyYXRvciA9IHN0cnJjaHIobV9maWxlbmFtZSwgJy8nKTsKIApAQCAtNDU1LDcgKzQ1Nywy
NCBAQCB2b2lkIENvbmZpZ0ZpbGU6OmNhbm9uaWNhbGl6ZVBhdGhzKCkKICAgICAgICAgbV9jb25m
aWdEaXJlY3RvcnlbMF0gPSAnLyc7CiAgICAgICAgIG1fY29uZmlnRGlyZWN0b3J5WzFdID0gJ1ww
JzsKICAgICB9Ci0jZW5kaWYKK30KKwordm9pZCBwcm9jZXNzQ29uZmlnRmlsZShjb25zdCBjaGFy
KiBjb25maWdGaWxlbmFtZSwgY29uc3QgY2hhciogcHJvY2Vzc05hbWUsIGNvbnN0IGNoYXIqIHBh
cmVudFByb2Nlc3NOYW1lKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBwcm9jZXNzQ29u
ZmlnRmlsZU9uY2VGbGFnOworICAgIAorICAgIGlmICghY29uZmlnRmlsZW5hbWUgfHwgIXN0cmxl
bihjb25maWdGaWxlbmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6Y2FsbF9vbmNl
KHByb2Nlc3NDb25maWdGaWxlT25jZUZsYWcsIFsmXXsKKyAgICAgICAgaWYgKGNvbmZpZ0ZpbGVu
YW1lKSB7CisgICAgICAgICAgICBDb25maWdGaWxlIGNvbmZpZ0ZpbGUoY29uZmlnRmlsZW5hbWUp
OworICAgICAgICAgICAgY29uZmlnRmlsZS5zZXRQcm9jZXNzTmFtZShwcm9jZXNzTmFtZSk7Cisg
ICAgICAgICAgICBpZiAocGFyZW50UHJvY2Vzc05hbWUpCisgICAgICAgICAgICAgICAgY29uZmln
RmlsZS5zZXRQYXJlbnRQcm9jZXNzTmFtZShwYXJlbnRQcm9jZXNzTmFtZSk7CisgICAgICAgICAg
ICBjb25maWdGaWxlLnBhcnNlKCk7CisgICAgICAgIH0KKyAgICB9KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25maWdGaWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmls
ZS5oCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b25maWdGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDQgKzUzLDYgQEAgcHJpdmF0ZToKICAg
ICBjaGFyIG1fY29uZmlnRGlyZWN0b3J5W3NfbWF4UGF0aExlbmd0aCArIDFdOwogfTsKIAorSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBwcm9jZXNzQ29uZmlnRmlsZShjb25zdCBjaGFyKiBjb25maWdG
aWxlLCBjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSwgY29uc3QgY2hhciogcGFyZW50UHJvY2Vzc05h
bWUgPSBudWxscHRyKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0wOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gV2ViUHJvY2VzcyB0byBlbmFibGUg
SmF2YVNjcmlwdENvcmUgY29uZmlndXJhdGlvbiBhbmQgbG9nZ2luZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Mzg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgQWRkZWQgYSBmb3J3YXJkaW5nIGhlYWRlciBm
aWxlIGZvciBKYXZTY3JpcHRDb3JlL3J1bnRpbWUvQ29uZmlnRmlsZS5oLgorCisgICAgICAgICog
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9Db25maWdGaWxlLmg6IEFkZGVkLgorCiAyMDE3LTAz
LTA4ICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAogICAgICAgICBMZXQgY2xpZW50
cyBjb250cm9sIGF1dG9wbGF5IHF1aXJrcyB3aXRoIHdlYnNpdGUgcG9saWNpZXMuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0NvbmZpZ0ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0NvbmZp
Z0ZpbGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL0NvbmZpZ0ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfQ29uZmlnRmlsZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0NvbmZp
Z0ZpbGVfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbmZpZ0ZpbGUuaD4KKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzNjU4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMDMtMDkgIE1pY2hhZWwg
U2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHRvIFdl
YlByb2Nlc3MgdG8gZW5hYmxlIEphdmFTY3JpcHRDb3JlIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2dp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTM4
NworCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIEFkZGVkIGEg
cGF0aCBhbmQgc2FuZGJveCBleHRlbnNpb24gZm9yIEphdmFTY3JpcHQgY29uZmlndXJhdGlvbiBk
aXJlY3RvcnkuCisgICAgICAgIFRoZXNlIGFyZSBzZW50IHRvIHRoZSBXZWIgcHJvY2VzcyBvbiBz
dGFydHVwIGFsb25nIHdpdGggb3RoZXIgcGFyYW1ldGVycy4KKyAgICAgICAgV2hlbiBKYXZhU2Ny
aXB0IGNvbmZpZ3VyYXRpb24gZmlsZSBwcm9jZXNzaW5nIGlzIGVuYWJsZWQsIHRoZSBXZWJQcm9j
ZXNzCisgICAgICAgIHdpbGwgbG9vayBmb3IgdGhlIGZpbGUgV2ViQ29udGVudC5jb25maWcgaW4g
dGhhdCBkaXJlY3RvcnkgYW5kIGNvbmZpZ3VyZQorICAgICAgICBKYXZhU2NyaXB0Q29yZSB3aXRo
IGl0cyBjb250ZW50cy4KKworICAgICAgICBUaGUgZGlyZWN0b3J5IGxvY2F0aW9uIGlzIGZvciBN
YWMgaXMgfi9MaWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29uZmlnIGFuZAorICAgICAgICB0aGUg
bG9jYXRpb24gb24gaU9TIGlzIDxwcm9jZXNzLWNvbnRhaW5lci1wYXRoPi9MaWJyYXJ5L1dlYktp
dC9KYXZhU2NyaXB0Q29uZmlnLgorICAgICAgICBKYXZhU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmls
ZSBwcm9jZXNzaW5nIGlzIGNvbnRyb2xsZWQgdmlhIGEgYm9vbGVhbiBrZXB0IGluCisgICAgICAg
IHRoZSBXZWJQcm9jZXNzIHBvb2wuICBGb3IgRGVidWcgYnVpbGRzLCBjb25maWcgZmlsZSBwcm9j
ZXNzaW5nIGlzIGVuYWJsZWQuCisgICAgICAgIEZvciBSZWxlYXNlIGJ1aWxkcyBpdCBpcyBkaXNh
YmxlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAg
ICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5T3B0
aW9ucyk6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKToKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCk6CisgICAgICAg
IChXS0NvbnRleHRTZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eSk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rv
cmllc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZl
ZEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMTctMDMtMDggIE1hdHQgUmFqY2Eg
IDxtcmFqY2FAYXBwbGUuY29tPgogCiAgICAgICAgIExldCBjbGllbnRzIGNvbnRyb2wgYXV0b3Bs
YXkgcXVpcmtzIHdpdGggd2Vic2l0ZSBwb2xpY2llcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlz
aW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsOCBAQCB2b2lkIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8PCB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOworICAgIGVuY29kZXIgPDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7Cisg
ICAgZW5jb2RlciA8PCBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMTAwCiAgICAgZW5jb2RlciA8PCB1aVByb2Nlc3NDb29raWVTdG9yYWdlSWRlbnRp
ZmllcjsKICNlbmRpZgpAQCAtMTY0LDYgKzE2NiwxMCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDExMDAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2ll
U3RvcmFnZUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDggQEAgc3RydWN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcg
bWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lmIFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDAKICAgICBWZWN0
b3I8dWludDhfdD4gdWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXI7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMjEzNjU4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDYgKzE0Miw3IEBAIHN0YXRpYyBXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uIGwKICAgICBjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rv
cnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlv
bi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZGlza0Nh
Y2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpOwogCiAgICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsZWdh
Y3kgV0syIGNsaWVudHMsIHdoaWNoIGRpZCBub3QgaGF2ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3Rp
Y3MuCiAgICAgY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0g
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSgpOwpAQCAtNTk4LDYgKzU5OSwxMiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVOCiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5k
Ym94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAorICAgIGlmIChqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZp
bGVFbmFibGVkKCkpIHsKKyAgICAgICAgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlv
bkRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUgPyB3ZWJzaXRlRGF0YVN0b3JlLT5yZXNvbHZl
ZEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgOiBTdHJpbmcoKTsKKyAgICAgICAg
aWYgKCFwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNh
bmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgfQorCiAgICAgcGFyYW1ldGVycy5z
aG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3Jr
U2Vzc2lvbjsKIAogICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWwoKTsKQEAg
LTEzNjIsNiArMTM2OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRJbml0aWFsQ29ubmVj
dGVkCiAKICNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZChib29sIGZsYWcpCit7CisgICAg
bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkID0gZmxhZzsKK30KKwogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6Z2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cygpCiB7CiAgICAg
c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHYXJiYWdlQ29sbGVjdEph
dmFTY3JpcHRPYmplY3RzKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNiArMjc2LDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBnZXRTdGF0aXN0aWNzKHVpbnQzMl90IHN0YXRpc3RpY3NNYXNrLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6RGljdGlvbmFyeSosIENhbGxiYWNrQmFzZTo6RXJyb3Ip
Pik7CiAgICAgCisgICAgYm9vbCBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKCkg
eyByZXR1cm4gbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAg
dm9pZCBnYXJiYWdlQ29sbGVjdEphdmFTY3JpcHRPYmplY3RzKCk7CiAgICAgdm9pZCBzZXRKYXZh
U2NyaXB0R2FyYmFnZUNvbGxlY3RvclRpbWVyRW5hYmxlZChib29sIGZsYWcpOwogCkBAIC0zNzIs
NiArMzc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZv
cm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcg
bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgc3RhdGlj
IFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSgpOwogICAgIHN0YXRpYyBib29sIGlzTmV0d29ya0NhY2hlRW5hYmxlZCgpOwogCiAgICAg
Ym9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIHsgcmV0dXJuIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQ7IH0KQEAgLTU1Miw3ICs1NTUsMTQgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOwogICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07Ci0KKyAgICBib29sIG1famF2YVNjcmlwdENvbmZp
Z3VyYXRpb25GaWxlRW5hYmxlZCB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAvLyBFbmFibGUg
SmF2YVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgcHJvY2Vzc2luZyBieSBkZWZhdWx0IGZvciBE
ZWJ1ZyBidWlsZHMuCisgICAgICAgIHRydWUKKyNlbHNlCisgICAgICAgIGZhbHNlCisjZW5kaWYK
KyAgICB9OwogICAgIGJvb2wgbV9hbHdheXNSdW5zQXRCYWNrZ3JvdW5kUHJpb3JpdHk7CiAKICAg
ICBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyIG1fdXNlck9ic2VydmFibGVQYWdlQ291bnRlcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uPiBQcm9jZXNzUG9vCiAgICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi0+bV9q
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7
CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KQEAgLTgxLDYgKzgyLDcgQEAgUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbgogICAgICwgbV9sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
KQogICAgICwgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSkKICAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpKQorICAgICwgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgiIikKIHsKIH0K
IApAQCAtMTA1LDYgKzEwNyw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nl
c3NQb28KICAgICBjb3B5LT5tX2luamVjdGVkQnVuZGxlUGF0aCA9IHRoaXMtPm1faW5qZWN0ZWRC
dW5kbGVQYXRoOwogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9s
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1famF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OwogICAgIGNvcHktPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB0
aGlzLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fY2FjaGVQYXJ0aXRp
b25lZFVSTFNjaGVtZXMgPSB0aGlzLT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogICAg
IGNvcHktPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9hbHdheXNSZXZh
bGlkYXRlZFVSTFNjaGVtZXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIx
MzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDkgQEAgcHVibGljOgogICAg
IGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3Rvcnk7IH0KIAorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBqYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
KGNvbnN0IFdURjo6U3RyaW5nJiBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSkgeyBt
X2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5ID0gamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3Rvcnk7IH0KKwogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFy
dGl0aW9uZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
czsgfQogICAgIHZvaWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6
U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25l
ZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBA
IC0xMzQsNiArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBtX3dlYlNRTERhdGFi
YXNlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eTsKICAgICBXVEY6OlN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7Cisg
ICAgV1RGOjpTdHJpbmcgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBW
ZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVj
dG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBib29s
IG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiwxNiBAQCB2b2lkIFdLQ29udGV4dEdl
dFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhXCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5nZXRTdGF0
aXN0aWNzKG9wdGlvbnNNYXNrLCB0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNh
bGxiYWNrKSk7CiB9CiAKK2Jvb2wgV0tDb250ZXh0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxl
RW5hYmxlZChXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGNv
bnRleHRSZWYpLT5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKCk7Cit9CisKK3Zv
aWQgV0tDb250ZXh0U2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgYm9vbCBlbmFibGUpCit7CisgICAgdG9JbXBsKGNvbnRleHRSZWYp
LT5zZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKGVuYWJsZSk7Cit9CisKIHZv
aWQgV0tDb250ZXh0R2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0cyhXS0NvbnRleHRSZWYg
Y29udGV4dFJlZikKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPmdhcmJhZ2VDb2xsZWN0SmF2
YVNjcmlwdE9iamVjdHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmgJKHJldmlzaW9uIDIxMzY1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw4IEBAIHR5
cGVkZWYgdm9pZCAoKldLQ29udGV4dEdldFN0YXRpc3RpY3NGdW4KIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dEdldFN0YXRpc3RpY3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCwgV0tDb250ZXh0R2V0U3RhdGlzdGljc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIFdLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dEdldFN0YXRpc3RpY3NXaXRoT3B0aW9ucyhXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tTdGF0aXN0aWNzT3B0aW9ucyBzdGF0aXN0aWNzTWFzaywgdm9pZCogZnVuY3Rp
b25Db250ZXh0LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwogCitX
S19FWFBPUlQgYm9vbCBXS0NvbnRleHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVk
KFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wg
ZW5hYmxlKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dEdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlw
dE9iamVjdHMoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
U2V0SmF2YVNjcmlwdEdhcmJhZ2VDb2xsZWN0b3JUaW1lckVuYWJsZWQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGJvb2wgZW5hYmxlKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDIxMzY1OCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00NzIsNiArNDcyLDI0IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWYKICAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5r
c0luUGF0aChbY2FjaGVQYXRoIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKIH0KIAorU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSgpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFN0cmluZyBwYXRo
ID0gcGF0aEZvclByb2Nlc3NDb250YWluZXIoKTsKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisg
ICAgICAgIHBhdGggPSBOU0hvbWVEaXJlY3RvcnkoKTsKKyAgICAKKyAgICBwYXRoID0gcGF0aCAr
ICIvTGlicmFyeS9XZWJLaXQvSmF2YVNjcmlwdENvcmVEZWJ1ZyI7CisgICAgcGF0aCA9IHN0cmlu
Z0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgocGF0aCk7CisKKyAgICByZXR1cm4gcGF0aDsKKyNl
bHNlCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBqYXZhU2NyaXB0Q29uZmlnUGF0aCA9IEAifi9M
aWJyYXJ5L1dlYktpdC9KYXZhU2NyaXB0Q29yZURlYnVnIjsKKyAgICAKKyAgICByZXR1cm4gc3Ry
aW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbamF2YVNjcmlwdENvbmZpZ1BhdGggc3RyaW5n
QnlTdGFuZGFyZGl6aW5nUGF0aF0pOworI2VuZGlmCit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6
OmlzTmV0d29ya0NhY2hlRW5hYmxlZCgpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExNCw2ICsxMTQsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJl
Y3RvcmllCiAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSA9
IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1f
Y29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKICAgICBtX3Jlc29sdmVkQ29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRX
cml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkpOwogICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KTsK
KworICAgIGlmICghbV9jb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSByZXNvbHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24o
bV9jb25maWd1cmF0aW9uLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KTsKIH0KIAog
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjbG9uZVNlc3Npb25EYXRhKFdlYlBhZ2VQcm94eSYgc291
cmNlUGFnZSwgV2ViUGFnZVByb3h5JiBuZXdQYWdlKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZp
c2lvbiAyMTM2NTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5OworICAgICAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25E
aXJlY3Rvcnk7CiAgICAgfTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0
ZU5vblBlcnNpc3RlbnQoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0
ZShDb25maWd1cmF0aW9uKTsKQEAgLTk4LDYgKzk5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgcmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNv
bHZlZENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVk
Q29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgY29uc3QgU3Ry
aW5nJiByZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7IH0KKyAgICBjb25zdCBTdHJp
bmcmIHJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeTsgfQogCiAgICAgU3RvcmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4g
bV9zdG9yYWdlTWFuYWdlci5nZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkocmV2aXNpb24gMjEzNjU4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsMTIgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZgogICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKIH0KIAorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCit7
CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiSmF2YVNj
cmlwdENvcmVEZWJ1ZyIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5n
ZXQoKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9y
U2FuZGJveEV4dGVuc2lvbnMoKQogewogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDIxMzY1OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJMZWdhY3lDdXN0b21Qcm90b2Nv
bE1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFw
aC5oIgorI2ltcG9ydCA8cnVudGltZS9Db25maWdGaWxlLmg+CiAjaW1wb3J0ICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW1wb3J0ICJTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgiCiAj
aW1wb3J0ICJTZWNJdGVtU2hpbS5oIgpAQCAtMTAyLDYgKzEwMyw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1l
UGVybWFuZW50bHkocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5z
aW9uSGFuZGxlKTsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFNhbmRib3hFeHRlbnNp
b246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmF1ZGlvQ2FwdHVyZUV4dGVuc2lvbkhh
bmRsZSk7CiAjZW5kaWYKQEAgLTExMiw2ICsxMTQsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcgogI2VuZGlmCiAjZW5kaWYKIAorICAgIGlmICghcGFyYW1ldGVy
cy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
U3RyaW5nIGphdmFTY3JpcHRDb25maWdGaWxlID0gcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSArICIvSlNDLmNvbmZpZyI7CisgICAgICAgIEpTQzo6cHJvY2Vzc0Nv
bmZpZ0ZpbGUoamF2YVNjcmlwdENvbmZpZ0ZpbGUubGF0aW4xKCkuZGF0YSgpLCAiY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50IiwgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVy
LmxhdGluMSgpLmRhdGEoKSk7CisgICAgfQorCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMAogICAgIHNldFNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlKHBhcmFtZXRlcnMudWlQcm9jZXNzQ29va2llU3RvcmFnZUlkZW50aWZpZXIpOwog
I2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>